diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..127d0a3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,11 @@ +## Deps +node_modules + +## Hardhat +artifacts +cache +contracts +dist +typechain +/src/typechain +rule-builder \ 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/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/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/betweenblocks.md b/docs/classes/betweenblocks.md new file mode 100644 index 0000000..c3d1191 --- /dev/null +++ b/docs/classes/betweenblocks.md @@ -0,0 +1,137 @@ + +# 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. Methods afterMinimumRaise and applyExtratime should not be used together as they are opposite of eachother and will cancel eachother out. + +Signature: + +```typescript +class BetweenBlocks +``` + +## Example + + +```typescript +//For generating a canLive StateConfig for the sale pass in the required arguments to the constructor. +const saleDuration = new SaleDuration(startBlockNumber, endBlockNumber) + +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [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, 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 + + + +### constants + +Signature: + +```typescript +constants: BigNumberish[]; +``` + + + +### endBlockNumber + +Signature: + +```typescript +readonly endBlockNumber: number; +``` + + + +### sources + +Signature: + +```typescript +sources: BytesLike[]; +``` + + + +### startBlockNumber + +Signature: + +```typescript +readonly startBlockNumber: 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): BetweenBlocks; +``` + +#### 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: + +`BetweenBlocks` + +BetweenBlocks + + + +### 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). + +- This method is designed for sale's canEndStateConfig and should 'not' be used for canStart + +Signature: + +```typescript +applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number, reserveTokenDecimals?: number): BetweenBlocks; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| 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. | +| reserveTokenDecimals | `number` | | + +Returns: + +`BetweenBlocks` + +BetweenBlocks + diff --git a/docs/classes/betweentimestamps.md b/docs/classes/betweentimestamps.md new file mode 100644 index 0000000..ff543e8 --- /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): BetweenTimestamps; +``` + +#### 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: + +`BetweenTimestamps` + +BetweenTimestamps + + + +### 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): BetweenTimestamps; +``` + +#### 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: + +`BetweenTimestamps` + +BetweenTimestamps + diff --git a/docs/classes/buildreport.md b/docs/classes/buildreport.md index 36f9c54..2c4fff2 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, 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/buyamount.md b/docs/classes/buyamount.md new file mode 100644 index 0000000..a93b654 --- /dev/null +++ b/docs/classes/buyamount.md @@ -0,0 +1,91 @@ + +# 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 BuyAmount +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [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)](./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 + + + +### 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)[]; + tierContext?: BigNumber[]; + }): BuyAmount; +``` + +#### 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)[];
    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: + +`BuyAmount` + +BuyAmount + diff --git a/docs/classes/combinetier.md b/docs/classes/combinetier.md index 4470463..d085dfe 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,24 +41,27 @@ 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)* | | [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 | 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)* | -| [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)* | +| [connect](./combinetier.md#connect-property) | `(signer: Signer) => CombineTier` | Conncect to this CombineTier 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)* | +| [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 @@ -73,7 +76,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)](./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 @@ -91,6 +94,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 @@ -135,48 +161,53 @@ 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. +Conncect to this CombineTier contract with another signer -This expose all the standard opcodes along with the specific opcodes of the CombineTier. +*Overrides [ITierV2.connect](./itierv2.md#connect-property)* Signature: ```typescript -static Opcodes: CombineTierOpcodes; +readonly connect: (signer: Signer) => CombineTier; ``` -## Property Details - - - -### connect + -Connect the current contract instance to a new ethers signer. +### packedFunctionPointers -*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 packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; ``` - + + +### storageOpcodesRange + +Returns the pointer and length for combineTier's storage opcodes -### setTier +Signature: + +```typescript +readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; +``` -It is NOT implemented in CombineTiers. Always will throw an error + -*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* +### supportsInterface -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 supportsInterface: (interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise; ``` diff --git a/docs/classes/combinetiergenerator.md b/docs/classes/combinetiergenerator.md index 52fa80d..eeed73a 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, 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) | ## Property Details - - -### argumentsLength - -Signature: - -```typescript -argumentsLength: BigNumberish; -``` - ### constants @@ -63,104 +51,96 @@ constants: BigNumberish[]; sources: BytesLike[]; ``` - - -### stackLength - -Signature: - -```typescript -stackLength: BigNumberish; -``` - ## Method Details - + -### combine(reportVar, logic, mode, 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 -combine(reportVar: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, number?: number): this; +combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, hasReportForSingleTier?: boolean, delegatedReport?: boolean, 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 | +| 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 | Returns: -`this` +`CombineTierGenerator` -this +CombineTierGenerator - + -### holdingTimeTransferTier(reportVar, numberOfBlocks) +### differenceFrom(reporter, delegatedReport) -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, delegatedReport?: boolean): 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) | +| 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: `this` -this +CombineTierGenerator - + -### satDiff(reportVar) +### isTierHeldFor(duration) -Saturating difference between 2 reports +Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract. Signature: ```typescript -satDiff(reportVar: string | StateConfig): this; +isTierHeldFor(duration: 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) | +| 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: -`this` +`CombineTierGenerator` -this +CombineTierGenerator - + -### 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 +CombineTierGenerator diff --git a/docs/classes/combinetierjs.md b/docs/classes/combinetierjs.md deleted file mode 100644 index da4da7e..0000000 --- a/docs/classes/combinetierjs.md +++ /dev/null @@ -1,64 +0,0 @@ - -# Class CombineTierJS - -- The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. - -Signature: - -```typescript -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)* | -| [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)* | - -## Static Property Details - - - -### Opcodes - -Local CombineTier Opcodes + AllstandardOps - -*Overrides [RainJS.Opcodes](./rainjs.md#Opcodes-property-static)* - -Signature: - -```typescript -static Opcodes: import("../contracts/tiers/combineTier").CombineTierOpcodes; -``` - -## Property Details - - - -### \_OPCODE\_ - -key/value pair of opcodes and their functions for all standard opcodes + EmissionsERC20 local opcodes - -*Overrides [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* - -Signature: - -```typescript -protected readonly _OPCODE_: ApplyOpFn; -``` diff --git a/docs/classes/combinetierjsvm.md b/docs/classes/combinetierjsvm.md new file mode 100644 index 0000000..1c46775 --- /dev/null +++ b/docs/classes/combinetierjsvm.md @@ -0,0 +1,66 @@ + +# Class CombineTierJSVM + +- The javascript version of CombineTierVM which inherits RainJSVM with local CombineTier opcodes. + +Signature: + +```typescript +class CombineTierJSVM extends RainJSVM +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [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 | +| [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) | [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) | [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)* | + +## 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 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 + + + +### 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..bed10da --- /dev/null +++ b/docs/classes/combinetiersimulation.md @@ -0,0 +1,97 @@ + +# 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) | [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)* | + +## 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: sStore; +``` + +## 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 5eb8e9f..0bef0fa 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 @@ -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 @@ -44,23 +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. | -| [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)* | +| [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. | +| [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, 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)* | +| [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)* | +| [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 @@ -75,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, 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)](./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 @@ -119,20 +120,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 @@ -165,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: @@ -213,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: @@ -227,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: @@ -239,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 +240,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. @@ -275,20 +262,28 @@ Returns the name of the token. readonly name: (overrides?: ReadTxOverrides) => Promise; ``` - + + +### packedFunctionPointers -### setTier +Pointers to opcode functions, necessary for being able to read the packedBytes + +Signature: + +```typescript +readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; +``` -It is NOT implemented in Emissions. Always will throw an error + -*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* +### 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; ``` @@ -319,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: @@ -335,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 cd34479..0000000 --- a/docs/classes/emissionserc20js.md +++ /dev/null @@ -1,64 +0,0 @@ - -# Class EmissionsERC20JS - -- The javascript version of EmissionsERC20JS which inherits RainJS with local EmissionsERC20JS opcodes. - -Signature: - -```typescript -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)* | -| [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)* | - -## Static Property Details - - - -### Opcodes - -Local EmissionsERC20 Opcodes + AllstandardOps - -*Overrides [RainJS.Opcodes](./rainjs.md#Opcodes-property-static)* - -Signature: - -```typescript -static Opcodes: import("../contracts/emissionsERC20").EmissionsERC20Opcodes; -``` - -## Property Details - - - -### \_OPCODE\_ - -key/value pair of opcodes and their functions for all standard opcodes + EmissionsERC20 local opcodes - -*Overrides [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* - -Signature: - -```typescript -protected readonly _OPCODE_: ApplyOpFn; -``` diff --git a/docs/classes/emissionserc20jsvm.md b/docs/classes/emissionserc20jsvm.md new file mode 100644 index 0000000..731d656 --- /dev/null +++ b/docs/classes/emissionserc20jsvm.md @@ -0,0 +1,66 @@ + +# Class EmissionsERC20JSVM + +- The javascript version of EmissionsERC20JSVM which inherits RainJSVM with local EmissionsERC20JSVM opcodes. + +Signature: + +```typescript +class EmissionsERC20JSVM extends RainJSVM +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [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 | +| [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) | [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) | [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)* | + +## 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 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 + + + +### 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..e1fd8bd --- /dev/null +++ b/docs/classes/emissionsmiulation.md @@ -0,0 +1,177 @@ + +# 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) | [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)* | +| [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)* | +| [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: sStore; +``` + + + +### 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: sStore; +``` + + + +### 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..6b720e7 --- /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, 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 + + + +### 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 da4a317..61be611 100644 --- a/docs/classes/erc20balancetier.md +++ b/docs/classes/erc20balancetier.md @@ -1,216 +1,61 @@ # 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 ERC20BalanceTier 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 ``` -## 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)* | - -## 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; -``` +| [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` | | ## 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)* +### constants Signature: ```typescript -readonly connect: (signer: Signer) => ERC20BalanceTier; +constants: BigNumberish[]; ``` - - -### 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. +### sources Signature: ```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides | undefined) => Promise; +sources: BytesLike[]; ``` ### 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 - -ERC20 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/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/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 4d0c6d2..9d40dde 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, 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 - - -### 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..bfd81c8 100644 --- a/docs/classes/fixedprice.md +++ b/docs/classes/fixedprice.md @@ -18,37 +18,17 @@ 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 | | --- | --- | --- | -| [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 | 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)* | -| [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 - - +| [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/formatter.md b/docs/classes/formatter.md new file mode 100644 index 0000000..308fd72 --- /dev/null +++ b/docs/classes/formatter.md @@ -0,0 +1,98 @@ + +# Class Formatter + +The generator of human friendly readable source. + +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 + +Signature: + +```typescript +class Formatter +``` + +## Static Methods + +| Method | Description | +| --- | --- | +| [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 + + + +### get(\_state, \_config) + +Obtain the friendly output from an StateConfig/script. + +Signature: + +```typescript +static get(_state: StateConfig, _config?: Config): string; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| \_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: + +`string` + + + + +### prettify(\_text, \_config) + +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 + +Signature: + +```typescript +static prettify(_text: string, _config?: PrettifyConfig): string; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| \_text | `string` | The output from the HumanFriendlySource | +| \_config | [PrettifyConfig](../types/prettifyconfig.md) | The configuration of the prettify method (experimental) | + +Returns: + +`string` + +A prettified output + + + +### set(opmeta\_) + +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): Formatter; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| opmeta\_ | `typeof OpMeta` | The OpMeta map object | + +Returns: + +`Formatter` + 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/incdecprice.md b/docs/classes/incdecprice.md new file mode 100644 index 0000000..a0f2921 --- /dev/null +++ b/docs/classes/incdecprice.md @@ -0,0 +1,53 @@ + +# Class IncDecPrice + +- 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 IncDecPrice extends PriceCurve +``` + +## Example + + +```typescript +//For generating a Increasing/Decreasing Price sale type pass in the required arguments to the constructor. +const saleType = new IncreasingPrice(startPrice, endPrice, startTimestamp, endTimestamp) + +``` + +## Static Properties + +| Property | Type | Description | +| --- | --- | --- | +| [INC\_DEC\_PRICE\_SOURCES](./incdecprice.md#INC_DEC_PRICE_SOURCES-property-static) | `(isInc: boolean) => Uint8Array` | | + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [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)* | + +## Methods + +| 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, 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\_DEC\_PRICE\_SOURCES + +Signature: + +```typescript +static INC_DEC_PRICE_SOURCES: (isInc: boolean) => Uint8Array; +``` diff --git a/docs/classes/increasingprice.md b/docs/classes/increasingprice.md deleted file mode 100644 index 5e8bb43..0000000 --- a/docs/classes/increasingprice.md +++ /dev/null @@ -1,56 +0,0 @@ - -# Class IncreasingPrice - -- A sub-class of PriceCurve for creating an linear Increasing sale type. - -- Price starts at 'startPrice' and goes to 'endPrice' over the span of the sale's duration. - -Signature: - -```typescript -class IncreasingPrice extends PriceCurve -``` - -## Example - - -```typescript -//For generating a Increasing Price sale type pass in the required arguments to the constructor. -const saleType = new IncreasingPrice(startPrice, endPrice, startTimestamp, endTimestamp) - -``` - -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [INC\_PRICE\_SOURCES](./increasingprice.md#INC_PRICE_SOURCES-property-static) | `() => Uint8Array` | | - -## Properties - -| 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 - -| 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)* | -| [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 - - - -### INC\_PRICE\_SOURCES - -Signature: - -```typescript -static INC_PRICE_SOURCES: () => Uint8Array; -``` diff --git a/docs/classes/itier.md b/docs/classes/itier.md deleted file mode 100644 index 69d4e11..0000000 --- a/docs/classes/itier.md +++ /dev/null @@ -1,67 +0,0 @@ - -# Class ITier - -Class to interact with ITier contracts - -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. - -Signature: - -```typescript -class ITier extends TierContract -``` - -## 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](./itier.md#connect-property) | `(signer: Signer) => ITier` | 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)* | -| [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, 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)* | - -## Property Details - - - -### connect - -Connect the current contract instance to a new ethers signer. - -*Overrides [RainContract.connect](./raincontract.md#connect-property)* - -Signature: - -```typescript -readonly connect: (signer: Signer) => ITier; -``` diff --git a/docs/classes/tiercontract.md b/docs/classes/itierv2.md similarity index 53% rename from docs/classes/tiercontract.md rename to docs/classes/itierv2.md index e1d1444..f14b211 100644 --- a/docs/classes/tiercontract.md +++ b/docs/classes/itierv2.md @@ -1,12 +1,28 @@ -# Class TierContract +# Class ITierV2 -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 + +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. Signature: ```typescript -abstract class TierContract extends FactoryContract +class ITierV2 extends FactoryContract +``` + +## 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); + ``` ## Static Properties @@ -23,10 +39,10 @@ abstract class TierContract extends FactoryContract | 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, 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. | +| [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 @@ -42,10 +58,24 @@ 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)](./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 + + +### connect + +Conncect to this ITierV2 contract with another signer + +*Overrides [RainContract.connect](./raincontract.md#connect-property)* + +Signature: + +```typescript +readonly connect: (signer: Signer) => ITierV2; +``` + ### levels @@ -64,40 +94,40 @@ readonly levels: typeof Tier; 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. +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, overrides?: ReadTxOverrides) => Promise; +readonly report: (account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise; ``` - + -### setTier +### reportTimeForTier -Updates the tier of an account. +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. -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. +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 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 +135,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/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/matchmaker.md b/docs/classes/matchmaker.md new file mode 100644 index 0000000..24a299a --- /dev/null +++ b/docs/classes/matchmaker.md @@ -0,0 +1,164 @@ + +# 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) | [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)* | +| [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) | [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 + +| 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, 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(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)* | +| [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; + }[]; +``` + + + +### reservebook + +The ReserveBook property of the matchmaker + +Signature: + +```typescript +reservebook: ReserveBook; +``` + +## 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: sOrder): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| order | [sOrder](../interfaces/sorder.md) | the order to be added | + +Returns: + +`Promise` + +void + + + +### makeMatch(bounty) + +The main method to perform matchmaking and find matches among orders + +Signature: + +```typescript +makeMatch(bounty: { + aBounty: string; + bBounty: string; + }): Promise<{ + orderA: string; + orderB: string; + }[]>; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| bounty |
{
    aBounty: string;
    bBounty: string;
}
| the Bounty Vault IDs | + +Returns: + +`Promise<{ + orderA: string; + orderB: string; + }[]>` + + + +### orderEval(order, timestamp, blockNumber) + +Method to evaluate and ReserveBook the order's script + +Signature: + +```typescript +orderEval(order: sOrder, timestamp?: number, blockNumber?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| order | [sOrder](../interfaces/sorder.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 new file mode 100644 index 0000000..d047bfa --- /dev/null +++ b/docs/classes/orderbook.md @@ -0,0 +1,219 @@ + +# Class OrderBook + +A class for calling method on a Rain OrderBook contract. + +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 = await Orderbook.get(signer); +or +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 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)* | +| [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` | 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, 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' | +| [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 | +| [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 + +| 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 of the Orderbook Contract in this chain and connect to it. + +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 local OrderBook opcodes. + +Signature: + +```typescript +static Opcodes: OrderBookOpcodes; +``` + +## Property Details + + + +### addOrder + +Adds an order config for signer (as the owner) into the Orderbook + +Signature: + +```typescript +readonly addOrder: (orderConfig_: OrderConfig, overrides?: TxOverrides) => Promise; +``` + + + +### 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 +readonly clear: (a_: Order, b_: Order, clearConfig_: ClearConfig, overrides?: TxOverrides) => Promise; +``` + + + +### connect + +Connect to this Orderbook instance with a new signer + +*Overrides [RainContract.connect](./raincontract.md#connect-property)* + +Signature: + +```typescript +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 +readonly deposit: (config_: DepositConfig, overrides?: TxOverrides) => Promise; +``` + + + +### packedFunctionPointers + +Pointers to opcode functions, necessary for being able to read the packedBytes + +Signature: + +```typescript +readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### removeOrder + +Removes an order from the Orderbook completely. + +Signature: + +```typescript +readonly removeOrder: (order_: Order, overrides?: TxOverrides) => Promise; +``` + + + +### storageOpcodesRange + +Returns the pointer and length for sale's storage opcodes + +Signature: + +```typescript +readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### withdraw + +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' + +Signature: + +```typescript +readonly withdraw: (config_: WithdrawConfig, overrides?: TxOverrides) => Promise; +``` diff --git a/docs/classes/orderbooksimulation.md b/docs/classes/orderbooksimulation.md new file mode 100644 index 0000000..e8865df --- /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) | [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) | [sVaults](../interfaces/svaults.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, 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)* | +| [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: sClearedCounterPartyFunds; +``` + + + +### clearedFunds + +The property that stores all the data of an order's total cleared amount, + +Signature: + +```typescript +clearedFunds: sClearedFunds; +``` + + + +### 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: FnPtrsJSVM; +``` + + + +### orders + +The property that stores all the data of the class's orders, + +Signature: + +```typescript +orders: sOrders; +``` + + + +### 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: sVaults; +``` + +## Method Details + + + +### addOrder(order) + +Method to submit an order into the class orders + +Signature: + +```typescript +addOrder(order: sOrder): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| order | [sOrder](../interfaces/sorder.md) | the order to add | + +Returns: + +`void` + +void + + + +### 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: 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 | +| 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: sOrder | string): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| order | `sOrder \| 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/parser.md b/docs/classes/parser.md new file mode 100644 index 0000000..5e31cee --- /dev/null +++ b/docs/classes/parser.md @@ -0,0 +1,285 @@ + +# 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 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 +[ parseTree, stateConfig ] = Parser.get(textScript, customOpMeta, customMultiOutputPlaceholderChar); + +// to get parse tree object only +let parseTree = Parser.getParseTree(textScript, customOpMeta, customMultiOutputPlaceholderChar); + +// 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 + +| Property | Type | Description | +| --- | --- | --- | +| [constants](./parser.md#constants-property-static) | `BigNumberish[]` | | +| [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 | +| --- | --- | +| [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 | +| [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 + + + +### constants + +Signature: + +```typescript +static constants: BigNumberish[]; +``` + + + +### parseTree + +Signature: + +```typescript +static parseTree: ParseTree; +``` + + + +### resolveMultiOutput + +Method to resolve multi output nodes at current state of parsing + +Signature: + +```typescript +static resolveMultiOutput: (totalCount: number, depthLevel: number) => void; +``` + + + +### sources + +Signature: + +```typescript +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 | Record, offset?: number): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| 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: + +`StateConfig` + +StateConfig + + + +### get(expression, opmeta, multiOutputPlaceholderChar) + +Method to get parse tree object and StateConfig + +Signature: + +```typescript +static get(expression: string, opmeta?: typeof OpMeta, multiOutputPlaceholderChar?: string): [ParseTree, StateConfig]; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| expression | `string` | the text expression | +| opmeta | `typeof OpMeta` | (optional) custom opmeta | +| multiOutputPlaceholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | + +Returns: + +`[ParseTree, StateConfig]` + +Array of parse tree object and StateConfig + + + +### getParseTree(expression, opmeta, multiOutputPlaceholderChar) + +Method to get the parse tree object + +Signature: + +```typescript +static getParseTree(expression: string, opmeta?: typeof OpMeta, multiOutputPlaceholderChar?: string): ParseTree; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| expression | `string` | the text expression | +| opmeta | `typeof OpMeta` | (optional) custom opmeta | +| multiOutputPlaceholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | + +Returns: + +`ParseTree` + +A parse tree object + + + +### getStateConfig(expression, opmeta, multiOutputPlaceholderChar) + +Method to get the StateConfig + +Signature: + +```typescript +static getStateConfig(expression: string, opmeta?: typeof OpMeta, multiOutputPlaceholderChar?: string): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| expression | `string` | the text expression | +| opmeta | `typeof OpMeta` | (optional) custom opmeta | +| multiOutputPlaceholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | + +Returns: + +`StateConfig` + +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 bytes 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/classes/pricecurve.md b/docs/classes/pricecurve.md index e07a7b3..228d488 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,31 +15,18 @@ 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 | 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. | -| [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. | +| [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 - - -### 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,20 +73,23 @@ applyExtraTimeDiscount(endTimestamp: number, extraTimeDiscountThreshold: number, Returns: -`this` +`PriceCurve` -this +PriceCurve -### 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)[]): this; +applyTierDiscount(tierAddress: string, tierDiscount: number[], options?: { + tierActivation?: (number | string)[]; + tierContext?: BigNumber[]; + }): PriceCurve; ``` #### Parameters @@ -118,43 +98,11 @@ 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. | - -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. | +| 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: -`this` +`PriceCurve` -this +PriceCurve diff --git a/docs/classes/rainjs.md b/docs/classes/rainjs.md deleted file mode 100644 index c56cf57..0000000 --- a/docs/classes/rainjs.md +++ /dev/null @@ -1,135 +0,0 @@ - -# Class RainJS - -- The javascript version of the RainVM, basically does the same job RainVM does but off-chain. - -Signature: - -```typescript -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 | -| --- | --- | --- | -| [\_OPCODE\_](./rainjs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard 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. | - -## Static Property Details - - - -### Opcodes - -All of RainVM standard opcodes, i.e. AllStandardOps - -Signature: - -```typescript -static Opcodes: typeof import("../classes/vm").AllStandardOps; -``` - -## Property Details - - - -### \_OPCODE\_ - -key/value pair of opcodes and their functions for all standard opcodes - -Signature: - -```typescript -protected readonly _OPCODE_: 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..2015ae6 --- /dev/null +++ b/docs/classes/rainjsvm.md @@ -0,0 +1,269 @@ + +# 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) | [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 | +| [debug](./rainjsvm.md#debug-property) | `(operand: number, data?: any) => void` | | +| [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) | [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` | | + +## Methods + +| Method | Description | +| --- | --- | +| [connect(signer)](./rainjsvm.md#connect-method-1) | | +| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJSVM. | +| [setContract(contract)](./rainjsvm.md#setContract-method-1) | | + +## Property Details + + + +### applyOpFn + +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: + +```typescript +readonly applyOpFn?: FnPtrsJSVM; +``` + + + +### 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: FnPtrsJSVM; +``` + + + +### 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?: FnPtrsJSVM; +``` + + + +### 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; +``` + +## 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 RainJSVM. + +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 RainJSVM 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 d5cb899..3d9fc34 100644 --- a/docs/classes/redeemableerc20.md +++ b/docs/classes/redeemableerc20.md @@ -52,33 +52,33 @@ 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`. | -| [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)* | +| [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`. | | [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`. | +| [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: @@ -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 @@ -220,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)* @@ -246,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: @@ -258,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. @@ -318,7 +306,7 @@ readonly grantSender: (newSender: string, overrides?: TxOverrides) => Promise 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 @@ -478,7 +472,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: @@ -494,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/rulebuilder.md b/docs/classes/rulebuilder.md new file mode 100644 index 0000000..1fb5efb --- /dev/null +++ b/docs/classes/rulebuilder.md @@ -0,0 +1,239 @@ + +# Class RuleBuilder + +Class with methods to generate a multi-currency rule-based StateConfig + +Signature: + +```typescript +class RuleBuilder +``` + +## Example + + +```typescript +// to import: +import { RuleBuilder } from "rain-sdk" + +// to get the multi-currency rule-based StateConfig: +const vmStateConfig = new RuleBuilder([currency1, currency2, ...]) + +// to get a single condition's StateConfig of a single Rule: +const conditions = RuleBuilder.getConditionConfig(condition) + +// to get a ConditionGroup StateConfig: +const rule = RuleBuilder.getConditionGroup(conditionGroup) + +//to get 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 | +| --- | --- | +| [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 | +| [getQPConfig(qp)](./rulebuilder.md#getQPConfig-method-static-1) | Method to get the price or quantity 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 + + + +### 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) + +Method to generate a multi currency rule-based StateConfig + +Signature: + +```typescript +static from(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 | +| --- | --- | --- | +| qp | `Price \| Quantity` | The price or quantity | + +Returns: + +`StateConfig` + +StateConfig + diff --git a/docs/classes/sale.md b/docs/classes/sale.md index 25732ef..886a5d0 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. | +| [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`. | | [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. | | [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; ``` @@ -196,7 +172,7 @@ readonly claimFees: (recipient: string, overrides?: TxOverrides) => Promise 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: @@ -242,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 @@ -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 deleted file mode 100644 index ce1d475..0000000 --- a/docs/classes/saledurationinblocks.md +++ /dev/null @@ -1,146 +0,0 @@ - -# Class SaleDurationInBlocks - -- A class used for creating a VM state for Sale's canEnd/StartStateConfig 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 - -Signature: - -```typescript -class SaleDurationInBlocks -``` - -## Example - - -```typescript -//For generating a canStart/End StateConfig for the sale pass in the required arguments to the constructor. -const saleType = new SaleDuration(blockNumber) - -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [argumentsLength](./saledurationinblocks.md#argumentsLength-property) | `BigNumberish` | | -| [blockNumber](./saledurationinblocks.md#blockNumber-property) | `number` | | -| [constants](./saledurationinblocks.md#constants-property) | `BigNumberish[]` | | -| [sources](./saledurationinblocks.md#sources-property) | `BytesLike[]` | | -| [stackLength](./saledurationinblocks.md#stackLength-property) | `BigNumberish` | | - -## 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. | - -## Property Details - - - -### argumentsLength - -Signature: - -```typescript -argumentsLength: BigNumberish; -``` - - - -### blockNumber - -Signature: - -```typescript -readonly blockNumber: number; -``` - - - -### constants - -Signature: - -```typescript -constants: BigNumberish[]; -``` - - - -### sources - -Signature: - -```typescript -sources: BytesLike[]; -``` - - - -### stackLength - -Signature: - -```typescript -stackLength: BigNumberish; -``` - -## Method Details - - - -### applyExtraTime(extraTimeBlocks, extraTimeAmount) - -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). - -- This method is designed for sale's canEndStateConfig and should 'not' be used for canStart - -Signature: - -```typescript -applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number): this; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| 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. | - -Returns: - -`this` - -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. - -- 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; -``` - -#### 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: - -`this` - -this - diff --git a/docs/classes/saledurationintimestamp.md b/docs/classes/saledurationintimestamp.md deleted file mode 100644 index 659ffeb..0000000 --- a/docs/classes/saledurationintimestamp.md +++ /dev/null @@ -1,146 +0,0 @@ - -# Class SaleDurationInTimestamp - -- A class used for creating a VM state for Sale's canEnd/StartStateConfig 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 - -Signature: - -```typescript -class SaleDurationInTimestamp -``` - -## Example - - -```typescript -//For generating a canStart/End StateConfig for the sale pass in the required arguments to the constructor. -const saleType = new SaleDuration(timestamp) - -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [argumentsLength](./saledurationintimestamp.md#argumentsLength-property) | `BigNumberish` | | -| [constants](./saledurationintimestamp.md#constants-property) | `BigNumberish[]` | | -| [sources](./saledurationintimestamp.md#sources-property) | `BytesLike[]` | | -| [stackLength](./saledurationintimestamp.md#stackLength-property) | `BigNumberish` | | -| [timestamp](./saledurationintimestamp.md#timestamp-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. | - -## Property Details - - - -### argumentsLength - -Signature: - -```typescript -argumentsLength: BigNumberish; -``` - - - -### constants - -Signature: - -```typescript -constants: BigNumberish[]; -``` - - - -### sources - -Signature: - -```typescript -sources: BytesLike[]; -``` - - - -### stackLength - -Signature: - -```typescript -stackLength: BigNumberish; -``` - - - -### timestamp - -Signature: - -```typescript -readonly timestamp: number; -``` - -## Method Details - - - -### applyExtraTime(extraTime, extraTimeAmount) - -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 - -Signature: - -```typescript -applyExtraTime(extraTime: number, extraTimeAmount: 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. | - -Returns: - -`this` - -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. - -- 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; -``` - -#### 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: - -`this` - -this - diff --git a/docs/classes/salejs.md b/docs/classes/salejs.md deleted file mode 100644 index eae1f9d..0000000 --- a/docs/classes/salejs.md +++ /dev/null @@ -1,64 +0,0 @@ - -# Class SaleJS - -- The javascript version of SaleVM which inherits RainJS with local Sale opcodes. - -Signature: - -```typescript -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)* | -| [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)* | - -## Static Property Details - - - -### Opcodes - -Local Sale's opcodes + AllstandardOps - -*Overrides [RainJS.Opcodes](./rainjs.md#Opcodes-property-static)* - -Signature: - -```typescript -static Opcodes: import("../contracts/sale").SaleOpcodes; -``` - -## Property Details - - - -### \_OPCODE\_ - -key/value pair of opcodes and their functions for all standard opcodes + Sale local opcodes - -*Overrides [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* - -Signature: - -```typescript -protected readonly _OPCODE_: ApplyOpFn; -``` diff --git a/docs/classes/salejsvm.md b/docs/classes/salejsvm.md new file mode 100644 index 0000000..c1f9b56 --- /dev/null +++ b/docs/classes/salejsvm.md @@ -0,0 +1,81 @@ + +# Class SaleJSVM + +- The javascript version of SaleVM which inherits RainJSVM with local Sale opcodes. + +Signature: + +```typescript +class SaleJSVM extends RainJSVM +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [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)* | +| [debug](./rainjsvm.md#debug-property) | `(operand: number, data?: any) => void` | *Inherited from [RainJSVM.debug](./rainjsvm.md#debug-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) | [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)* | + +## 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 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 + + + +### 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: FnPtrsJSVM; +``` + + + +### 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..5fb8f26 --- /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) | [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) | [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 + +| 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: sERC20; +``` + + + +### 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: sERC20; +``` + + + +### 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/salevmfrom.md b/docs/classes/salevmfrom.md new file mode 100644 index 0000000..85d72a1 --- /dev/null +++ b/docs/classes/salevmfrom.md @@ -0,0 +1,82 @@ + +# Class SaleVmFrom + +Builds a sale compatible StateConfig out of 2 individual StateConfigs (canLive and calculateBuy) + +Signature: + +```typescript +class SaleVmFrom +``` + +## 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](./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 + + + +### buyCapScript + +Signature: + +```typescript +readonly buyCapScript: BuyAmount | StateConfig; +``` + + + +### calculateBuyScript + +Signature: + +```typescript +readonly calculateBuyScript: PriceCurve | StateConfig; +``` + + + +### canLiveScript + +Signature: + +```typescript +readonly canLiveScript: BetweenTimestamps | BetweenBlocks | StateConfig; +``` + + + +### constants + +Signature: + +```typescript +constants: BigNumberish[]; +``` + + + +### sources + +Signature: + +```typescript +sources: BytesLike[]; +``` 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/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..e1a142f --- /dev/null +++ b/docs/classes/stake.md @@ -0,0 +1,321 @@ + +# 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 ITierV2 +``` + +## 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, 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)* | +| [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` | 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` | 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 + +| 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)](./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 + + + +### deploy + +Deploys a new Stake. + +Signature: + +```typescript +static deploy: (signer: Signer, stakeConfig: 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 + +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 +readonly allowance: (owner: string, spender: string, overrides?: ReadTxOverrides) => Promise; +``` + + + +### approve + +Approve spend limit `amount` as the allowance for a `spender` over this tokens. + +Signature: + +```typescript +readonly approve: (spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### balanceOf + +Returns the amount of tokens owned by `account`. + +Signature: + +```typescript +readonly balanceOf: (account: string, overrides?: ReadTxOverrides) => Promise; +``` + + + +### connect + +Conncect to this Stake contract with another signer + +*Overrides [ITierV2.connect](./itierv2.md#connect-property)* + +Signature: + +```typescript +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 +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 +readonly decreaseAllowance: (spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### 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 +readonly deposit: (amount_: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### increaseAllowance + +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. + +Signature: + +```typescript +readonly increaseAllowance: (spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### name + +Returns the name of the token. + +Signature: + +```typescript +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 +readonly supportsInterface: (interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise; +``` + + + +### symbol + +Returns the symbol of the token, usually a shorter version of the name. + +Signature: + +```typescript +readonly symbol: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### totalSupply + +Returns the amount of tokens in existence. + +Signature: + +```typescript +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 +readonly transfer: (to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### 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 +readonly transferFrom: (from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### 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 +readonly withdraw: (amount_: BigNumberish, overrides?: TxOverrides) => Promise; +``` diff --git a/docs/classes/verify.md b/docs/classes/verify.md index b2cc000..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`. | @@ -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 @@ -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)* @@ -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..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,10 +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, 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)* | +| [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 @@ -64,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, 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)](./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 @@ -114,28 +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 - -*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; -``` diff --git a/docs/classes/vlbp.md b/docs/classes/vlbp.md index 51e0b5e..afe4e8a 100644 --- a/docs/classes/vlbp.md +++ b/docs/classes/vlbp.md @@ -30,18 +30,15 @@ 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 | 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)* | -| [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)* | +| [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 c27fffd..58b1d10 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: @@ -19,12 +21,45 @@ class VM | Method | Description | | --- | --- | +| [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. | -| [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 | +| [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 | +| [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 | +| [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 | +| [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 | +| [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. | +| [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 @@ -42,6 +77,162 @@ static Opcodes: typeof AllStandardOps; ## Static Method Details + + +### addTogether(configs, stackReassignment) + +Method to add multiple scripts together + +Signature: + +```typescript +static addTogether(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| 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: + +`StateConfig` + +a StateConfig + + + +### and(configs, stackReassignment) + +Method to and multiple scripts together ie EVERY + +Signature: + +```typescript +static and(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| 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: + +`StateConfig` + +a StateConfig in VM boolean format (true non-zero, false zero) + + + +### 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 StateConfig + + + +### 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 StateConfig + + + +### 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 (StateConfig) + + + +### 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 StateConfig + ### createVMSources(OPerands) @@ -51,14 +242,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,154 +257,853 @@ static createVMSources(OPerands: OPerand[]): [Uint8Array]; A source - + -### makeOwner(config, ownerAddress, options) +### dec(startValue, endValue, startPoint, endPoint, byBlock) -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. +Create a new raw linear decreasing value StateConfig. -- 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 dec(startValue: BigNumber, endValue: BigNumber, startPoint: number, endPoint: number, byBlock?: boolean): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| startValue | `BigNumber` | The starting value | +| endValue | `BigNumber` | The ending value | +| 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: + +`StateConfig` + +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 makeOwner(config: StateConfig, ownerAddress: string, options?: { - index?: number; - numberOfSources?: number; - position?: number[]; - notOwnerVar?: StateConfig | number; - }): StateConfig; +static decBy(startValue: BigNumber, startPoint: number, margin: BigNumber, periodLength: number, endValue?: number, byBlock?: boolean): StateConfig; ``` #### Parameters | 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;
    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. | +| 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 VM script. +a StateConfig - + -### tierBasedDiscounter(config, tierAddress, tierDiscount, options) +### eq(config1, config2, stackReassignment) -Deducts percentage off of the result of a VM script based on the holding tier of a tier contract. +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 tierBasedDiscounter(config: StateConfig, tierAddress: string, tierDiscount: number[], options?: { - index?: number; - tierActivation?: (string | number)[]; - }): StateConfig; +static eq(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| 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. | +| 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 VM script +a StateConfig in VM boolean format (true non-zero, false zero) - + -### tierBasedMultiplier(config, tierAddress, tierMultiplier, options) +### 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) -Multiply the result of a VM script based on the holding tier of a tier contract. +A method to generate the StateConfig out of EVM assets' opcodes Signature: ```typescript -static tierBasedMultiplier(config: StateConfig, tierAddress: string, tierMultiplier: number[], options?: { - index?: number; - tierActivation?: (string | number)[]; - }): 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 | 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. | +| 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: `StateConfig` -a VM script +a StateConfig - + -### timeSliceScripts(configs, times, inBlockNumber) +### gt(config1, config2, stackReassignment) -A method to merge multiple (more than 1) scripts to be executed based on time slices. +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 timeSliceScripts(configs: StateConfig[], times: number[], inBlockNumber?: boolean): StateConfig; +static gt(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters | 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 | -| inBlockNumber | `boolean` | (optional) false by default which means the time slices will be based on TIMESTAMP, pass true to base it on BLOCK\_NUMBER | +| 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 VM script +a StateConfig in VM boolean format (true non-zero, false zero) - + -### vmCombiner(config1, config2, options) +### gte(config1, config2, stackReassignment) -Combines 2 individual VM scripts +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 -- 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 gte(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 StateConfig in VM boolean format (true non-zero, false zero) + + + +### 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 vmCombiner(config1: StateConfig, config2: StateConfig, options?: { - index?: number; - numberOfSources?: number; - position?: number[]; - }): StateConfig; +static hasAnyTier(tierConfig: StateConfig, stackReassignment?: boolean): 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. | +| 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: + +`StateConfig` + +a StateConfig + + + +### hasMinTier(tierConfig, tier, stackReassignment) + +Method to check if an address has at least the "TIER" status + +Signature: + +```typescript +static hasMinTier(tierConfig: StateConfig, tier: Tier, stackReassignment?: boolean): 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 | +| 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 StateConfig + + + +### ifelse(condition, ifStatement, elseStatement, stackReassignment) + +Method to create an if/else script + +Signature: + +```typescript +static ifelse(condition: StateConfig, ifStatement: StateConfig, elseStatement: StateConfig, stackReassignment?: boolean): 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 | +| 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 StateConfig + + + +### inc(startValue, endValue, startPoint, endPoint, byBlock) + +Create a new raw linear increasing value StateConfig. + +Signature: + +```typescript +static inc(startValue: BigNumber, endValue: BigNumber, startPoint: number, endPoint: number, byBlock?: boolean): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| startValue | `BigNumber` | The starting value | +| endValue | `BigNumber` | The ending value | +| 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: + +`StateConfig` + +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 + + + +### 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 StateConfig + + + +### 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, 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 StateConfig in VM boolean format (true non-zero, false zero) + + + +### 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, 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 StateConfig in VM boolean format (true non-zero, false zero) + + + +### max(configs, stackReassignment) + +Method to get maximum of multiple scripts + +Signature: + +```typescript +static max(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| 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: + +`StateConfig` + +a StateConfig + + + +### min(configs, stackReassignment) + +Method to get minimum of multiple scripts + +Signature: + +```typescript +static min(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| 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: + +`StateConfig` + +a StateConfig + + + +### 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[], 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 - | +| 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 StateConfig + + + +### mulTogether(configs, stackReassignment) + +Method to multiply multiple scripts together + +Signature: + +```typescript +static mulTogether(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| 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: + +`StateConfig` + +a StateConfig + + + +### nand(configs, stackReassignment) + +Method to nand multiple scripts together + +Signature: + +```typescript +static nand(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| 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: + +`StateConfig` + +a StateConfig in VM boolean format (true non-zero, false zero) + + + +### nor(configs, stackReassignment) + +Method to nor multiple scripts together + +Signature: + +```typescript +static nor(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| 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: + +`StateConfig` + +a StateConfig in VM boolean format (true non-zero, false zero) + + + +### 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 StateConfig in VM boolean format (true non-zero, false zero) + + + +### or(configs, stackReassignment) + +Method to or multiple scripts together ie ANY + +Signature: + +```typescript +static or(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| 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: + +`StateConfig` + +a StateConfig in VM boolean format (true non-zero, false zero) + + + +### 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, stackReassignment?: boolean): 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 | +| 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: + +`StateConfig` + +a StatecConfig + + + +### 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 StateConfig + + + +### setDiscountForTiers(config, tierAddress, tierDiscount, options) + +Deducts percentage off of the result of a VM script based on a tier contract. + +Signature: + +```typescript +static setDiscountForTiers(config: StateConfig, tierAddress: string, tierDiscount: number[], options?: { + index?: number; + tierActivation?: (string | number)[]; + tierContext?: BigNumber[]; + delegatedReport?: boolean; + }): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| 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[];
    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: + +`StateConfig` + +a StateConfig + + + +### 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` + +a StateConfig + + + +### setMultiplierForTiers(config, tierAddress, tierMultiplier, options) + +Multiply the result of a VM script based on a tier contract. + +Signature: + +```typescript +static setMultiplierForTiers(config: StateConfig, tierAddress: string, tierMultiplier: number[], options?: { + index?: number; + tierActivation?: (string | number)[]; + tierContext?: BigNumber[]; + delegatedReport?: boolean; + }): StateConfig; +``` + +#### Parameters + +| 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)[];
    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: + +`StateConfig` + +a StateConfig + + + +### setOwnership(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. + +- 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 setOwnership(config: StateConfig, ownerAddress: string, options?: { + index?: number; + position?: number[]; + notOwnerVar?: StateConfig | number; + }): StateConfig; +``` + +#### Parameters + +| 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. | + +Returns: + +`StateConfig` + +a StateConfig + + + +### setTimers(configs, times, inBlockNumber) + +A method to merge multiple (more than 1) scripts to be executed based on time slices. + +Signature: + +```typescript +static setTimers(configs: StateConfig[], times: number[], inBlockNumber?: boolean): StateConfig; +``` + +#### Parameters + +| 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 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: + +`StateConfig` + +a StateConfig + + + +### 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 StateConfig + + + +### 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 StateConfig in VM boolean format (true non-zero, false zero) + + + +### 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` -combined VM script. +a StateConfig in VM boolean format (true non-zero, false zero) diff --git a/docs/classes/vmsimulation.md b/docs/classes/vmsimulation.md new file mode 100644 index 0000000..104a2e4 --- /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) | [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 | + +## 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: sERC1155s; +``` + + + +### 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: sERC20s; +``` + + + +### 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: sERC721s; +``` + + + +### 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: sITiers; +``` + + + +### OpFns + +Opcodes functions body for simulation that use the class properties/types. + +Signature: + +```typescript +protected OpFns: FnPtrsJSVM; +``` + + + +### 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?: 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 | + +Returns: + +`void` + + + +### addITiers(iTiers) + +Method to add tier contract types objects to the class (iTiers) + +Signature: + +```typescript +addITiers(iTiers: sITiers): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| iTiers | [sITiers](../interfaces/sitiers.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/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/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/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..80b83fd --- /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. | +| 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 new file mode 100644 index 0000000..7f85d8d --- /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 - 0 | + 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..3ba6a99 --- /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 - 2 | + diff --git a/docs/enums/emissionserc20storage.md b/docs/enums/emissionserc20storage.md new file mode 100644 index 0000000..da86928 --- /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 - 0 | + 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/orderbookstorage.md b/docs/enums/orderbookstorage.md new file mode 100644 index 0000000..94b516f --- /dev/null +++ b/docs/enums/orderbookstorage.md @@ -0,0 +1,17 @@ + +# Enum OrderbookStorage + +Enum for operand of the Orderbook's STORAGE opcode + +Signature: + +```typescript +enum OrderbookStorage +``` + +## 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..555ccd2 --- /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 - 1 | + diff --git a/docs/enums/salestorage.md b/docs/enums/salestorage.md new file mode 100644 index 0000000..daaaa9e --- /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 - 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. | +| 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..cefa86b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,76 +5,157 @@ | 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. | -| [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 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. | -| [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 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 | | [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 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) | 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 | -| [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 | +| [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. | +| [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 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 | -| [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. | +| [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. | -| [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. | -| [SaleJS](./classes/salejs.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. | -| [TierContract](./classes/tiercontract.md) | Combine the static methods that are present in factories with the ITier instance methods. Should be use to the TierFactories. | +| [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. | | [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 | 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 | +| [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 | +| [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. | -| [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 | + +## 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. | | [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) | | +| [FnPtrsJSVM](./interfaces/fnptrsjsvm.md) | An interface for creating a key/value pair of opcodes functions to override. | +| [IOpMeta](./interfaces/iopmeta.md) | | | [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 | | [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) | | +| [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 | -| [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. | +| [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`. | -| [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. | +| [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. | @@ -85,17 +166,83 @@ | --- | --- | | [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) | | +| [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) | | +| [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) | | +| [vmbook](./variables/vmbook.md) | Key/value paired VM functions to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods | + ## Type Aliases | 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 | +| [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. | -| [CombineTierOpcodes](./types/combinetieropcodes.md) | Type for the opcodes availables in a CombineTier instance. | +| [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 | +| [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 | -| [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. | +| [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 | +| [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 | +| [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) | -| [SaleOpcodes](./types/saleopcodes.md) | Type for the opcodes availables in a CombineTier instance. | +| [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 | +| [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) | 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/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/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/fnptrsjsvm.md b/docs/interfaces/fnptrsjsvm.md new file mode 100644 index 0000000..d754f39 --- /dev/null +++ b/docs/interfaces/fnptrsjsvm.md @@ -0,0 +1,16 @@ + +# Interface FnPtrsJSVM + +An interface for creating a key/value pair of opcodes functions to override. + +Signature: + +```typescript +interface FnPtrsJSVM extends Record +``` + +## Implements Interfaces + +- FnPtrsJSVM + - Record + 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/iopmeta.md b/docs/interfaces/iopmeta.md new file mode 100644 index 0000000..50ec8de --- /dev/null +++ b/docs/interfaces/iopmeta.md @@ -0,0 +1,120 @@ + +# Interface IOpMeta + + +Signature: + +```typescript +interface IOpMeta extends Record +``` + +## Implements Interfaces + +- IOpMeta + - Record + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [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` | | +| [pushes](./iopmeta.md#pushes-property) | `(opcode: number, operand: number) => number` | | + +## Property Details + + + +### aliases + +Signature: + +```typescript +aliases?: string[]; +``` + + + +### data + +Signature: + +```typescript +data?: any; +``` + + + +### description + +Signature: + +```typescript +description?: string; +``` + + + +### enum + +Signature: + +```typescript +enum: number; +``` + + + +### isZeroOperand + +Signature: + +```typescript +isZeroOperand: boolean; +``` + + + +### jsvmfn + +Signature: + +```typescript +jsvmfn: OpJSVM; +``` + + + +### 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/opjsvm.md b/docs/interfaces/opjsvm.md new file mode 100644 index 0000000..2fb74e4 --- /dev/null +++ b/docs/interfaces/opjsvm.md @@ -0,0 +1,10 @@ + +# Interface OpJSVM + +An interface/type of JSVM opcodes' function's body + +Signature: + +```typescript +interface OpJSVM +``` 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/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/sclearconfig.md b/docs/interfaces/sclearconfig.md new file mode 100644 index 0000000..3791ecc --- /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..208d00c --- /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..5d2f9f0 --- /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..6bcb6cd --- /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..8cc7d2e --- /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..517fa47 --- /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..0dd7a69 --- /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..a9a681d --- /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..d05c8bd --- /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..71ae3bd --- /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..541079a --- /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..fa917a5 --- /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..364ce5d --- /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..418d1ba --- /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 in BigNumber format + +Signature: + +```typescript +interface sStore extends Record +``` + +## Implements Interfaces + +- sStore + - Record + +## Implemented By + +- sStore + - [sClearedFunds](./sclearedfunds.md) + 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/statejs.md b/docs/interfaces/statejsvm.md similarity index 59% rename from docs/interfaces/statejs.md rename to docs/interfaces/statejsvm.md index 6bd9061..ae525fe 100644 --- a/docs/interfaces/statejs.md +++ b/docs/interfaces/statejsvm.md @@ -1,35 +1,35 @@ -# 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. | +| [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[]; ``` @@ -60,7 +60,7 @@ readonly sources: Uint8Array[]; ### stack -The RainJS's stack. +The RainJSVM's stack. Signature: 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/interfaces/svaults.md b/docs/interfaces/svaults.md new file mode 100644 index 0000000..b87674f --- /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/namespaces/utils.md b/docs/namespaces/utils.md index 53732d0..2ef5285 100644 --- a/docs/namespaces/utils.md +++ b/docs/namespaces/utils.md @@ -12,24 +12,33 @@ | 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. | +| [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 | -| [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 | 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. | -| [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/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/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/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/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/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/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/docs/namespaces/utils/variables/maptorecord_1.md b/docs/namespaces/utils/variables/maptorecord_1.md new file mode 100644 index 0000000..de29abe --- /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/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/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/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..179faf9 100644 --- a/docs/types/addresses.md +++ b/docs/types/addresses.md @@ -8,18 +8,18 @@ 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; + autoApproveFactory: string; }; ``` 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/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/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/argstypebook.md b/docs/types/argstypebook.md new file mode 100644 index 0000000..7520e5a --- /dev/null +++ b/docs/types/argstypebook.md @@ -0,0 +1,129 @@ + +# Type ArgsTypeBook + +A key/type pair for all the valid Struct types + +Signature: + +```typescript +type ArgsTypeBook = { + 'always': {}; + 'never': {}; + 'input': { + 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; + }; + '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/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/calloptions.md b/docs/types/calloptions.md new file mode 100644 index 0000000..ffb2b04 --- /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?: FnPtrsJSVM; + storageOpFn?: FnPtrsJSVM; + opMeta?: Map; +}; +``` 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/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/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/condition.md b/docs/types/condition.md new file mode 100644 index 0000000..b03141b --- /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; +} | Always | Never | StateConfig; +``` diff --git a/docs/types/conditiongroup.md b/docs/types/conditiongroup.md new file mode 100644 index 0000000..b3395ba --- /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; +} | Always | Never | StateConfig; +``` diff --git a/docs/types/config.md b/docs/types/config.md new file mode 100644 index 0000000..eb568f8 --- /dev/null +++ b/docs/types/config.md @@ -0,0 +1,17 @@ + +# Type Config + +Specific the configuration of the generation method + +Signature: + +```typescript +type Config = { + pretty?: boolean; + storageEnums?: string[]; + contextEnums?: string[]; + tags?: string[]; + enableTagging?: boolean; + opmeta?: typeof OpMeta; +}; +``` 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..00b624f --- /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: Omit; + price: Omit; +}; +``` diff --git a/docs/types/depositconfig.md b/docs/types/depositconfig.md new file mode 100644 index 0000000..cd01729 --- /dev/null +++ b/docs/types/depositconfig.md @@ -0,0 +1,14 @@ + +# Type DepositConfig + +Type for depositing some token amount into a vault used in + +Signature: + +```typescript +type DepositConfig = { + token: string; + vaultId: BigNumberish; + amount: BigNumberish; +}; +``` 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..6b488da --- /dev/null +++ b/docs/types/ecurrency.md @@ -0,0 +1,27 @@ + +# 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?: Omit & { + condition: eConditionGroup; + }; + priceGlobalModifier?: Omit & { + condition: eConditionGroup; + }; + pick: { + quantities: Extract; + prices: Extract; + }; + result: { + quantity: BigNumber; + price: BigNumber; + }; +}; +``` 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/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/error_2.md b/docs/types/error_2.md new file mode 100644 index 0000000..eb03bd9 --- /dev/null +++ b/docs/types/error_2.md @@ -0,0 +1,13 @@ + +# Type Error\_2 + +Type of Parser's Error node + +Signature: + +```typescript +type Error = { + error: string; + position: number[]; +}; +``` diff --git a/docs/types/erule.md b/docs/types/erule.md new file mode 100644 index 0000000..3313cc4 --- /dev/null +++ b/docs/types/erule.md @@ -0,0 +1,27 @@ + +# 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: Omit & { + modifier?: Omit & { + condition: eConditionGroup; + }; + }; + price: Omit & { + modifier?: Omit & { + condition: eConditionGroup; + }; + }; + result: { + quantity: BigNumber; + price: BigNumber; + }; +}; +``` 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/filter.md b/docs/types/filter.md new file mode 100644 index 0000000..1f460a1 --- /dev/null +++ b/docs/types/filter.md @@ -0,0 +1,15 @@ + +# Type Filter + +A filtering utility type for ArgsTypeBook + +Signature: + +```typescript +type Filter = { + [Prop in keyof ArgsTypeBook]: { + subject: T; + args: ArgsTypeBook[T]; + }; +}; +``` 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/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/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/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/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/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/operator.md b/docs/types/operator.md new file mode 100644 index 0000000..faf0ac3 --- /dev/null +++ b/docs/types/operator.md @@ -0,0 +1,10 @@ + +# Type Operator + +All the valid logical operators used for comparison of Struct and/or StateConfig objects + +Signature: + +```typescript +type Operator = 'true' | 'not' | 'and' | 'or' | 'nand' | 'nor' | 'xor' | 'xnor' | 'min' | 'max' | 'eq' | 'gt' | 'lt' | 'gte' | 'lte'; +``` diff --git a/docs/types/optionalargs.md b/docs/types/optionalargs.md new file mode 100644 index 0000000..aa14602 --- /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/order.md b/docs/types/order.md new file mode 100644 index 0000000..00ba2e1 --- /dev/null +++ b/docs/types/order.md @@ -0,0 +1,16 @@ + +# Type Order + +Type for an order containing all that is required in an order. An Order is an + +Signature: + +```typescript +type Order = { + owner: string; + validInputs: IOConfig[]; + validOutputs: IOConfig[]; + 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..0850cd9 --- /dev/null +++ b/docs/types/orderconfig.md @@ -0,0 +1,14 @@ + +# Type OrderConfig + +A type for an order configuration without any specific owner + +Signature: + +```typescript +type OrderConfig = { + validInputs: IOConfig[]; + validOutputs: IOConfig[]; + vmStateConfig: StateConfig; +}; +``` diff --git a/docs/types/parsetree.md b/docs/types/parsetree.md new file mode 100644 index 0000000..5585e9d --- /dev/null +++ b/docs/types/parsetree.md @@ -0,0 +1,13 @@ + +# Type ParseTree + +Type of a parse tree object + +Signature: + +```typescript +type ParseTree = Record; +``` diff --git a/docs/types/prettifyconfig.md b/docs/types/prettifyconfig.md new file mode 100644 index 0000000..b1b7aa7 --- /dev/null +++ b/docs/types/prettifyconfig.md @@ -0,0 +1,13 @@ + +# Type PrettifyConfig + +Specifies the configuration of the Prettify method. + +Signature: + +```typescript +type PrettifyConfig = { + n?: number; + length?: number; +}; +``` diff --git a/docs/types/price.md b/docs/types/price.md new file mode 100644 index 0000000..0506823 --- /dev/null +++ b/docs/types/price.md @@ -0,0 +1,13 @@ + +# Type Price + +Price type + +Signature: + +```typescript +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; +}; +``` diff --git a/docs/types/quantity.md b/docs/types/quantity.md new file mode 100644 index 0000000..57f9aa2 --- /dev/null +++ b/docs/types/quantity.md @@ -0,0 +1,13 @@ + +# Type Quantity + +Quantity type + +Signature: + +```typescript +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; +}; +``` 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/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/sioconfig.md b/docs/types/sioconfig.md new file mode 100644 index 0000000..1c1c82f --- /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/types/stakedeployargs.md b/docs/types/stakedeployargs.md new file mode 100644 index 0000000..9159f55 --- /dev/null +++ b/docs/types/stakedeployargs.md @@ -0,0 +1,17 @@ + +# 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: + +```typescript +type StakeDeployArgs = { + token: string; + initialRatio: BigNumberish; + name: string; + symbol: string; +}; +``` diff --git a/docs/types/state.md b/docs/types/state.md new file mode 100644 index 0000000..9281226 --- /dev/null +++ b/docs/types/state.md @@ -0,0 +1,24 @@ + +# Type State + +Type of Parser's State + +Signature: + +```typescript +type State = { + parse: { + tree: Node[]; + moCache: (Op | Value)[][]; + }; + track: { + notation: number[]; + parens: { + open: number[]; + close: number[]; + }; + }; + depthLevel: number; + ambiguity: boolean; +}; +``` diff --git a/docs/types/struct.md b/docs/types/struct.md new file mode 100644 index 0000000..947951e --- /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<'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/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/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/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/docs/types/withdrawconfig.md b/docs/types/withdrawconfig.md new file mode 100644 index 0000000..3e24be2 --- /dev/null +++ b/docs/types/withdrawconfig.md @@ -0,0 +1,14 @@ + +# Type WithdrawConfig + +Type for withdrawing some token amount from a vault used in + +Signature: + +```typescript +type WithdrawConfig = { + token: string; + vaultId: BigNumberish; + amount: BigNumberish; +}; +``` 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/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/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/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/docs/variables/vmbook.md b/docs/variables/vmbook.md new file mode 100644 index 0000000..4a981af --- /dev/null +++ b/docs/variables/vmbook.md @@ -0,0 +1,12 @@ + +# Variable vmbook + +Key/value paired VM functions to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods + +Signature: + +```typescript +vmbook: { + [T in keyof ArgsTypeBook]: (args: Filter[T]['args']) => StateConfig; +} +``` 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 82bc42d..1947fb7 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "1.1.0", + "version": "2.1.2-beta", "license": "CAL", "main": "dist/index.js", "typings": "dist/index.d.ts", @@ -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", @@ -49,11 +49,12 @@ } ], "devDependencies": { - "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#e590ce7ef673224afba04c43384a278a9500500d", - "@beehiveinnovation/rain-statusfi": "git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258", + "@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", "@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", @@ -61,13 +62,18 @@ "@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", + "@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", + "timsort": "^0.3.0", "ts-node": "^10.4.0", "tsdx": "^0.14.1", "tslib": "^2.3.1", diff --git a/shell.nix b/shell.nix index 693e0d7..9f786e8 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 ''; @@ -51,7 +48,9 @@ in pkgs.stdenv.mkDerivation { name = "shell"; buildInputs = [ - pkgs.nodejs-14_x + pkgs.yarn + pkgs.nodePackages.npm + pkgs.nodejs-16_x copy-contracts generate-typechain copy-typechain diff --git a/src/RainJS/CombineTierJS.ts b/src/RainJS/CombineTierJS.ts deleted file mode 100644 index 295c107..0000000 --- a/src/RainJS/CombineTierJS.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { BigNumber, Contract, Signer } from "ethers"; -import { StateConfig } from "../classes/vm"; -import { CombineTier } from "../contracts/tiers/combineTier"; -import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; - - - -/** - * @public - The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. - * @see CombineTier.sol in contracts - * - */ -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 - * - * @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?: Contract, - applyOpFn?: ApplyOpFn - } - ) { - super( - state, - { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn - } - ) - } - - /** - * key/value pair of opcodes and their functions for all standard opcodes + EmissionsERC20 local opcodes - */ - protected readonly _OPCODE_: ApplyOpFn = { - - ...this._OPCODE_, - - [CombineTierJS.Opcodes.ACCOUNT] : - async(state: StateJS, operand: number, data?: any) => { - if(data && data.account != undefined) { - state.stack.push( - BigNumber.from(data.account) - ) - } - else throw new Error("Undefined account address") - } - } - -} \ No newline at end of file diff --git a/src/RainJS/EmissionsERC20JS.ts b/src/RainJS/EmissionsERC20JS.ts deleted file mode 100644 index 6b08a80..0000000 --- a/src/RainJS/EmissionsERC20JS.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { BigNumber, Contract, Signer } from "ethers"; -import { StateConfig } from "../classes/vm"; -import { EmissionsERC20 } from "../contracts/emissionsERC20"; -import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; - - - -/** - * @public - The javascript version of EmissionsERC20JS which inherits RainJS with local EmissionsERC20JS opcodes. - * @see EmissionsERC20.sol in contracts - * - */ -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 - * - * @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?: Contract, - applyOpFn?: ApplyOpFn - } - ) { - super( - state, - { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn - } - ) - } - - /** - * key/value pair of opcodes and their functions for all standard opcodes + EmissionsERC20 local opcodes - */ - protected readonly _OPCODE_: ApplyOpFn = { - - ...this._OPCODE_, - - [EmissionsERC20JS.Opcodes.CLAIMANT_ACCOUNT] : - async(state: StateJS, operand: number, data?: any) => { - if(data && data.claimant_account != undefined) { - state.stack.push( - BigNumber.from(data.claimant_account) - ) - } - else throw new Error("Undefined claimant account address") - } - } - -} \ No newline at end of file diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts deleted file mode 100644 index 4446171..0000000 --- a/src/RainJS/RainJS.ts +++ /dev/null @@ -1,1073 +0,0 @@ -import { BigNumber, Contract, ethers, Signer } from "ethers"; -import { arrayify } from "ethers/lib/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; - - -/** - * @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 { - - /** - * All of RainVM standard opcodes, i.e. AllStandardOps - */ - public static Opcodes = VM.Opcodes; - - /** - * 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; - - /** - * An ethers provider. - */ - public provider?: Provider; - - /** - * An ethers Contract - */ - public contract?: Contract; - - - /** - * 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, - } - ) { - 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]) - ) - }; - - this.state = { - stack, - argumentsStack, - constants, - sources, - }; - this.applyOpFn = options?.applyOpFn; - this.signer = options?.signer; - this.contract = options?.contract; - this.provider = options?.provider ?? options?.signer?.provider; - } - - - /** - * 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) : Promise { - await this.eval(data); - this.lastState.push( - ...this.state.stack.splice(-this.state.stack.length) - ) - const result_ = this.lastState[this.lastState.length - 1]; - - return result_; - } - - /** - * key/value pair of opcodes and their functions for all standard opcodes - */ - protected readonly _OPCODE_: ApplyOpFn = { - - [RainJS.Opcodes.SKIP] : - (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 (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]) - } - else throw new Error("out-of-bound arguments") - } - }, - - [RainJS.Opcodes.DUP] : - (state: StateJS, operand: number, data?: any) => { - state.stack.push(state.stack[operand]); - }, - - [RainJS.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) - ) - ) - } - 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") - }, - - [RainJS.Opcodes.DEBUG] : - (state: StateJS, operand: number, data?: any) => { - console.log(state.stack); - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.Opcodes.SENDER] : - async(state: StateJS, operand: number, data?: any) => { - if (this.signer != undefined) { - state.stack.push( - BigNumber.from(await this.signer.getAddress()) - ) - } - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [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] : - (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); - } - else throw new Error("Undefined stack variables") - } - state.stack.push(_accumulator); - }, - - [RainJS.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); - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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); - } - else throw new Error("Undefined stack variables") - } - state.stack.push(_accumulator); - }, - - [RainJS.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); - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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); - } - else throw new Error("Undefined stack variables") - } - state.stack.push(_accumulator); - } - else throw new Error("Undefined stack variables") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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") - }, - - [RainJS.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 iTierContract = new ITier( - "0x" + item1_.toHexString().substring(2).padStart(64, "0"), - this.signer - ); - state.stack.push( - await iTierContract.report(account_) - ); - } - 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] : - (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") - }, - - [RainJS.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") - }, - - [RainJS.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 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)); - }, - - [RainJS.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 erc20Contract_ = new ERC20( - erc20Address_, - this.signer - ) - state.stack.push( - await erc20Contract_.balanceOf(account_) - ) - } - else throw new Error("Undefined stack variables") - }, - - [RainJS.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 erc20Contract_ = new ERC20( - erc20Address_, - this.signer - ) - state.stack.push( - await erc20Contract_.totalSupply() - ) - } - else throw new Error("Undefined stack variable") - }, - - [RainJS.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 erc721Contract_ = new ERC721( - erc721Address_, - this.signer - ) - state.stack.push( - await erc721Contract_.balanceOf(account_) - ) - } - else throw new Error("Undefined stack variables") - }, - - [RainJS.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 erc721Contract_ = new ERC721( - erc721Address_, - this.signer - ) - state.stack.push( - BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) - ) - } - else throw new Error("Undefined stack variable") - }, - - [RainJS.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 erc1155Contract_ = new ERC1155( - erc1155Address_, - this.signer - ) - state.stack.push( - await erc1155Contract_.balanceOf(account_, id_) - ) - } - else throw new Error("Undefined stack variables") - }, - - [RainJS.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(64, "0") - ) - }; - const erc1155Address_ = "0x" + item1_.toHexString().substring(2).padStart(64, "0"); - 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/RainJS/SaleJS.ts b/src/RainJS/SaleJS.ts deleted file mode 100644 index 3241dd8..0000000 --- a/src/RainJS/SaleJS.ts +++ /dev/null @@ -1,125 +0,0 @@ -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"; - - -/** - * @public - The javascript version of SaleVM which inherits RainJS with local Sale opcodes. - * @see Sale.sol in contracts - * - */ -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. - * @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) - * - */ - constructor( - state: StateConfig, - options?: { - signer?: Signer, - contract?: Contract, - applyOpFn?: ApplyOpFn - } - ) { - super( - state, - { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn - } - ) - } - - /** - * key/value pair of opcodes and their functions for all standard opcodes + Sale local opcodes - */ - protected readonly _OPCODE_: ApplyOpFn = { - - ...this._OPCODE_, - - [SaleJS.Opcodes.REMAINING_UNITS] : - async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract != undefined) { - const rTKNAddress_ = await this.contract.token(); - const rTKNContract_ = new ERC20( - rTKNAddress_, - this.signer - ); - state.stack.push( - BigNumber.from( - await rTKNContract_.balanceOf(this.contract.address) - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - }, - - [SaleJS.Opcodes.TOTAL_RESERVE_IN] : - async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract != undefined) { - const reserveAddress_ = await this.contract.reserve(); - const reserveContract_ = new ERC20( - reserveAddress_, - this.signer - ); - state.stack.push( - BigNumber.from( - await reserveContract_.balanceOf(this.contract.address) - ) - ) - } - 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] : - async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract != undefined) { - state.stack.push( - BigNumber.from( - await this.contract.token() - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - }, - - [SaleJS.Opcodes.RESERVE_ADDRESS] : - async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract != undefined) { - state.stack.push( - BigNumber.from( - await this.contract.reserve() - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - }, - }; - -} \ No newline at end of file diff --git a/src/addresses.ts b/src/addresses.ts index 73b1e45..0d078dc 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; }; @@ -12,19 +12,19 @@ export type SubgraphBook = { */ export 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; + autoApproveFactory: string; }; const addressBook = [ @@ -34,19 +34,19 @@ const addressBook = [ */ chainId: 1, addresses: { - 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: '', + autoApproveFactory: '', }, }, { @@ -55,19 +55,19 @@ const addressBook = [ */ chainId: 5, addresses: { - 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: '0x4658739342f31C23b15A203479DE7AB677fd7Bc6', + alwaysTier: '0xAeC406C5b0B5Dc0724cA228CeeE0AD3246CCf518', + combineTierFactory: '0x6Db763b05C87a4a0120889C26AC778E92bd28190', + emissionsERC20Factory: '0xE62cF7b2B4acBE23247C49e4D5Ee39cF31C9d169', + noticeBoard: '0x840BcE70970f2a03eADB0be0cf4dBfef051E70A6', + redeemableERC20ClaimEscrow: '0x54de08Bf506a7bA624BA36Ab12e393B50c652650', + redeemableERC20Factory: '0xBee223D3D304c5b5512F07b4047E88964493b500', + saleFactory: '0x21548B27a10ddE0C3a278F9545EA7D3a4EFB6696', + verifyFactory: '0x2386a88E4689EB60F15ce44BB0B922f70F88BdA2', + verifyTierFactory: '0x3E92D1002F7Da0922C2f379C1dbdb7e11Ed28B15', + stakeFactory: '0xD5D4373F3ac5846ACEdE555DEbD9a13D318c0678', + orderBook: '0x6DE908adA18C838D5F1096E4Af4285bd9027f3fa', + autoApproveFactory: '0x06c8B19Db4ef47bC34373924D6f6BB05cC62861e', }, }, { @@ -76,19 +76,19 @@ const addressBook = [ */ chainId: 56, addresses: { - 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: '', + autoApproveFactory: '', }, }, { @@ -97,19 +97,19 @@ const addressBook = [ */ chainId: 97, addresses: { - 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: '', + autoApproveFactory: '', }, }, { @@ -118,19 +118,19 @@ const addressBook = [ */ chainId: 137, addresses: { - 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: '', + autoApproveFactory: '', }, }, { @@ -139,19 +139,19 @@ 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: '0xb0279Db6a2F1E01fbC8483FCCef0Be2bC6299cC3', + redeemableERC20Factory: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512', + verifyFactory: '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0', + verifyTierFactory: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9', + combineTierFactory: '0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9', + redeemableERC20ClaimEscrow: '0x5FC8d32690cc91D4c39d9d3abcBD16989F875707', + noticeBoard: '0x0165878A594ca255338adfa4d48449f69242Eb8F', + emissionsERC20Factory: '0xa513E6E4b8f2a923D98304ec87F64353C4D5C853', + saleFactory: '0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6', + stakeFactory: '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318', + orderBook: '0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e', + autoApproveFactory: '0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82', }, }, { @@ -160,19 +160,19 @@ const addressBook = [ */ chainId: 43113, addresses: { - 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: '', + autoApproveFactory: '', }, }, { @@ -181,19 +181,19 @@ const addressBook = [ */ chainId: 80001, addresses: { - 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: '0x20F6E357E5Ca8a5C4C7081ABc548aa5D3C1f88D5', + alwaysTier: '0x1a5a119c3CD5D6118b55006DD4Aa499737B186C7', + combineTierFactory: '0x20e5b29B249716A5b458F334DC7F11c311E54177', + emissionsERC20Factory: '0x20812E2a90F3237B3EB20F53Dd7f20A60B85A032', + noticeBoard: '0x727bc1b817b1b41bB417af1D6b6874864C642e25', + redeemableERC20ClaimEscrow: '0xc26f68FB5E8fcd28661A26f92587c525e54407d0', + redeemableERC20Factory: '0xd7FC038ae2A69AbED7cEAF50C458ec17Ec8a33bd', + saleFactory: '0x36D1eCa99480820FeD2a160FC98E723Eec167c0F', + verifyFactory: '0x2AeB6aB29AfF3901054f9364ee26916F858088Ed', + verifyTierFactory: '0xAf6D4770E78D2d6ad8675666E251933649A8467e', + stakeFactory: '0x9bf30bfd6057f411313E53104629EB754d0F54a7', + orderBook: '0xb8BADe9783a815512A67B86e5fE967e9B861E102', + autoApproveFactory: '', }, }, ]; @@ -202,23 +202,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: 'https://api.thegraph.com/subgraphs/name/beehive-innovation/rain-protocol-goerli-v3', /** * 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 */ @@ -226,13 +226,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: 'https://api.thegraph.com/subgraphs/name/beehive-innovation/rain-protocol-mumbai-v3', }; /** @@ -278,4 +276,4 @@ export class AddressBook { return endpoint; }; -} +} \ No newline at end of file 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/iTierV2.ts b/src/classes/iTierV2.ts new file mode 100644 index 0000000..1e3e6df --- /dev/null +++ b/src/classes/iTierV2.ts @@ -0,0 +1,198 @@ +import { ReadTxOverrides } from './rainContract'; +import { FactoryContract } from './factoryContract'; +import { BigNumber, BigNumberish, Signer } from 'ethers'; +import { ITierV2__factory } from '../typechain'; + +/** + * @public + * All the contract tier levels availables in all ITier contracts. + */ +export enum Tier { + /** + * Contract tier level 0. This represent that the uset never has been + * interacted with the Tier contract. + */ + ZERO, + /** + * Contract tier level 1. + */ + ONE, + /** + * Contract tier level 2. + */ + TWO, + /** + * Contract tier level 3. + */ + THREE, + /** + * Contract tier level 4. + */ + FOUR, + /** + * Contract tier level 5. + */ + FIVE, + /** + * Contract tier level 6. + */ + SIX, + /** + * Contract tier level 7. + */ + SEVEN, + /** + * Contract tier level 8. + */ + EIGHT, +} + +/** + * @public + * 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 class ITierV2 extends FactoryContract { + + /** + * 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) { + 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 + * held continously since as a `uint32`. + * + * @remarks + * 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. + */ + public readonly report: ( + account: string, + context: BigNumberish[], + 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, + context: BigNumberish[], + overrides?: ReadTxOverrides + ) => Promise; + + /** + * 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 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, + timestamp?: number + ): Promise { + const currentTier = await this.report(account, []); + 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 = ( + "0x" + + BigNumber.from(currentTier) + .toHexString() + .substring(2) + .padStart(64, "0") + ) + .substring(2) + .match(/.{8}/g) + ?.reverse() + .map((x) => parseInt('0x' + x)); + + let eligibleStatus = 0; + if (parsedReport && timestamp) { + for (let i = 0; i < 8; i++) { + if (parsedReport[i] <= timestamp) { + eligibleStatus = i + 1; + } else { + break; + } + } + } + + return eligibleStatus; + } +} 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 deleted file mode 100644 index 1eb6067..0000000 --- a/src/classes/tierContract.ts +++ /dev/null @@ -1,144 +0,0 @@ -import { - Signer, - BigNumber, - BytesLike, - BigNumberish, - ContractTransaction, -} from 'ethers'; -import { TxOverrides, ReadTxOverrides } from './rainContract'; -import { FactoryContract } from './factoryContract'; -import { ITier__factory } from '../typechain'; -import { paddedUInt256 } from '../utils'; - -/** - * @public - * All the contract tier levels availables in all ITier contracts. - */ -export enum Tier { - /** - * Contract tier level 0. This represent that the uset never has been - * interacted with the Tier contract. - */ - ZERO, - /** - * Contract tier level 1. - */ - ONE, - /** - * Contract tier level 2. - */ - TWO, - /** - * Contract tier level 3. - */ - THREE, - /** - * Contract tier level 4. - */ - FOUR, - /** - * Contract tier level 5. - */ - FIVE, - /** - * Contract tier level 6. - */ - SIX, - /** - * Contract tier level 7. - */ - SEVEN, - /** - * Contract tier level 8. - */ - EIGHT, -} - -/** - * @public - * Combine the static methods that are present in factories with the ITier instance methods. - * Should be use to the TierFactories. - */ -export abstract class TierContract extends FactoryContract { - constructor(address: string, signer: Signer) { - super(address, signer); - const tier = ITier__factory.connect(address, signer); - this.report = tier.report; - this.setTier = tier.setTier; - } - - /** {@inheritDoc Tier} */ - public readonly levels = Tier; - - /** - * 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. - * - * @param account - Account to get the report for. - * @param overrides - @see ReadTxOverrides - * @returns The report blocks encoded as a uint256. - */ - public readonly report: ( - account: string, - 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: ( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: TxOverrides - ) => Promise; - - /** - * 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 - * @returns current tier level of the account - */ - public async currentTier(account: string, block?: number): Promise { - const currentTier = await this.report(account); - const againstBlock = block - ? block - : await this.signer.provider?.getBlockNumber(); - - const parsedReport = paddedUInt256(currentTier) - .substring(2) - .match(/.{1,8}/g) - ?.reverse() - .map((x) => parseInt('0x' + x)); - - let eligibleStatus = 0; - if (parsedReport && againstBlock) { - for (let i = 0; i < 8; i++) { - if (parsedReport[i] <= againstBlock) { - eligibleStatus = i + 1; - } else { - break; - } - } - } - - return eligibleStatus; - } -} diff --git a/src/classes/vm.ts b/src/classes/vm.ts index a0f79d0..29c037b 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1,4 +1,5 @@ -import { BytesLike, BigNumberish, BigNumber, utils } from 'ethers'; +import { Tier } from './iTierV2'; +import { BytesLike, BigNumberish, utils, BigNumber, ethers } from 'ethers'; import { paddedUInt256, paddedUInt32, @@ -9,8 +10,7 @@ import { selectLteMode, selectLteLogic, callSize, - arg, - arrayify, + arrayify } from '../utils'; /** @@ -20,24 +20,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, + CONSTANT, /** - * 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 @@ -49,97 +51,77 @@ export enum AllStandardOps { */ DEBUG, /** - * Opcode for the block number. - */ - BLOCK_NUMBER, - /** - * Opcode for the block timestamp. + * Opcode for `IERC20` `balanceOf`. */ - BLOCK_TIMESTAMP, + IERC20_BALANCE_OF, /** - * Opcode for the `msg.sender`. + * Opcode for `IERC20` `totalSupply`. */ - SENDER, + IERC20_TOTAL_SUPPLY, /** - * Opcode for `this` address of the current contract. + * Opcode for `IERC20` use an Snapshot `balanceOfAt`. */ - THIS_ADDRESS, + IERC20_SNAPSHOT_BALANCE_OF_AT, /** - * Opcode for multiplication. + * Opcode for `IERC20` use an Snapshot `totalSupplyAt`. */ - SCALE18_MUL, + IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, /** - * Opcode for division. + * Opcode for `IERC721` `balanceOf`. */ - SCALE18_DIV, + IERC721_BALANCE_OF, /** - * Opcode to rescale some fixed point number to 18 OOMs in situ. + * Number of provided opcodes for `IERC721Ops`. */ - SCALE18, + IERC721_OWNER_OF, /** - * Opcode to rescale an 18 OOMs fixed point number to scale N. + * Opcode for `IERC1155` `balanceOf`. */ - SCALEN, + IERC1155_BALANCE_OF, /** - * Opcode to rescale an arbitrary fixed point number by some OOMs. + * Number of provided opcodes for `IERC1155Ops`. */ - SCALE_BY, + IERC1155_BALANCE_OF_BATCH, /** - * Opcode for stacking the definition of one. + * Opcode for the block number. */ - SCALE18_ONE, + BLOCK_NUMBER, /** - * Opcode for stacking number of fixed point decimals used. + * Opcode for the `msg.sender`. */ - SCALE18_DECIMALS, + SENDER, /** - * Opcode for addition. + * Opcode for `this` address of the current contract. */ - ADD, + THIS_ADDRESS, /** - * Opcode for saturating addition. + * Opcode for the block timestamp. */ - SATURATING_ADD, + BLOCK_TIMESTAMP, /** - * Opcode for subtraction. + * Opcode to rescale some fixed point number to 18 OOMs in situ. */ - SUB, + SCALE18, /** - * Opcode for saturating subtraction. + * Opcode for division. */ - SATURATING_SUB, + SCALE18_DIV, /** * Opcode for multiplication. */ - MUL, - /** - * Opcode for saturating multiplication. - */ - SATURATING_MUL, - /** - * Opcode for division - */ - DIV, - /** - * Opcode for modulo. - */ - MOD, - /** - * Opcode for exponentiation. - */ - 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_ @@ -154,71 +136,87 @@ 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 stack a report that has never been held for all tiers. + * Opcode for saturating multiplication. */ - NEVER, + SATURATING_MUL, /** - * Opcode to stack a report that has always been held for all tiers. + * Opcode for saturating subtraction. */ - ALWAYS, + SATURATING_SUB, /** - * Opcode to calculate the tierwise diff of two reports. + * Opcode for addition. */ - SATURATING_DIFF, + ADD, /** - * Opcode to update the blocks over a range of tiers for a report. + * Opcode for division */ - UPDATE_BLOCKS_FOR_TIER_RANGE, + DIV, /** - * Opcode to tierwise select the best block lte a reference block. + * Opcode for exponentiation. */ - SELECT_LTE, + EXP, /** - * Opcode for `IERC20` `balanceOf`. + * Opcode for maximum. */ - IERC20_BALANCE_OF, + MAX, /** - * Opcode for `IERC20` `totalSupply`. + * Opcode for minimum. */ - IERC20_TOTAL_SUPPLY, + MIN, /** - * Opcode for `IERC721` `balanceOf`. + * Opcode for modulo. */ - IERC721_BALANCE_OF, + MOD, /** - * Number of provided opcodes for `IERC721Ops`. + * Opcode for multiplication. */ - IERC721_OWNER_OF, + MUL, /** - * Opcode for `IERC1155` `balanceOf`. + * Opcode for subtraction. */ - IERC1155_BALANCE_OF, + SUB, /** - * Number of provided opcodes for `IERC1155Ops`. + * Opcode to call `report` on an `ITierV2` contract. */ - IERC1155_BALANCE_OF_BATCH, + 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, + /** + * Opcode to update the timestamp over a range of tiers for a report. + */ + UPDATE_TIMES_FOR_TIER_RANGE, /** - * Length of the Standard Opcodes + * length of available opcodes */ length, } @@ -237,57 +235,54 @@ export interface StateConfig { * Constants verbatim. */ constants: BigNumberish[]; +} + +/** + * @public + * 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 - * * Parameter that will use to converted to the source. * * Use an opcode and operand (optional) @@ -296,8 +291,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 { /** @@ -306,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 @@ -313,107 +314,281 @@ 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 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 + * will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. + * @returns combined VM script (StateConfig) */ - public static vmCombiner( + public static combiner( config1: StateConfig, config2: StateConfig, options?: { - index?: number, - numberOfSources?: number - position?: number[], + index?: 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: Uint8Array[] = []; + let sourceModify2: Uint8Array[] = []; 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[i] = arrayify(config1.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 < 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[i][j] === 4) { + sourceModify1[i][j + 1]++; + } + j++; + } + } + for (let i = 0; i < config2.sources.length; i++) { + sourceModify2[i] = arrayify(config2.sources[i], { + allowMissingPrefix: true, + }); + 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[i][j + 1] += argCount + config1.constants.length; + } + } + if (sourceModify2[i][j] === 4) { + sourceModify2[i][j + 1] += config1.sources.length; + } + j++; + } } + + sources = [ + sourceModify1[0], + sourceModify2[0], + ...sourceModify1.splice(1), + ...sourceModify2.splice(1), + ]; } else { - for (let i = 0; i < NumberOfSources; i++) { - config1.sources[Index + i] = concat([ - config1.sources[Index + i], - config2.sources[i], - ]); + const Index = options?.index ? options.index : 0; + + for (let i = 0; i < config1.sources.length; i++) { + sourceModify1[i] = arrayify(config1.sources[i], { + allowMissingPrefix: true, + }); + 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++; + } + } + for (let i = 0; i < config2.sources.length; i++) { + sourceModify2[i] = arrayify(config2.sources[i], { + allowMissingPrefix: true, + }); + 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[i][j + 1] += config1.constants.length + argCount; + } + } + if (sourceModify2[i][j] === 4) { + const srcIndexIncrement = config1.sources.length - NumberOfSources; + const srcIndex = sourceModify2[i][j + 1] & 7; + sourceModify2[i][j + 1] = + srcIndex < NumberOfSources + ? sourceModify2[i][j + 1] + Index + : sourceModify2[i][j + 1] + srcIndexIncrement; + } + j++; + } + } + if (options?.position && options.position.length === NumberOfSources) { + for (let i = 0; i < NumberOfSources; i++) { + 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++) { + sourceModify1[Index + i] = concat([ + sourceModify1[Index + i], + sourceModify2[i], + ]); + } } + + sourceModify2.splice(0, NumberOfSources); + sources = [...sourceModify1, ...sourceModify2]; } - config2.sources.splice(0, NumberOfSources); - const sources = [...config1.sources, ...config2.sources]; + 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 = []; - const finalStackLength = BigNumber.from(config1.stackLength).add( - config2.stackLength - ); - const finalArgumentsLength = BigNumber.from(config1.argumentsLength).add( - config2.argumentsLength - ); + 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 + * @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 StatecConfig + */ + public static pair( + amountConfig: StateConfig, + priceConfig: StateConfig, + stackReassignment: boolean = true + ): StateConfig { + 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++; + } + priceConfig.sources[i] = _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 + * @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 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++) { + 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++; + } + 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 @@ -421,260 +596,277 @@ export class VM { * * @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: * - (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 + * + * @returns a StateConfig */ - public static makeOwner( + public static setOwnership( config: StateConfig, ownerAddress: string, options?: { - index?: number, - numberOfSources?: 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(AllStandardOps.VAL, i), - op(AllStandardOps.SENDER), - op(AllStandardOps.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') { - let _result = this.vmCombiner( + _result = this.combiner(config, options.notOwnerVar, { + index: Index, + position: options?.position, + }); + } else { + const NotOwnerVar = + options?.notOwnerVar && typeof options?.notOwnerVar == 'number' + ? options.notOwnerVar + : 0; + + _result = this.combiner( config, - options.notOwnerVar, { - index: options.index, - position: options.position, - numberOfSources: options.numberOfSources + constants: [NotOwnerVar], + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])], + }, + { + 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; + _result = this.combiner( + MAKE_OWNER, + _result, + { index: Index } + ); + _result.sources[Index] = concat([ + _result.sources[Index], + op(VM.Opcodes.EAGER_IF), + ]); - } 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, - }; - } + return _result; } - /** - * 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. - * - * @returns a VM script @see StateConfig + * - (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 StateConfig */ - public static tierBasedDiscounter( + public static setDiscountForTiers( config: StateConfig, tierAddress: string, tierDiscount: number[], options?: { index?: number, - tierActivation?: (string | number)[] + tierActivation?: (string | number)[], + 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( '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])) ) ); - const TIER_BASED_DIS = (i: number) => + + 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 = () => concat([ - op(VM.Opcodes.NEVER), - op(VM.Opcodes.VAL, i - 1), - 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.SENDER), - op(VM.Opcodes.REPORT), - op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), + 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) ), 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.CONSTANT, 3), op(VM.Opcodes.DIV, 2), ]); - - const ACTIVATION_TIME = (i: number) => + const ACTIVATION_TIME = () => concat([ - op(VM.Opcodes.NEVER), - 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.SENDER), - op(VM.Opcodes.REPORT), + 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.VAL, i - 4), + op(VM.Opcodes.CONSTANT, 4), ]); - const TIER_BASED_DIS_FN = (i: number) => concat([ - op(VM.Opcodes.VAL, i - 1), - op(VM.Opcodes.VAL, arg(0)), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 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.CONSTANT, 14), + op(VM.Opcodes.CONSTANT, 15), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.VAL, i - 1), + op(VM.Opcodes.CONSTANT, 3), ]); - 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), - ]); - 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, - }; - } 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, - }; - } + + const _discounterConfig: StateConfig = + options?.tierActivation && options.tierActivation.length === 8 + ? { + 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]) + ) + ), + ...CONTEXT_.constants + ], + sources: [ + concat([ + TIER_BASED_DIS(), + ACTIVATION_TIME(), + TIER_BASED_DIS_ZIPMAP(2), + ]), + concat([ + ACTIVATION_TIME_FN(), + TIER_BASED_DIS_FN(5 + CONTEXT_.constants.length), + op(VM.Opcodes.EAGER_IF), + ]), + ], + } + : { + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierDiscount, + '100', + ...CONTEXT_.constants + ], + sources: [ + concat([TIER_BASED_DIS(), TIER_BASED_DIS_ZIPMAP(0)]), + TIER_BASED_DIS_FN(4 + CONTEXT_.constants.length), + ], + }; + + return VM.combiner(config, _discounterConfig, { index: Index }); } /** - * 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. - * - * @returns a VM script @see StateConfig + * - (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 StateConfig */ - public static tierBasedMultiplier( + public static setMultiplierForTiers( config: StateConfig, tierAddress: string, tierMultiplier: number[], options?: { index?: number, - tierActivation?: (string | number)[] + tierActivation?: (string | number)[], + 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( @@ -690,191 +882,1297 @@ export class VM { ) ); - const TIER_BASED_MUL = (i: number) => + + 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 = () => concat([ - op(VM.Opcodes.VAL, i - 3), - op(VM.Opcodes.VAL, i - 4), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.REPORT), - op(VM.Opcodes.BLOCK_NUMBER), + 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_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.CONSTANT, 3), op(VM.Opcodes.DIV, 2), ]); - - const ACTIVATION_TIME = (i: number) => + const ACTIVATION_TIME = () => concat([ - op(VM.Opcodes.NEVER), - 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.SENDER), - op(VM.Opcodes.REPORT), + 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.VAL, i - 5), + op(VM.Opcodes.CONSTANT, 5), ]); - const TIER_BASED_MUL_FN = (i: number) => concat([ - op(VM.Opcodes.VAL, arg(0)), - op(VM.Opcodes.VAL, i - 1), + op(VM.Opcodes.CONSTANT, i), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.VAL, arg(0)), - op(VM.Opcodes.VAL, i - 2), + op(VM.Opcodes.CONSTANT, i), + op(VM.Opcodes.CONSTANT, 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.CONSTANT, 15), + op(VM.Opcodes.CONSTANT, 16), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.VAL, i - 2), + op(VM.Opcodes.CONSTANT, 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 && options.tierActivation.length === 8 + ? { + 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]) + ) + ), + ...CONTEXT_.constants, + ], + sources: [ + concat([ + TIER_BASED_MUL(), + ACTIVATION_TIME(), + TIER_BASED_MUL_ZIPMAP(2), + ]), + concat([ + ACTIVATION_TIME_FN(), + TIER_BASED_MUL_FN(6 + CONTEXT_.constants.length), + op(VM.Opcodes.EAGER_IF), + ]), + ], + } + : { + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierMultiplier, + '100', + '0xffffffff', + ...CONTEXT_.constants + ], + sources: [ + concat([TIER_BASED_MUL(), TIER_BASED_MUL_ZIPMAP(0)]), + TIER_BASED_MUL_FN(5 + CONTEXT_.constants.length), + ], + }; + 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 + * 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 timeSliceScripts ( + public static setTimers( configs: StateConfig[], times: number[], inBlockNumber: boolean = false - ) : StateConfig { - - if (configs.length == times.length) { - + ): StateConfig { + if (configs.length === times.length + 1) { let _result: StateConfig; - const SLICER = (i: number) : StateConfig => { + const SLICER = (i: number): StateConfig => { return { - constants: [times[i], times[i+1]], + constants: [times[i]], sources: [ concat([ - op(VM.Opcodes.VAL, 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.VAL, 1), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.EVERY), - ]) + ? op(VM.Opcodes.BLOCK_NUMBER) + : op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN) + ]), ], - 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]) - } - else { - _result = VM.vmCombiner(_result, SLICER(i)) - _result = VM.vmCombiner(_result, configs[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]); } } 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), ]); - _result.stackLength = Number(_result.stackLength) + 1; } 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 StateConfig + */ + public static beforeAfterTime( + timestamp: number, + type: "gt" | "lt" | "gte" | "lte" + ): StateConfig { + 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") { + result_ = VM.gte(time, val) + } + if (type === "lte") { + result_ = VM.lte(time, val) + } + if (type === "lt") { + result_ = VM.lt(time, val) + } + if (type === "gt") { + result_ = VM.gt(time, val) + } + + return result_; + } + + + /** + * 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 StateConfig + */ + public static beforeAfterBlock( + blockNumber: number, + type: "gt" | "lt" | "gte" | "lte" + ): StateConfig { + 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") { + result_ = VM.gte(time, val) + } + if (type === "lte") { + result_ = VM.lte(time, val) + } + if (type === "lt") { + result_ = VM.lt(time, val) + } + if (type === "gt") { + result_ = VM.gt(time, val) + } + + return result_; + } + + /** + * 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 StateConfig + */ + 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) + ]) + + return result_; + } + + /** + * 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 StateConfig + */ + 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) + ]) + + return result_; + } + + /** + * 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 StateConfig + */ + 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) + ]) + + return result_; + } + + /** + * 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 StateConfig + */ + 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) + ]) + + 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 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 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 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 + * + * @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 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) + 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 + * @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 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) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.ANY, configs.length) + ]) + + return result_; + } + + /** + * Method to nand multiple scripts together + * + * @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 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) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.EVERY, configs.length), + op(VM.Opcodes.ISZERO) + ]) + + 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 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.ANY, configs.length), + op(VM.Opcodes.ISZERO) + ]) + + return result_; + } + + /** + * Method to xor multiple scripts together + * + * @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 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 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)])]}; + 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 xnor multiple scripts together + * + * @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 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)])]}; + 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 result_; + } + + /** + * 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 + * @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 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); + 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 + * @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 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); + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.GREATER_THAN) + ]) + + 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 + * @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 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); + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.LESS_THAN) + ]) + + 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 + * @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 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); + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ISZERO) + ]) + + 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 + * @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 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); + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.ISZERO) + ]) + + return result_; + } + + // /** + // * 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 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), + // 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 + * + * @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 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[], + delegatedCall: boolean = false + ) : StateConfig { + + if (type === "erc20-balance-of" && address[0]) { + return { + constants: [address[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + delegatedCall ? op(VM.Opcodes.CONTEXT, 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 throw new Error("invalid arguments") + else if (type === "snapshot-balance-of" && address[0] && id?.length) { + return { + constants: [address[0], id[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + delegatedCall ? op(VM.Opcodes.CONTEXT, 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), + delegatedCall ? op(VM.Opcodes.CONTEXT, 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), + delegatedCall ? op(VM.Opcodes.CONTEXT, 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(delegatedCall ? op(VM.Opcodes.CONTEXT, 0) : 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 + * @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 StateConfig + */ + public static hasAnyTier( + tierConfig: StateConfig, + stackReassignment: boolean = true + ) : StateConfig { + + return VM.lt( + tierConfig, + VM.constant(ethers.constants.MaxUint256), + stackReassignment + ) + } + + /** + * 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 + * @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 StateConfig + */ + public static hasMinTier( + tierConfig: StateConfig, + tier: Tier, + stackReassignment: boolean = true + ) : StateConfig { + + const reportCheck = paddedUInt256( + "0x" + + paddedUInt32("0xffffffff").repeat(8 - tier + 1) + + paddedUInt32("0").repeat(tier - 1) + ) + + return VM.lt(tierConfig, VM.constant(reportCheck), stackReassignment) + } + + /** + * @public + * Method to create a simple STACK opcode script + * + * @param operand - stack operand + * @returns a StateConfig + */ + public static stack(operand: number): StateConfig { + return { + constants: [], + sources: [concat([op(VM.Opcodes.STACK, operand)])] + } + } + + /** + * @public + * Method to create a simple CONTEXT opcode script + * + * @param operand - context operand + * @returns a StateConfig + */ + public static input(operand: number): StateConfig { + return { + constants: [], + sources: [concat([op(VM.Opcodes.CONTEXT, operand)])] + } + } + + /** + * @public + * Create a new raw linear decreasing value StateConfig. + * + * @param startValue - The starting value + * @param endValue - The ending value + * @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 StateConfig + */ + public static dec( + startValue: BigNumber, + endValue: BigNumber, + startPoint: number, + endPoint: number, + byBlock: boolean = false + ): StateConfig { + let duration = endPoint - startPoint; + let valueChange = (startValue.sub(endValue)).div(duration); + + return ({ + constants: [ + startValue, + endValue, + valueChange, + startPoint, + ], + sources: [ + concat([ + 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), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.MAX, 2), + ]) + ], + }); + } + + /** + * @public + * Create a new raw linear increasing value StateConfig. + * + * @param startValue - The starting value + * @param endValue - The ending value + * @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 StateConfig + */ + public static inc( + startValue: BigNumber, + endValue: BigNumber, + startPoint: number, + endPoint: number, + byBlock: boolean = false + ): StateConfig { + let duration = endPoint - startPoint; + let valueChange = (endValue.sub(startValue)).div(duration); + + return ({ + constants: [ + startValue, + endValue, + valueChange, + startPoint, + ], + sources: [ + concat([ + 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), + 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), + ]) + ], + }); + } + + /** + * @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 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) + * @returns a StateConfig + */ + 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); + } + + + /** + * @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/contracts/autoApprove.ts b/src/contracts/autoApprove.ts new file mode 100644 index 0000000..012fa51 --- /dev/null +++ b/src/contracts/autoApprove.ts @@ -0,0 +1,245 @@ +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) { + 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 1d003b6..fbaf071 100644 --- a/src/contracts/emissionsERC20.ts +++ b/src/contracts/emissionsERC20.ts @@ -1,3 +1,5 @@ +import { ITierV2 } from '../classes/iTierV2'; +import { StateConfig, StorageOpcodesRange } from '../classes/vm'; import { Signer, BigNumber, @@ -5,28 +7,44 @@ import { BigNumberish, ContractTransaction, } from 'ethers'; +import { + 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'; + /** * @public - * Type for the opcodes availables in a EmissionsERC20 instance. + * Enum for operand of the emissionsERC20's CONTEXT opcode */ -export type EmissionsERC20Opcodes = typeof AllStandardOps & { +export enum EmissionsERC20Context { /** - * local opcode to put claimant account on the stack. + * 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. */ - CLAIMANT_ACCOUNT: number; -}; + ClaimantAccount, + /** + * length of EmissionsERC20's valid context opcodes - 2 + */ + length, +} + +/** + * @public + * Enum for operand of the EmissionsERC20's STORAGE opcode + */ +export enum EmissionsERC20Storage { + /** + * length of EmissionsERC20's valid storage opcodes - 0 + */ + length, +} /** * @public @@ -47,7 +65,7 @@ export type EmissionsERC20Opcodes = typeof AllStandardOps & { *``` */ -export class EmissionsERC20 extends TierContract { +export class EmissionsERC20 extends ITierV2 { protected static readonly nameBookReference: string = 'emissionsERC20Factory'; /** @@ -59,9 +77,9 @@ 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 +94,10 @@ export class EmissionsERC20 extends TierContract { this.totalSupply = _emission.totalSupply; this.transfer = _emission.transfer; this.transferFrom = _emission.transferFrom; + this.storageOpcodesRange = _emission.storageOpcodesRange; + this.packedFunctionPointers = _emission.packedFunctionPointers; } - /** - * 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. * @@ -114,6 +123,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); }; @@ -132,18 +148,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 @@ -181,8 +185,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 @@ -199,7 +202,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, @@ -246,7 +249,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 @@ -254,7 +257,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. @@ -270,7 +273,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. @@ -289,7 +292,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; @@ -297,7 +300,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; @@ -305,14 +308,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: * @@ -330,7 +333,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`. @@ -352,6 +355,24 @@ export class EmissionsERC20 extends TierContract { amount: BigNumberish, overrides?: TxOverrides ) => Promise; + + /** + * Returns the pointer and length for emissionERC20'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; } /** @@ -362,4 +383,4 @@ export interface EmissionsERC20DeployArgs { allowDelegatedClaims: boolean; erc20Config: ERC20Config; vmStateConfig: StateConfig; -} +} \ No newline at end of file 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/generics/erc1155.ts b/src/contracts/generics/erc1155.ts index d006633..51a206c 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, RainContract } from '../../classes/rainContract'; import { BigNumberish, BigNumber, @@ -6,7 +7,7 @@ import { Signer, ContractTransaction, } from 'ethers'; -import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; + /** * @public @@ -30,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); @@ -70,7 +72,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..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; @@ -76,7 +87,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 +125,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,41 +142,13 @@ 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, 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. * @@ -176,7 +158,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 +174,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 +193,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 +201,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 +209,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 +234,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`. @@ -274,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 3ba701b..1ee6246 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, RainContract } from '../../classes/rainContract'; import { BigNumberish, BigNumber, @@ -6,7 +7,7 @@ import { Signer, ContractTransaction, } from 'ethers'; -import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; + /** * @public @@ -30,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); @@ -78,7 +80,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/generics/seedDance.ts b/src/contracts/generics/seedDance.ts new file mode 100644 index 0000000..c0954d9 --- /dev/null +++ b/src/contracts/generics/seedDance.ts @@ -0,0 +1,73 @@ +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) { + 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/noticeBoard.ts b/src/contracts/noticeBoard.ts index ca2833e..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; @@ -68,6 +67,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 new file mode 100644 index 0000000..84ab5a9 --- /dev/null +++ b/src/contracts/orderBook.ts @@ -0,0 +1,313 @@ +import { OrderBook__factory } from '../typechain'; +import { Signer, BigNumberish, BytesLike, ContractTransaction } from 'ethers'; +import { + RainContract, + ReadTxOverrides, + TxOverrides, +} from '../classes/rainContract'; +import { + StateConfig, + StorageOpcodesRange, + AllStandardOps, +} from '../classes/vm'; + +/** + * @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 Rain OrderBook contract. + * + * @remarks + * This class provides an easy way to interact with the OrderBook contract. + * + * @example + * ```typescript + * import { OrderBook } from 'rain-sdk' + * + * const orderBook = await Orderbook.get(signer); + * or + * 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.removeOrder = _orderBook.removeOrder; + this.storageOpcodesRange = _orderBook.storageOpcodesRange; + this.withdraw = _orderBook.withdraw; + this.packedFunctionPointers = _orderBook.packedFunctionPointers; + } + + /** + * All the opcodes avaialbles in the OrderBook contract. + * + * @remarks + * This expose all the standard opcodes along with the specific local OrderBook opcodes. + */ + public static Opcodes: OrderBookOpcodes = { + ...AllStandardOps, + ORDER_FUNDS_CLEARED: 0 + AllStandardOps.length, + COUNTERPARTY_FUNDS_CLEARED: 1 + AllStandardOps.length, + }; + + /** + * 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. + * + * @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 + ); + }; + + /** + * 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 + * 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 + * 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 + * 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 clearConfig_ - @see ClearConfig The corresponding vault IDs of the bounty + * @param overrides - @see TxOverrides + * @returns + */ + public readonly clear: ( + a_: Order, + b_: Order, + clearConfig_: ClearConfig, + 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; + + /** + * 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 + * 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 + */ +export type OrderConfig = { + validInputs: IOConfig[]; + validOutputs: IOConfig[]; + vmStateConfig: StateConfig; +}; + +/** + * @public + * Type for an order containing all that is required in an order. + * An Order is an @see OrderConfig with an owner + */ +export type Order = { + owner: string; + validInputs: IOConfig[]; + validOutputs: IOConfig[]; + tracking: BigNumberish; + vmState: BytesLike; +}; + +/** + * @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; + vaultId: BigNumberish; + amount: BigNumberish; +}; + +/** + * @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; + vaultId: BigNumberish; + amount: BigNumberish; +}; + +/** + * @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 = { + aInputIndex: BigNumberish; + aOutputIndex: BigNumberish; + bInputIndex: BigNumberish; + bOutputIndex: BigNumberish; + aBountyVaultId: BigNumberish; + bBountyVaultId: 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 + */ +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, +} + +/** + * @public + * Enum for operand of the Orderbook's STORAGE opcode + */ +export enum OrderbookStorage { + /** + * length of Orederbook's valid storage opcodes + */ + length, +} \ No newline at end of file diff --git a/src/contracts/redeemableERC20.ts b/src/contracts/redeemableERC20.ts index 0fcf44d..c80751f 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 @@ -58,14 +50,12 @@ export class RedeemableERC20 extends FactoryContract { * */ constructor(address: string, signer: Signer) { - RedeemableERC20.checkAddress(address); super(address, signer); const _redeemable = RedeemableERC20__factory.connect(address, signer); 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 +70,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; @@ -115,6 +106,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 +150,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,29 +167,13 @@ 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, 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. @@ -237,7 +218,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 @@ -245,7 +226,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. @@ -318,7 +299,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. @@ -390,35 +371,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. + * @returns 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; @@ -457,7 +433,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,18 +445,35 @@ 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. + * @returns 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. * * @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: * @@ -498,7 +491,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..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, @@ -107,6 +105,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 4ceae52..9466a25 100644 --- a/src/contracts/sale.ts +++ b/src/contracts/sale.ts @@ -1,42 +1,64 @@ -import { BigNumberish, BigNumber, Signer, ContractTransaction } from 'ethers'; -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 { RedeemableERC20 } from './redeemableERC20'; +import { FactoryContract } from '../classes/factoryContract'; +import { StateConfig, StorageOpcodesRange } from '../classes/vm'; import { Sale__factory, SaleFactory__factory } from '../typechain'; +import { BigNumberish, BigNumber, Signer, ContractTransaction } from 'ethers'; +import { ERC20Config, TxOverrides, ReadTxOverrides } from '../classes/rainContract'; + /** * @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 - 4 */ - RESERVE_ADDRESS: number; + length }; +/** + * @public + * 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 - 1 + */ + length +} + /** * @public * A class for deploying and calling methods on a Sale. @@ -71,37 +93,25 @@ export class Sale extends FactoryContract { * */ constructor(address: string, signer: Signer) { - Sale.checkAddress(address); - super(address, signer); const _sale = Sale__factory.connect(address, signer); 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.packedFunctionPointers = _sale.packedFunctionPointers; + this.storageOpcodesRange = _sale.storageOpcodesRange; + this.packedFunctionPointers = _sale.packedFunctionPointers; } - /** - * 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. * @@ -133,6 +143,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); }; @@ -213,15 +230,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 +254,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 +266,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 +277,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 +331,22 @@ 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 overrides - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; + + /** + * Returns the pointer and length for sale's storage opcodes + * + * @param overrides - @see ReadTxOverrides + * @returns a StorageOpcodesRange + */ + public readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; } /** @@ -330,18 +356,11 @@ export class Sale extends FactoryContract { */ export interface SaleConfig { /** - * State config for the script that allows a Sale to start. + * 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. */ - 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. - */ - calculatePriceStateConfig: StateConfig; + vmStateConfig: StateConfig; /** * The recipient of the proceeds of a Sale, if/when the Sale is successful. */ @@ -434,4 +453,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 d4314c8..171561f 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -1,26 +1,22 @@ +import { Tier } from '../../classes/iTierV2'; import { StateConfig, VM } from '../../classes/vm'; -import { BigNumberish, BigNumber, BytesLike } from 'ethers'; -import { CombineTier } from '../tiers/combineTier'; -import { Tier } from '../../classes/tierContract'; -import { +import { BigNumberish, BigNumber, BytesLike, ethers } from 'ethers'; +import { concat, op, selectLte, callSize, tierRange, - arg, 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 { @@ -28,266 +24,355 @@ export class CombineTierGenerator { // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; - public stackLength: BigNumberish; - public argumentsLength: BigNumberish; /** * 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) + * @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 + * - (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 (reportVar: string | StateConfig) { - - if (typeof reportVar == "string") { - this.constants = [reportVar]; - this.sources = [ + constructor( + reporter: string | StateConfig, + options?: { + delegatedReport?: boolean, + hasReportForSingleTier?: boolean, + dynamicTierContext?: boolean, + staticTierContext?: BigNumber[] + } + ) { + 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; + + const singleReport_ = { + constants: [ + paddedUInt256( + paddedUInt32('8') + + paddedUInt32('7') + + paddedUInt32('6') + + paddedUInt32('5') + + paddedUInt32('4') + + paddedUInt32('3') + + paddedUInt32('2') + + paddedUInt32('1') + ), + "0" + ], + sources: [ concat([ - op(CombineTier.Opcodes.VAL, 0), - op(CombineTier.Opcodes.ACCOUNT), - op(CombineTier.Opcodes.REPORT), + op(VM.Opcodes.THIS_ADDRESS), + 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)), + op(VM.Opcodes.ADD, 8) + ]), + concat([ + op(VM.Opcodes.CONTEXT, 1), + 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) ]) - ]; - this.stackLength = 3; - this.argumentsLength = 0; - } + ] + }; + + if (typeof reporter == 'string') { + report_ = { + constants: [reporter], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + options?.delegatedReport ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER, 0), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), + ]) + ] + } + } else { - this.constants = reportVar.constants; - this.sources = reportVar.sources; - this.stackLength = reportVar.stackLength; - this.argumentsLength = reportVar.argumentsLength; + report_ = reporter; } + + 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; + } /** * 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 - * - * @returns this + * @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 + * + * @returns CombineTierGenerator */ - public combine ( - reportVar: string | StateConfig, + public combineWith( + reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, + hasReportForSingleTier: boolean = false, + delegatedReport?: boolean, number?: number - ) : this { - - const _buttom: StateConfig = typeof reportVar == "string" - ? new CombineTierGenerator(reportVar) - : reportVar; + ): CombineTierGenerator { + const _buttom = new CombineTierGenerator(reporter, {delegatedReport, hasReportForSingleTier}) const _combiner: StateConfig = { constants: number ? [number] : [], sources: [ concat([ - number - ? op(CombineTier.Opcodes.VAL, 0) - : op(CombineTier.Opcodes.BLOCK_NUMBER), - op(CombineTier.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)) + number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)), ]) ], - stackLength: 2, - argumentsLength: 0 - } + }; + + 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.vmCombiner(_buttom, _combiner); - _result = VM.vmCombiner(this, _result); + 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; - this.stackLength = _result.stackLength; - this.argumentsLength = _result.argumentsLength; return this; } /** * 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 + * @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 CombineTierGenerator */ - public updateReportAtTierRange ( + public updateReport( startTier: Tier, endTier: Tier, number?: number - ) : this { - + ): CombineTierGenerator { const _updater: StateConfig = { constants: number ? [number] : [], sources: [ concat([ - number - ? op(CombineTier.Opcodes.VAL, 0) - : op(CombineTier.Opcodes.BLOCK_NUMBER), + number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_TIMESTAMP), op( - CombineTier.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_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 + 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 + * + * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) + * @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 satDiff ( - reportVar: string | StateConfig, - ) : this { - - const _buttom: StateConfig = typeof reportVar == "string" - ? new CombineTierGenerator(reportVar) - : reportVar; + public differenceFrom(reporter: string | StateConfig, delegatedReport?: boolean): this { + const _buttom = new CombineTierGenerator(reporter, {delegatedReport}) const _differ: StateConfig = { constants: [], - sources: [ - concat([ - op(CombineTier.Opcodes.SATURATING_DIFF) - ]) - ], - stackLength: 1, - argumentsLength: 0 + sources: [concat([op(VM.Opcodes.SATURATING_DIFF)])], }; - 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; } - /** - * 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. + * Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract. + * + * @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 holdingTimeTransferTier ( - reportVar: string | StateConfig, - numberOfBlocks: number | number[], - ) : this { - - const _report: StateConfig = typeof reportVar == "string" - ? new CombineTierGenerator(reportVar) - : reportVar; + public isTierHeldFor(duration: number[]): CombineTierGenerator { const _shifter = paddedUInt256( - BigNumber.from( - "0x" + - paddedUInt32("7") + - paddedUInt32("6") + - paddedUInt32("5") + - paddedUInt32("4") + - paddedUInt32("3") + - paddedUInt32("2") + - paddedUInt32("1") + - paddedUInt32("0") - ) + paddedUInt32('7') + + paddedUInt32('6') + + paddedUInt32('5') + + paddedUInt32('4') + + paddedUInt32('3') + + paddedUInt32('2') + + paddedUInt32('1') + + 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 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]) + 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(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.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(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.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 6), + 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, 8), + op(VM.Opcodes.EXP, 2), + op(VM.Opcodes.MUL, 2), + ]), ], - stackLength: 15, - argumentsLength: 3 }; - _result = VM.vmCombiner(_report, _result); + _result = VM.combiner(this, _result, { position: [3] }); this.constants = _result.constants; this.sources = _result.sources; - this.stackLength = _result.stackLength; - this.argumentsLength = _result.argumentsLength; 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 + * 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 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[]) { - + constructor( + number?: number | number[], + delegatedReport?: boolean, + hasReportForSingleTier?: boolean, + ) { let _result: StateConfig; if (number != undefined) { @@ -295,44 +380,390 @@ 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(CombineTier.Opcodes.VAL, 0) - ]) + ), ], - stackLength: 1, - argumentsLength: 0 - } - } - else { + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])], + }; + } else { _result = { - constants: [], + constants: [ethers.constants.MaxUint256], sources: [ concat([ - op(CombineTier.Opcodes.NEVER), - op(CombineTier.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.BLOCK_TIMESTAMP), op( - CombineTier.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) - ) - ]) + ), + ]), ], - stackLength: 3, - argumentsLength: 0 - } + }; } - super(_result); + super(_result, {hasReportForSingleTier, delegatedReport}); + } +}; + +// /** +// * @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 + * 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}, {hasReportForSingleTier: true, delegatedReport: true}); + } +} + +/** + * @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}, {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 { + // StateConfig Properties of this class + public constants: BigNumberish[]; + public sources: BytesLike[]; + + constructor ( + public readonly tierValues: (number | 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/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts index e348c46..4fd525e 100644 --- a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts +++ b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts @@ -1,20 +1,20 @@ +import { VM } from '../../classes/vm'; +import { Tier } from '../../classes/iTierV2'; +import { EmissionsERC20Context } from '../emissionsERC20'; import { ethers, BigNumberish, BigNumber, BytesLike } from 'ethers'; -import { EmissionsERC20 } from '../emissionsERC20'; -import { Tier } from '../../classes/tierContract'; -import { +import { concat, op, selectLte, callSize, tierRange, - arg, paddedUInt32, paddedUInt256, selectLteLogic, - selectLteMode + selectLteMode, + parseUnits, } from '../../utils'; - /** * @public * A type for newing Emissions script @@ -43,42 +43,58 @@ export type EmissionsConfig = { tier7: number; tier8: number; }; - numberOfIncrements?: number; + numberOfIncrements?: number; + tierContext?: BigNumber[]; }; - /** * @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[]; - public stackLength: BigNumberish; - public argumentsLength: BigNumberish; /** * Constructor for this class - * + * * @param config - An EmissionsConfig */ - constructor (config: EmissionsConfig) { - - const eighteenZeros = "000000000000000000"; - const sixZeros = "000000"; - - 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 + constructor(config: EmissionsConfig) { + 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 // 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); @@ -89,44 +105,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) + const PERIODIC_REWARD_TIER5 = BigNumber.from(config.periodicRewards.tier5) .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) + const PERIODIC_REWARD_TIER6 = BigNumber.from(config.periodicRewards.tier6) .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) + const PERIODIC_REWARD_TIER7 = BigNumber.from(config.periodicRewards.tier7) .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) + const PERIODIC_REWARD_TIER8 = BigNumber.from(config.periodicRewards.tier8) .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); @@ -140,63 +160,43 @@ 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(EmissionsERC20.Opcodes.VAL, arg(0)), - op(EmissionsERC20.Opcodes.VAL, arg(1)), - op(EmissionsERC20.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), - ]); - - // prettier-ignore - const MULTIPLIER = () => - concat([ - PROGRESS(), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANT, 5 + CONTEXT_.constants.length), + op(VM.Opcodes.CONSTANT, 6 + CONTEXT_.constants.length), + op(VM.Opcodes.MUL, 2), ]); // prettier-ignore const FN = () => concat([ REWARD(), - MULTIPLIER(), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.VAL, 4), - op(EmissionsERC20.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 4), + 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.CONSTANT, 0), + op(VM.Opcodes.BLOCK_TIMESTAMP), op( - EmissionsERC20.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), ]); @@ -204,17 +204,24 @@ 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.ITIERV2_REPORT), ]); // prettier-ignore const TIER_REPORT = () => concat([ - op(EmissionsERC20.Opcodes.VAL, 0), - op(EmissionsERC20.Opcodes.CLAIMANT_ACCOUNT), - op(EmissionsERC20.Opcodes.REPORT), + op(VM.Opcodes.CONSTANT, 1), + op( + VM.Opcodes.CONTEXT, + EmissionsERC20Context.ClaimantAccount + ), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), ]); // prettier-ignore @@ -223,73 +230,84 @@ export class LinearEmissions { CURRENT_BLOCK_AS_REPORT(), TIER_REPORT(), LAST_CLAIM_REPORT(), - op(EmissionsERC20.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.BLOCK_TIMESTAMP), op( - EmissionsERC20.Opcodes.SELECT_LTE, - selectLte(selectLteLogic.any, selectLteMode.max, 2) + VM.Opcodes.SELECT_LTE, + selectLte(selectLteLogic.every, 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.CONSTANT, 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, BN_ONE, BN_ONE_REWARD, + ...CONTEXT_.constants ]; this.sources = [SOURCE(), FN()]; - this.stackLength = (SOURCE().length + FN().length) / 2; - this.argumentsLength = 2 - }; - + } } - /** * @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[]; - public stackLength: BigNumberish; - public argumentsLength: BigNumberish; - /** * Constructor for this class - * + * * @param config - An EmissionsConfig */ - constructor (config: EmissionsConfig) { - - - const eighteenZeros = "000000000000000000"; - const sixZeros = "000000"; - - 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 + constructor(config: EmissionsConfig) { + 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 // 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); @@ -300,142 +318,191 @@ 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, PERIODIC_REWARD_PER_TIER, PERIODIC_INC_PER_TIER, @@ -444,124 +511,198 @@ export class SequentialEmissions { BN_ONE_REWARD, config.numberOfIncrements ? config.numberOfIncrements : 0, 1, - "10", - 2 + '10', + 2, + ...CONTEXT_.constants ]; - + this.sources = [ concat([ - op(EmissionsERC20.Opcodes.NEVER), - op(EmissionsERC20.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.BLOCK_TIMESTAMP), op( - EmissionsERC20.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_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.CONSTANT, 1), + op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), + 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), + 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), + op(VM.Opcodes.ZIPMAP, callSize(1, 3, 3)), + op(VM.Opcodes.ADD, 8), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 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.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 + CONTEXT_.constants.length), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 12 + CONTEXT_.constants.length), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANT, 11 + CONTEXT_.constants.length), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.DIV, 2), + 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 + CONTEXT_.constants.length), + 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.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.CONSTANT, 13 + CONTEXT_.constants.length), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 11 + CONTEXT_.constants.length), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.DIV, 2), + 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 + 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 + CONTEXT_.constants.length), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANT, 13 + CONTEXT_.constants.length), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.EAGER_IF), + 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 + CONTEXT_.constants.length), + 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), + ]), ]; - - this.stackLength = ((this.sources[0].length + this.sources[1].length) / 2) + 25; - this. argumentsLength = 4; } +} + +/** + * @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, EmissionsERC20Context.ClaimantAccount), + op(VM.Opcodes.EQUAL_TO), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.THIS_ADDRESS), + op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), + 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, EmissionsERC20Context.ClaimantAccount), + 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 cdbd7df..5115176 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -1,5 +1,5 @@ -import { ethers, BigNumberish, BigNumber, BytesLike } from 'ethers'; -import { Sale } from '../sale'; +import { BigNumber, BigNumberish, BytesLike } from 'ethers'; +import { SaleContext, SaleStorage } from '../sale'; import { StateConfig, VM } from '../../classes/vm'; import { parseUnits, concat, op } from '../../utils'; @@ -7,9 +7,19 @@ import { parseUnits, concat, op } 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 minimum and maximum buy cap, i.e. cannot buy less than a specefied + * amount and more than another specified amount + */ both, } @@ -27,15 +37,12 @@ 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 +52,6 @@ export class PriceCurve { constructor(stateConfig: StateConfig) { this.constants = stateConfig.constants; this.sources = stateConfig.sources; - this.stackLength = stateConfig.stackLength; - this.argumentsLength = stateConfig.argumentsLength; } /** @@ -63,53 +68,60 @@ export class PriceCurve { * is gone into extra time. * @param extraTimeDiscount - The amount of discount the address will receive. * - * @returns this + * @returns PriceCurve * */ public applyExtraTimeDiscount( endTimestamp: number, extraTimeDiscountThreshold: number, extraTimeDiscount: number - ): this { - const EXTRA_TIME_DISCOUNT = (i: number) => + ): PriceCurve { + 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.CONSTANT, 0), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.CONSTANT, 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.CONSTANT, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 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,213 +131,36 @@ 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. - * - * @returns this + * @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 PriceCurve * */ public applyTierDiscount( tierAddress: string, tierDiscount: number[], - tierActivation?: (number | string)[] - ): this { - const stateConfig = VM.tierBasedDiscounter( + options?: { + tierActivation?: (number | string)[], + tierContext?: BigNumber[] + } + + ): PriceCurve { + const _discountConfig = VM.setDiscountForTiers( this, tierAddress, tierDiscount, - { tierActivation } + { + tierActivation: options?.tierActivation, + tierContext: options?.tierContext + } ); - 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; - - 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; + this.constants = _discountConfig.constants; + this.sources = _discountConfig.sources; - return this; - } - } else { - throw new Error('Invalid arguments'); - } + return this; } } @@ -344,22 +179,16 @@ 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) { - super({ - constants: [parseUnits(BigNumber.from(price).toString(), erc20decimals)], - sources: [FixedPrice.FIXED_PRICE_SOURCES()], - stackLength: 1, - argumentsLength: 0, - }); + constructor(price: number, reserveTokenDecimals: number = 18) { + super( + VM.constant(parseUnits((price).toString(), reserveTokenDecimals)) + ); } - - // fixed price script - public static FIXED_PRICE_SOURCES = () => concat([op(Sale.Opcodes.VAL, 0)]); } /** @@ -384,7 +213,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 * @@ -395,7 +224,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; @@ -403,59 +232,57 @@ 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()), + parseUnits(weightChange.toFixed(17).toString()), startTimestamp, parseUnits((1).toString()), ], sources: [vLBP.vLBP_SOURCES()], - stackLength: 15, - argumentsLength: 0, }); } //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.CONSTANT, 0), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANT, 1), + 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.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.MAX, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), + op(VM.Opcodes.DIV, 2), ]); } /** - * @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 erc20decimals - (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 * @@ -465,84 +292,92 @@ export class IncreasingPrice extends PriceCurve { endPrice: number, startTimestamp: number, endTimestamp: number, - erc20decimals: number = 18 + 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(), erc20decimals), - parseUnits(endPrice.toString(), erc20decimals), - parseUnits(priceChange.toFixed(5).toString()), + parseUnits(startPrice.toString(), reserveTokenDecimals), + parseUnits(endPrice.toString(), reserveTokenDecimals), + parseUnits(priceChange.toFixed(reserveTokenDecimals != 18 ? reserveTokenDecimals : 17).toString(), reserveTokenDecimals), startTimestamp, ], - sources: [IncreasingPrice.INC_PRICE_SOURCES()], - stackLength: 10, - argumentsLength: 0, + 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(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.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), + isInc ? op(VM.Opcodes.MIN, 2) : op(VM.Opcodes.MAX, 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 - * 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 - * //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 { +export class BetweenTimestamps { // 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.CONSTANT, 0), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.EVERY, 2), ]), ]; - this.stackLength = 3; - this.argumentsLength = 0; } /** @@ -550,110 +385,140 @@ 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. * @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): 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, + reserveTokenDecimals: number = 18 + ): BetweenTimestamps { + const ExtraTimeAmount = parseUnits( + extraTimeAmount.toString(), + reserveTokenDecimals + ); + const ExtraTime = extraTime * 60 + this.endTimestamp; + + let _extraTime: StateConfig = { + constants: [ExtraTime, ExtraTimeAmount], + sources: [ + concat([ + 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.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.EVERY, 2), + ]), + ], + }; - 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; + _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. - * - * @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. + * 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. * - * @param ownerAddress - The address that will be the owner, only this wallet address can start or end a raise if this method is applied. + * @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 * - * @returns this + * @param minimumRaise - the minimumRaise parameter of the raise which is passed at the time of + * sale's deployment as part of the SaleConfig * + * @returns BetweenTimestamps */ - 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; + public afterMinimumRaise( + minimumRaise: number, + reserveTokenDecimals: number = 18 + ): BetweenTimestamps { + const MinimumRaise = parseUnits(minimumRaise.toString(), reserveTokenDecimals); + + let _minimumRaise: StateConfig = { + constants: [MinimumRaise], + sources: [ + concat([ + op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.EVERY, 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 - * 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 - * //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 { +export class BetweenBlocks { // 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.CONSTANT, 0), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.EVERY, 2), ]), ]; - this.stackLength = 3; - this.argumentsLength = 0; } /** @@ -667,55 +532,344 @@ export class SaleDurationInBlocks { * @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 - ): 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), - ]); + extraTimeAmount: number, + reserveTokenDecimals: number = 18 + ): BetweenBlocks { + const ExtraTimeAmount = parseUnits( + extraTimeAmount.toString(), + reserveTokenDecimals + ); + const ExtraTime = extraTimeBlocks + this.endBlockNumber; + + let _extraTime: StateConfig = { + constants: [ExtraTime, ExtraTimeAmount], + sources: [ + concat([ + 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.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.EVERY, 2), + ]), + ], + }; - const ExtraTimeAmount = parseUnits(extraTimeAmount.toString()); - const ExtraTime = extraTimeBlocks + this.blockNumber; + _extraTime = VM.combiner(this, _extraTime, { position: [6] }); - this.constants.push(ExtraTime, ExtraTimeAmount); - this.sources[0] = concat([this.sources[0], EXTRA_TIME()]); - this.stackLength = Number(this.stackLength) + 10; + 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. + * 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. * - * @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. + * @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 * - * @param ownerAddress - The address that will be the owner, only this wallet address can start or end a raise if this method is applied. + * @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 + ): BetweenBlocks { + const MinimumRaise = parseUnits(minimumRaise.toString(), reserveTokenDecimals); + + let _minimumRaise: StateConfig = { + constants: [MinimumRaise], + sources: [ + concat([ + op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.EVERY, 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 BuyAmount { + // StateConfig Properties of this class + public constants: BigNumberish[]; + public sources: BytesLike[]; + + /** + * Constructor for this class * + * @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. */ - 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; + 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 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 BuyAmount + * + */ + public applyWalletCap( + mode: BuyCapMode, + options?: { + minWalletCap?: number; + maxWalletCap?: number; + tierAddress?: string; + tierMultiplier?: number[]; + tierActivation?: (number | string)[]; + tierContext?: BigNumber[] + } + ): BuyAmount { + const MIN_CAP_SOURCES = (i: number) => + concat([ + op(VM.Opcodes.CONSTANT, 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 !== undefined) { + options.minWalletCap = options.minWalletCap === 0 ? 1 : 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 !== undefined) { + let maxCapConfig: StateConfig; + + if (options.tierMultiplier && options.tierAddress) { + maxCapConfig = VM.setMultiplierForTiers( + { + constants: [parseUnits(options.maxWalletCap.toString())], + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])], + }, + options.tierAddress, + options.tierMultiplier, + { + tierActivation: options.tierActivation, + tierContext: options.tierContext + } + ); + 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), + ]); + + this.constants = maxCapConfig.constants; + this.sources = maxCapConfig.sources; + + } + else { + maxCapConfig = { + constants: [parseUnits(options.maxWalletCap.toString()).add(1)], + 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), + ]); + + this.constants = maxCapConfig.constants; + this.sources = maxCapConfig.sources; + } + } + if ( + mode == BuyCapMode.both && + options?.minWalletCap && + options?.maxWalletCap !== undefined + ) { + options.minWalletCap = options.minWalletCap === 0 ? 1 : options.minWalletCap; + let bothCapConfig: StateConfig; + + if (options.tierMultiplier && options.tierAddress) { + bothCapConfig = { + constants: [parseUnits(options.maxWalletCap.toString())], + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])], + }; + bothCapConfig = VM.setMultiplierForTiers( + bothCapConfig, + options.tierAddress, + options.tierMultiplier, + { + tierActivation: options.tierActivation, + tierContext: options.tierContext + } + ); + + 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), + ]); + + 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.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), + ]); + + 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 SaleVmFrom { + // 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: + | BetweenTimestamps + | BetweenBlocks + | StateConfig, + public readonly buyCapScript: BuyAmount | 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/stake.ts b/src/contracts/stake.ts new file mode 100644 index 0000000..59abdba --- /dev/null +++ b/src/contracts/stake.ts @@ -0,0 +1,323 @@ +import { ITierV2 } from '../classes/iTierV2'; +import { Stake__factory, StakeFactory__factory } from '../typechain'; +import { TxOverrides, ReadTxOverrides } from '../classes/rainContract'; +import { + Signer, + BigNumber, + BigNumberish, + BytesLike, + ContractTransaction, +} from 'ethers'; + +/** + * @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 ITierV2 { + 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.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 stakeConfig - Configuration for deploying a Stake @see StakeDeployArgs + * @param overrides - @see TxOverrides + * @returns A new Stake instance + * + */ + public static deploy = async ( + signer: Signer, + stakeConfig: StakeDeployArgs, + overrides: TxOverrides = {} + ): Promise => { + const stakeFactory = StakeFactory__factory.connect( + this.getBookAddress(await this.getChainId(signer)), + signer + ); + + 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); + }; + + /** + * 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 + * 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; + + /** + * 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; + + /** + * Returns the name of the token. + * + * @param overrides - @see ReadTxOverrides + * @returns The name of this Stake token + */ + public readonly name: (overrides?: ReadTxOverrides) => 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; + + /** + * 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; + + /** + * 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, + 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; + initialRatio: BigNumberish; + name: string; + symbol: string; +}; diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index 82679f2..0d274d6 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -1,8 +1,9 @@ -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 { Signer, BigNumberish, BigNumber, BytesLike } 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 @@ -13,18 +14,41 @@ import { CombineTierFactory__factory } from '../../typechain'; * 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; +}; /** * @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 { /** - * local opcode to put tier report account on the stack + * 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: number; -}; + Account, + /** + * 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 +} + +/** + * @public + * Enum for operand of the CombineTier's STORAGE opcode + */ +export enum CombineTierStorage { + /** + * length of CombineTier's valid storage opcodes - 0 + */ + length, +} /** * @public @@ -59,7 +83,9 @@ export type CombineTierOpcodes = typeof AllStandardOps & { * const alwaysTier = await CombineTier.getAlwaysTier(signer); * ``` */ -export class CombineTier extends TierContract { +export class CombineTier extends ITierV2 { + protected static readonly nameBookReference: string = 'combineTierFactory'; + /** * Constructs a new CombineTier from a known address. * @@ -68,22 +94,14 @@ 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'; + 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.storageOpcodesRange = _combineTier.storageOpcodesRange; + this.packedFunctionPointers = _combineTier.packedFunctionPointers; + this.supportsInterface = _combineTier.supportsInterface; + } /** * Checks if address is registered as a child contract of this contract in a specific network. @@ -152,19 +170,85 @@ export class CombineTier extends TierContract { return new CombineTier(address, signer); }; + /** + * @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 connect = (signer: Signer): CombineTier => { return new CombineTier(this.address, signer); }; /** - * It is NOT implemented in CombineTiers. Always will throw an error + * Returns the pointer and length for combineTier's storage opcodes + * + * @param overrides - @see ReadTxOverrides + * @returns a StorageOpcodesRange */ - public readonly setTier = async ( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: TxOverrides - ): Promise => { - throw new Error('SET TIER: NOT IMPLEMENTED'); - }; -} + 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 + */ + public readonly supportsInterface: (interfaceId_: BytesLike, 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) + } + 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) + } + +} \ No newline at end of file diff --git a/src/contracts/tiers/erc20BalanceTier.ts b/src/contracts/tiers/erc20BalanceTier.ts deleted file mode 100644 index e4f15b2..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/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/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/verifyTier.ts b/src/contracts/tiers/verifyTier.ts index e3c6cf8..ecf724c 100644 --- a/src/contracts/tiers/verifyTier.ts +++ b/src/contracts/tiers/verifyTier.ts @@ -1,5 +1,5 @@ -import { Signer, BytesLike, BigNumberish } from 'ethers'; -import { TierContract } from '../../classes/tierContract'; +import { Signer } from 'ethers'; +import { ITierV2 } from '../../classes/iTierV2'; import { TxOverrides } from '../../classes/rainContract'; import { VerifyTierFactory__factory } from '../../typechain'; @@ -29,19 +29,19 @@ import { VerifyTierFactory__factory } from '../../typechain'; * ``` * */ -export class VerifyTier extends TierContract { +export class VerifyTier extends ITierV2 { 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) { + super(address, signer); VerifyTier.checkAddress(address); - super(address, signer); } /** @@ -72,6 +72,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 +96,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 6e08d94..94913ca 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 @@ -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); @@ -94,7 +92,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; @@ -145,6 +143,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); }; @@ -345,19 +350,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. + * @returns 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..453047c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,34 +4,98 @@ 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'; export * from './contracts/emissionsERC20'; -export * from './contracts/gatednft'; export * from './contracts/noticeBoard'; 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/autoApprove'; 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 './rule-builder/ruleBuilder'; +export * from './rule-builder/vmbook'; +export * from './rule-builder/types'; + +export * from './jsvm/RainJSVM'; +export * from './jsvm/CombineTierJSVM'; +export * from './jsvm/EmissionsERC20JSVM'; +export * from './jsvm/SaleJSVM'; +export * from './jsvm/simulation/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'; + +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 './jsvm/simulation/types'; -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'; export * from './contracts/generics/erc721'; export * from './contracts/generics/erc1155'; +export * from './contracts/generics/seedDance'; + +export * from './vm/parser'; +export * from './vm/OpMeta'; +export * from './vm/formatter'; \ No newline at end of file diff --git a/src/jsvm/CombineTierJSVM.ts b/src/jsvm/CombineTierJSVM.ts new file mode 100644 index 0000000..58eb907 --- /dev/null +++ b/src/jsvm/CombineTierJSVM.ts @@ -0,0 +1,47 @@ +import { StateConfig } from '../classes/vm'; +import { CallOptions, RainJSVM } from './RainJSVM'; +import { CombineTierStorage } from '../contracts/tiers/combineTier'; + + +/** + * @public - The javascript version of CombineTierVM which inherits RainJSVM 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 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 new file mode 100644 index 0000000..77d0841 --- /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 RainJSVM 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 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 + } + ); + } + +} \ No newline at end of file diff --git a/src/jsvm/OrderbookJSVM.ts b/src/jsvm/OrderbookJSVM.ts new file mode 100644 index 0000000..95a5ffd --- /dev/null +++ b/src/jsvm/OrderbookJSVM.ts @@ -0,0 +1,94 @@ +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 RainJSVM 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 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 + } + ); + } + + // @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..95a3c64 --- /dev/null +++ b/src/jsvm/RainJSVM.ts @@ -0,0 +1,478 @@ +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 + */ +export type CallOptions = { + signer?: Signer; + contract?: string | Contract; + applyOpFn?: FnPtrsJSVM; + storageOpFn?: FnPtrsJSVM; + 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 RainJSVM will run based on. + */ + private readonly state: StateJSVM; + + /** + * 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; + + /** + * 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; + } + + } + + /** + * 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].call(this, 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; + } + +} diff --git a/src/jsvm/SaleJSVM.ts b/src/jsvm/SaleJSVM.ts new file mode 100644 index 0000000..09662af --- /dev/null +++ b/src/jsvm/SaleJSVM.ts @@ -0,0 +1,126 @@ +import { BigNumber } from "ethers"; +import { StateConfig } from "../classes/vm"; +import { CallOptions, RainJSVM, FnPtrsJSVM, StateJSVM } from "./RainJSVM"; +import { ERC20 } from "../contracts/generics/erc20"; +import { Sale, SaleContext, SaleStorage } from "../contracts/sale"; + + +/** + * @public - The javascript version of SaleVM which inherits RainJSVM 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 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") + }, + }; + +} diff --git a/src/jsvm/lib/FixedPointMath.ts b/src/jsvm/lib/FixedPointMath.ts new file mode 100644 index 0000000..e1df2ca --- /dev/null +++ b/src/jsvm/lib/FixedPointMath.ts @@ -0,0 +1,56 @@ +import { BigNumber } from "ethers"; +import { eighteenZeros } from "../simulation/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; + 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()) +} + +/** + * @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) +} + +/** + * @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) +} diff --git a/src/jsvm/lib/Math.ts b/src/jsvm/lib/Math.ts new file mode 100644 index 0000000..a0eaf0d --- /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/lib/SaturatingMath.ts b/src/jsvm/lib/SaturatingMath.ts new file mode 100644 index 0000000..1ccf0b5 --- /dev/null +++ b/src/jsvm/lib/SaturatingMath.ts @@ -0,0 +1,38 @@ +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; +} + +/** + * @public + * + */ +export const saturatingMul = (value1: BigNumber, value2: BigNumber) : BigNumber => { + value1 = value1.mul(value2); + value1 = value1.gt(ethers.constants.MaxUint256) + ? ethers.constants.MaxUint256 + : value1; + + return value1; +} + +/** + * @public + */ +export const saturatingSub = (value1: BigNumber, value2: BigNumber) : BigNumber => { + value1 = value1.sub(value2); + value1 = value1.isNegative() + ? ethers.constants.Zero + : value1 + + return value1; +} diff --git a/src/jsvm/lib/TierReport.ts b/src/jsvm/lib/TierReport.ts new file mode 100644 index 0000000..d35f03a --- /dev/null +++ b/src/jsvm/lib/TierReport.ts @@ -0,0 +1,31 @@ +import { BigNumber } from "ethers"; +import { paddedUInt256, paddedUInt32 } from "../../utils"; + + +/** + * @public + */ +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..2b63752 --- /dev/null +++ b/src/jsvm/lib/TierwiseCombine.ts @@ -0,0 +1,132 @@ +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); + 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); +} + +/** + * @public + */ +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); +} diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts new file mode 100644 index 0000000..6205811 --- /dev/null +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts @@ -0,0 +1,32 @@ +import { BigNumber } from "ethers"; +import { ERC1155 } from "../../../contracts/generics/erc1155"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..a9e5d01 --- /dev/null +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts @@ -0,0 +1,47 @@ +import { BigNumber } from "ethers"; +import { ERC1155 } from "../../../contracts/generics/erc1155"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..5907b02 --- /dev/null +++ b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts @@ -0,0 +1,28 @@ +import { ERC20 } from "../../../contracts/generics/erc20"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..2725b57 --- /dev/null +++ b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts @@ -0,0 +1,26 @@ +import { ERC20 } from "../../../contracts/generics/erc20"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..563c4bc --- /dev/null +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts @@ -0,0 +1,31 @@ +import { ERC20 } from "../../../../contracts/generics/erc20"; +import { paddedUInt160 } from "../../../../utils"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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..d044df5 --- /dev/null +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts @@ -0,0 +1,29 @@ +import { ERC20 } from "../../../../contracts/generics/erc20"; +import { paddedUInt160 } from "../../../../utils"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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..41afba8 --- /dev/null +++ b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts @@ -0,0 +1,28 @@ +import { ERC721 } from "../../../contracts/generics/erc721"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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'); +} diff --git a/src/jsvm/ops/erc721/OpERC721OwnerOf.ts b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts new file mode 100644 index 0000000..61bd614 --- /dev/null +++ b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts @@ -0,0 +1,32 @@ +import { BigNumber } from "ethers"; +import { ERC721 } from "../../../contracts/generics/erc721"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..fa0a90e --- /dev/null +++ b/src/jsvm/ops/evm/OpBlockNumber.ts @@ -0,0 +1,31 @@ +import { BigNumber } from "ethers"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..7da2708 --- /dev/null +++ b/src/jsvm/ops/evm/OpCaller.ts @@ -0,0 +1,24 @@ +import { BigNumber } from "ethers"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..835ce15 --- /dev/null +++ b/src/jsvm/ops/evm/OpThisAddress.ts @@ -0,0 +1,17 @@ +import { BigNumber } from "ethers"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..2cc74f1 --- /dev/null +++ b/src/jsvm/ops/evm/OpTimestamp.ts @@ -0,0 +1,27 @@ +import { BigNumber } from "ethers"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..6a501b7 --- /dev/null +++ b/src/jsvm/ops/math/OpAdd.ts @@ -0,0 +1,30 @@ +import { ethers } from "ethers"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..d40b761 --- /dev/null +++ b/src/jsvm/ops/math/OpDiv.ts @@ -0,0 +1,29 @@ +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..a0f3789 --- /dev/null +++ b/src/jsvm/ops/math/OpExp.ts @@ -0,0 +1,34 @@ +import { ethers } from "ethers"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..359e470 --- /dev/null +++ b/src/jsvm/ops/math/OpMax.ts @@ -0,0 +1,17 @@ +import { max } from "../../lib/Math"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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(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 new file mode 100644 index 0000000..6ff5b22 --- /dev/null +++ b/src/jsvm/ops/math/OpMin.ts @@ -0,0 +1,18 @@ +import { min } from "../../lib/Math"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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(min(items_)); + + } + 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..8f877c7 --- /dev/null +++ b/src/jsvm/ops/math/OpMod.ts @@ -0,0 +1,29 @@ +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..45c1653 --- /dev/null +++ b/src/jsvm/ops/math/OpMul.ts @@ -0,0 +1,29 @@ +import { ethers } from "ethers"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..f37449a --- /dev/null +++ b/src/jsvm/ops/math/OpSub.ts @@ -0,0 +1,32 @@ +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..fe57dce --- /dev/null +++ b/src/jsvm/ops/math/fixedPoint/OpScale18.ts @@ -0,0 +1,19 @@ +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; +import { scale18 } from "../../../lib/FixedPointMath"; + + +/** + * @public + */ +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'); +} diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts new file mode 100644 index 0000000..387b522 --- /dev/null +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts @@ -0,0 +1,21 @@ +import { fixedPointDiv } from "../../../lib/FixedPointMath"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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..cefbf25 --- /dev/null +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts @@ -0,0 +1,21 @@ +import { fixedPointMul } from "../../../lib/FixedPointMath"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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..2088d4f --- /dev/null +++ b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts @@ -0,0 +1,17 @@ +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; +import { scaleBy } from "../../../lib/FixedPointMath"; + + +/** + * @public + */ +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..d9b16bb --- /dev/null +++ b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts @@ -0,0 +1,18 @@ +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; +import { scaleN } from "../../../lib/FixedPointMath"; + + +/** + * @public + */ +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..77f9b12 --- /dev/null +++ b/src/jsvm/ops/math/logic/OpAny.ts @@ -0,0 +1,34 @@ +import { ethers } from "ethers"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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 = _item; + 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..26ee17e --- /dev/null +++ b/src/jsvm/ops/math/logic/OpEagerIf.ts @@ -0,0 +1,20 @@ +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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..41b0005 --- /dev/null +++ b/src/jsvm/ops/math/logic/OpEqualTo.ts @@ -0,0 +1,20 @@ +import { ethers } from "ethers"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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..0b1bcce --- /dev/null +++ b/src/jsvm/ops/math/logic/OpEvery.ts @@ -0,0 +1,35 @@ +import { ethers } from "ethers"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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 (i === 0) _check = _item; + + 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..e1356ef --- /dev/null +++ b/src/jsvm/ops/math/logic/OpGreaterThan.ts @@ -0,0 +1,20 @@ +import { ethers } from "ethers"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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..6368941 --- /dev/null +++ b/src/jsvm/ops/math/logic/OpIsZero.ts @@ -0,0 +1,19 @@ +import { ethers } from "ethers"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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..447e8af --- /dev/null +++ b/src/jsvm/ops/math/logic/OpLessThan.ts @@ -0,0 +1,20 @@ +import { ethers } from "ethers"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; + + +/** + * @public + */ +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..b431597 --- /dev/null +++ b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts @@ -0,0 +1,27 @@ +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; +import { saturatingAdd } from "../../../lib/SaturatingMath"; +import { ethers } from "ethers"; + + +/** + * @public + */ +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..fe1c2f6 --- /dev/null +++ b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts @@ -0,0 +1,26 @@ +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; +import { saturatingMul } from "../../../lib/SaturatingMath"; +import { ethers } from "ethers"; + + +/** + * @public + */ +export function OpSaturatingMul(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 = 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 new file mode 100644 index 0000000..a4b6350 --- /dev/null +++ b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts @@ -0,0 +1,28 @@ +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; +import { saturatingSub } from "../../../lib/SaturatingMath"; + + +/** + * @public + */ +export function OpSaturatingSub(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 = saturatingSub(_accumulator, _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/tier/OpITierV2Report.ts b/src/jsvm/ops/tier/OpITierV2Report.ts new file mode 100644 index 0000000..b507fdc --- /dev/null +++ b/src/jsvm/ops/tier/OpITierV2Report.ts @@ -0,0 +1,29 @@ +import { ITierV2 } from "../../../classes/iTierV2"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..4853b0b --- /dev/null +++ b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts @@ -0,0 +1,35 @@ +import { ITierV2, Tier } from "../../../classes/iTierV2"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + + +/** + * @public + */ +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..f73196b --- /dev/null +++ b/src/jsvm/ops/tier/OpSaturatingDiff.ts @@ -0,0 +1,18 @@ +import { RainJSVM, StateJSVM } from "../../RainJSVM"; +import { saturatingDiff } from "../../lib/TierwiseCombine"; + + +/** + * @public + */ +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..c52f25e --- /dev/null +++ b/src/jsvm/ops/tier/OpSelectLte.ts @@ -0,0 +1,24 @@ +import { RainJSVM, StateJSVM } from "../../RainJSVM"; +import { selectLte } from "../../lib/TierwiseCombine"; + + +/** + * @public + */ +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_) + + 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..3da5a47 --- /dev/null +++ b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts @@ -0,0 +1,20 @@ +import { RainJSVM, StateJSVM } from "../../RainJSVM"; +import { updateTimesForTierRange } from "../../lib/TierReport"; + + +/** + * @public + */ +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..eb7000b --- /dev/null +++ b/src/jsvm/simulation/CombineTierSimulation.ts @@ -0,0 +1,75 @@ +import { paddedUInt160, paddedUInt256 } from "../../utils"; +import { CombineTierJSVM } from "../CombineTierJSVM"; +import { sStore } from "./types"; +import { vmSimulation } from "./vmSimulation"; + + +/** + * @public + * A class for creating a simulation environment for simulating a CombineTier contract off-chain using JSVM. + * + * @remarks + * 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: 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); + } + else throw new Error("no script to execute") + } +} diff --git a/src/jsvm/simulation/EmissionsERC20Simulation.ts b/src/jsvm/simulation/EmissionsERC20Simulation.ts new file mode 100644 index 0000000..fa8f06d --- /dev/null +++ b/src/jsvm/simulation/EmissionsERC20Simulation.ts @@ -0,0 +1,178 @@ +import { BigNumber, ethers } from "ethers"; +import { paddedUInt160, paddedUInt256, paddedUInt32 } from "../../utils"; +import { EmissionsERC20JSVM } from "../EmissionsERC20JSVM"; +import { sStore } from "./types"; +import { vmSimulation } from "./vmSimulation"; + + +/** + * @public + * A class for creating a simulation environment for simulating a EmissionsERC20 contract off-chain using JSVM. + * + * @remarks + * 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: sStore = {}; + + /** + * 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: 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) + + 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) + + 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/jsvm/simulation/Matchmaker.ts b/src/jsvm/simulation/Matchmaker.ts new file mode 100644 index 0000000..e080d52 --- /dev/null +++ b/src/jsvm/simulation/Matchmaker.ts @@ -0,0 +1,155 @@ +import { OrderbookJSVM } from "./../OrderbookJSVM"; +import { OrderbookSimulation } from "./OrderbookSimulation"; +import { parseUnits } from "../../utils"; +import { sOrder, eighteenZeros, ReserveBook } from "./types"; + + +/** + * @public + * A class for finding matches among orders off-chain in a simulated environment + */ +export class MatchMaker extends OrderbookSimulation { + + /** + * @public + * The ReserveBook property of the matchmaker + */ + public reservebook: ReserveBook = {}; + + /** + * @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 + * + * @returns void + */ + public async addOrder(order: sOrder): 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].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) + // } + // } + // } + + /** + * @public + * Method to evaluate and ReserveBook the order's script + * + * @param order - the order to be evaluated + * + * @returns void + */ + 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 p1 = result1[1]; + + 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 p2 = result2[1]; + + this.reservebook[order.orderHash] = { + minP: p2.gt(p1) ? p1 : p2, + maxP: p2.gt(p1) ? p2 : p1, + } + } + + /** + * @public + * The main method to perform matchmaking and find matches among orders + * + * @param bounty - the Bounty Vault IDs + */ + public async makeMatch(bounty: {aBounty: string, bBounty: string}) : Promise<{orderA: string, orderB: string}[]> { + + const orderHashes = Object.keys(this.orders); + let result = []; + + if (orderHashes.length > 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() + ) { + 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]}) + } + } + } + } + } + } + } + } + } + } + } + return result; + } + +} + + + diff --git a/src/jsvm/simulation/OrderbookSimulation.ts b/src/jsvm/simulation/OrderbookSimulation.ts new file mode 100644 index 0000000..3e69aeb --- /dev/null +++ b/src/jsvm/simulation/OrderbookSimulation.ts @@ -0,0 +1,508 @@ +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, + sOrders, + sVaults, + sClearConfig, + sClearedFunds, + eighteenZeros, + sClearedCounterPartyFunds +} 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 { + + /** + * @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"); + } + +} diff --git a/src/jsvm/simulation/SaleSimulation.ts b/src/jsvm/simulation/SaleSimulation.ts new file mode 100644 index 0000000..98452af --- /dev/null +++ b/src/jsvm/simulation/SaleSimulation.ts @@ -0,0 +1,247 @@ +import { BigNumber, ethers } from "ethers"; +import { SaleStorage } from "../../contracts/sale"; +import { paddedUInt160 } from "../../utils"; +import { SaleJSVM } from "../SaleJSVM"; +import { vmSimulation } from "./vmSimulation"; +import { eighteenZeros, sERC20 } from "./types"; +import { FnPtrsJSVM, StateJSVM } from "../RainJSVM"; + + +/** + * @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: 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/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 new file mode 100644 index 0000000..f546b44 --- /dev/null +++ b/src/jsvm/simulation/vmSimulation.ts @@ -0,0 +1,428 @@ +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 { sERC20s, sITiers, sERC721s, sERC1155s } 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: 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 = {}; + + /** + * 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 = {}; + + /** + * 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 = {}; + + /** + * 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 FnPtrsJSVM and @see OpJSVM + */ + protected OpFns: FnPtrsJSVM = { + + [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?: 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])) { + 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: 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]] + } + } + 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") + } +} diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts new file mode 100644 index 0000000..44279a5 --- /dev/null +++ b/src/rule-builder/ruleBuilder.ts @@ -0,0 +1,789 @@ +import { vmbook } from './vmbook'; +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, + ConditionGroup, + Currency, + eConditionGroup, + eCurrency, + eRule, + 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 get the multi-currency rule-based StateConfig: + * const vmStateConfig = new RuleBuilder([currency1, currency2, ...]) + * + * // to get a single condition's StateConfig of a single Rule: + * const conditions = RuleBuilder.getConditionConfig(condition) + * + * // to get a ConditionGroup StateConfig: + * const rule = RuleBuilder.getConditionGroup(conditionGroup) + * + * //to get 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.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 defaults_: 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[] = []; + 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.ifelse( + VM.stack(count * 2), + this.getQPConfig(rule.quantity), + VM.stack(totalCount + (i * 2)), + false + ) + ); + ps_.push( + VM.ifelse( + VM.stack((count * 2) + 1), + this.getQPConfig(rule.price), + VM.stack(totalCount + ((i * 2) + 1)), + false + ) + ); + count++; + } + + if (currencies[i].rules.length > 0) { + defaults_.push(this.getQPConfig(currencies[i].default.quantity)); + defaults_.push(this.getQPConfig(currencies[i].default.price)); + + 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([])] }); + defaults_.push({ constants: [], sources: [concat([])] }) + defaults_.push({ constants: [], sources: [concat([])] }); + + p_ = this.getQPConfig(currencies[i].default.price); + q_ = this.getQPConfig(currencies[i].default.quantity); + } + + 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_, ...defaults_, ...thens_], 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 vmbook[condition]({}); + } + else if ('constants' && 'sources' in condition) { + return condition; + } + else if ('struct' in condition) { + if ('subject' in condition.struct) { + if (condition.operator === 'true') { + 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 as AllStandardArgs) + ); + } + else { + if ('subject' in condition.struct2!) { + return VM[condition.operator]( + 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 as AllStandardArgs), + 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, + vmbook[condition.struct2!.subject](condition.struct2.args as AllStandardArgs), + false + ); + } + else { + return VM[condition.operator]( + condition.struct, + condition.struct2!, + false + ); + } + } + } + } + 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[] = []; + + if (conditionGroup === 'always' || conditionGroup === 'never') { + return vmbook[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') { + group_.push(vmbook[item]({})); + } + else if ('constants' && 'sources' in item) { + group_.push(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); + } + } + else throw new Error('Invalid argument'); + } + + /** + * Method to get the price or quantity StateConfig + * + * @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 as AllStandardArgs), + qp.modifier + ); + } + else { + return vmbook[qp.struct.subject](qp.struct.args as AllStandardArgs); + } + } + 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 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; + } + 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[] = []; + for (let i = 0; i < currencies.length; i++) { + let eRules: eRule[] = []; + let temp: BigNumber[]; + let q_: BigNumber[] = []; + let p_: 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]; + + 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]; + 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( + 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]; + 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, + options?.contract, + options?.context, + options?.data, + options?.storageOpFn, + options?.opMeta + ) + } + } + + 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: { + struct: rule.quantity.struct, + modifier: qm_ + }, + price: { + struct: rule.price.struct, + modifier: pm_ + }, + result: { + quantity: quantityConditions === 'always' + ? qResult_ + : quantityConditions === 'never' + ? qDefault_ + : quantityConditions.result + ? qResult_ + : qDefault_, + + 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) => currencies[i].pick.quantities === 'max' + ? a.gte(b) ? a : b + : a.lte(b) ? a : b + ), + price: p_.reduce( + (a, b) => currencies[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 = { + 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 + .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 ( + (eCurrencyObj[i].quantityGlobalModifier!.condition as Exclude< + eConditionGroup, 'always' | 'never' + >).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 = { + 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.price = eCurrencyObj[i].result.price + .mul(Math.floor(pModifier.values * 100)) + .div(100) + } + else { + eCurrencyObj[i].result.price = eCurrencyObj[i].result.price + .mul(Math.floor(pModifier.values * 10000)) + .div(10000) + } + } + if (pModifier.condition !== 'never') { + if ( + (eCurrencyObj[i].priceGlobalModifier!.condition as Exclude< + eConditionGroup, 'always' | 'never' + >).result + ) { + if (pModifier.type === 'multiplier') { + eCurrencyObj[i].result.price = eCurrencyObj[i].result.price + .mul(Math.floor(pModifier.values * 100)) + .div(100) + } + else { + eCurrencyObj[i].result.price = eCurrencyObj[i].result.price + .mul(Math.floor(pModifier.values * 10000)) + .div(10000) + } + } + } + } + } + return eCurrencyObj; + } +} + diff --git a/src/rule-builder/types.ts b/src/rule-builder/types.ts new file mode 100644 index 0000000..3587d92 --- /dev/null +++ b/src/rule-builder/types.ts @@ -0,0 +1,707 @@ +import { BigNumber } from 'ethers'; +import { Tier } from '../classes/iTierV2'; +import { StateConfig } from '../classes/vm'; + + +/** + * @public + * Type to get an always true condition + */ +export type Always = 'always'; + +/** + * @public + * Type to get an always false condition + */ +export type Never = 'never'; + +/** + * @public + * Valid Modifier types + */ +export type ModifierType = 'discount' | 'multiplier'; + +/** + * @public + * 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'; + +/** + * @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: Omit; + price: Omit; +}; + +/** + * @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 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 + */ + '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 + } +} + +/** + * @public + * A filtering utility type for ArgsTypeBook + */ +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 ArgsTypeBook} + */ + subject: T, + /** + * The valid properties of this Struct object + * @see {@link ArgsTypeBook} + */ + 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 + */ +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']; + +/** + * @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: Omit & { + modifier?: Omit & + { condition: eConditionGroup } + }; + price: Omit & { + modifier?: Omit & + { condition: eConditionGroup } + }; + 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?: Omit & { condition: eConditionGroup }; + priceGlobalModifier?: Omit & { condition: eConditionGroup }; + pick: { + quantities: Extract; + prices: Extract; + }; + result: { + quantity: BigNumber, + price: BigNumber + } +} diff --git a/src/rule-builder/vmbook.ts b/src/rule-builder/vmbook.ts new file mode 100644 index 0000000..bfb148d --- /dev/null +++ b/src/rule-builder/vmbook.ts @@ -0,0 +1,230 @@ +import { ethers } from 'ethers'; +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'; + + +/** + * @public + * Key/value paired VM functions to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods + */ +export const vmbook: { [T in keyof ArgsTypeBook]: (args: Filter[T]['args']) => 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 BetweenBlocks(startBlock, endBlock); + }, + + 'has-min-tier': ({ + tierAddress, + minTier, + tierContext, + }: 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/typechain/AllStandardOpsStateBuilder.ts b/src/typechain/AllStandardOpsStateBuilder.ts new file mode 100644 index 0000000..73e136e --- /dev/null +++ b/src/typechain/AllStandardOpsStateBuilder.ts @@ -0,0 +1,221 @@ +/* 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 AllStandardOpsStateBuilderInterface 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 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( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise<[void]>; + + stackPops(overrides?: CallOverrides): Promise<[BigNumber[]]>; + + stackPushes(overrides?: CallOverrides): Promise<[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/AllStandardOpsTest.ts b/src/typechain/AllStandardOpsTest.ts new file mode 100644 index 0000000..44c9db6 --- /dev/null +++ b/src/typechain/AllStandardOpsTest.ts @@ -0,0 +1,278 @@ +/* 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: { + "initialize((bytes[],uint256[]))": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; + "run()": FunctionFragment; + "runContext(uint256[])": FunctionFragment; + "stack()": FunctionFragment; + "stackTop()": FunctionFragment; + "state()": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "initialize", + values: [StateConfigStruct] + ): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): 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: "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; + 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: { + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + + run( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + runContext( + context_: 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]>; + }; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers(overrides?: CallOverrides): Promise; + + run( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + runContext( + context_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stack(overrides?: CallOverrides): Promise; + + stackTop(overrides?: CallOverrides): Promise; + + state(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + callStatic: { + initialize( + stateConfig_: StateConfigStruct, + overrides?: CallOverrides + ): Promise; + + packedFunctionPointers(overrides?: CallOverrides): Promise; + + run(overrides?: CallOverrides): Promise; + + runContext( + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + stack(overrides?: CallOverrides): Promise; + + stackTop(overrides?: CallOverrides): Promise; + + state(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers(overrides?: CallOverrides): Promise; + + run( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + runContext( + context_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stack(overrides?: CallOverrides): Promise; + + stackTop(overrides?: CallOverrides): Promise; + + state(overrides?: CallOverrides): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + + run( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + runContext( + context_: 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/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/ERC721BalanceTierFactory.ts b/src/typechain/AutoApproveFactory.ts similarity index 86% rename from src/typechain/ERC721BalanceTierFactory.ts rename to src/typechain/AutoApproveFactory.ts index 91518d5..f1f2890 100644 --- a/src/typechain/ERC721BalanceTierFactory.ts +++ b/src/typechain/AutoApproveFactory.ts @@ -17,20 +17,20 @@ 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 StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; }; -export type ERC721BalanceTierConfigStructOutput = [string, BigNumber[]] & { - erc721: string; - tierValues: BigNumber[]; +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; }; -export interface ERC721BalanceTierFactoryInterface extends utils.Interface { +export interface AutoApproveFactoryInterface extends utils.Interface { functions: { "createChild(bytes)": FunctionFragment; - "createChildTyped((address,uint256[8]))": FunctionFragment; + "createChildTyped((bytes[],uint256[]))": FunctionFragment; "isChild(address)": FunctionFragment; }; @@ -40,7 +40,7 @@ export interface ERC721BalanceTierFactoryInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "createChildTyped", - values: [ERC721BalanceTierConfigStruct] + values: [StateConfigStruct] ): string; encodeFunctionData(functionFragment: "isChild", values: [string]): string; @@ -77,12 +77,12 @@ export type NewChildEvent = TypedEvent< export type NewChildEventFilter = TypedEventFilter; -export interface ERC721BalanceTierFactory extends BaseContract { +export interface AutoApproveFactory extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: ERC721BalanceTierFactoryInterface; + interface: AutoApproveFactoryInterface; queryFilter( event: TypedEventFilter, @@ -110,7 +110,7 @@ export interface ERC721BalanceTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC721BalanceTierConfigStruct, + config_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -123,7 +123,7 @@ export interface ERC721BalanceTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC721BalanceTierConfigStruct, + config_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -133,7 +133,7 @@ export interface ERC721BalanceTierFactory extends BaseContract { createChild(data_: BytesLike, overrides?: CallOverrides): Promise; createChildTyped( - config_: ERC721BalanceTierConfigStruct, + config_: StateConfigStruct, overrides?: CallOverrides ): Promise; @@ -164,7 +164,7 @@ export interface ERC721BalanceTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC721BalanceTierConfigStruct, + config_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -178,7 +178,7 @@ export interface ERC721BalanceTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC721BalanceTierConfigStruct, + config_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): 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/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..75e3492 100644 --- a/src/typechain/CombineTier.ts +++ b/src/typechain/CombineTier.ts @@ -17,96 +17,109 @@ 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 CombineTierConfigStruct = { + combinedTiersLength: BigNumberish; + sourceConfig: StateConfigStruct; }; -export type StateConfigStructOutput = [ - string[], - BigNumber[], +export type CombineTierConfigStructOutput = [ BigNumber, - BigNumber -] & { - sources: string[]; - constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; + StateConfigStructOutput +] & { combinedTiersLength: BigNumber; sourceConfig: StateConfigStructOutput }; + +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; +}; + +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; }; export interface CombineTierInterface extends utils.Interface { functions: { - "initialize((bytes[],uint256[],uint256,uint256))": FunctionFragment; - "report(address)": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; + "initialize((uint256,(bytes[],uint256[])))": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; }; encodeFunctionData( functionFragment: "initialize", - values: [StateConfigStruct] + values: [CombineTierConfigStruct] + ): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "report", + values: [string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "reportTimeForTier", + values: [string, BigNumberish, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined ): string; - encodeFunctionData(functionFragment: "report", values: [string]): string; encodeFunctionData( - functionFragment: "setTier", - values: [string, BigNumberish, BytesLike] + functionFragment: "supportsInterface", + values: [BytesLike] ): string; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + 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: { - "Snapshot(address,address,tuple)": EventFragment; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; + "Initialize(address,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; }; - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; } -export type SnapshotEvent = TypedEvent< - [string, string, StateStructOutput], - { sender: string; pointer: string; state: StateStructOutput } +export type InitializeEvent = TypedEvent< + [string, CombineTierConfigStructOutput], + { sender: string; config: CombineTierConfigStructOutput } >; -export type SnapshotEventFilter = TypedEventFilter; - -export type TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], - { - sender: string; - account: string; - startTier: BigNumber; - endTier: BigNumber; - data: string; - } ->; +export type InitializeEventFilter = TypedEventFilter; + +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; @@ -136,105 +149,166 @@ export interface CombineTier extends BaseContract { functions: { initialize( - config_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; - report(account_: string, overrides?: CallOverrides): Promise<[BigNumber]>; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + report( + account_: string, + context_: BigNumberish[], overrides?: CallOverrides - ): Promise<[void]>; + ): Promise<[BigNumber] & { report_: BigNumber }>; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber] & { time_: BigNumber }>; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; }; initialize( - config_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + + report( + account_: string, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides - ): Promise; + ): Promise; callStatic: { initialize( - config_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: CallOverrides ): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + report( + account_: string, + context_: BigNumberish[], overrides?: CallOverrides - ): Promise; + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; }; filters: { - "Snapshot(address,address,tuple)"( + "Initialize(address,tuple)"( sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; + config?: null + ): InitializeEventFilter; + Initialize(sender?: null, config?: null): InitializeEventFilter; - "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; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; }; estimateGas: { initialize( - config_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + report( + account_: string, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; }; populateTransaction: { initialize( - config_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + report( account_: string, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( overrides?: CallOverrides ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; }; diff --git a/src/typechain/CombineTierFactory.ts b/src/typechain/CombineTierFactory.ts index 8a46fde..78ee479 100644 --- a/src/typechain/CombineTierFactory.ts +++ b/src/typechain/CombineTierFactory.ts @@ -20,26 +20,27 @@ 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 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[],uint256,uint256))": FunctionFragment; + "createChildTyped((uint256,(bytes[],uint256[])))": FunctionFragment; "implementation()": FunctionFragment; "isChild(address)": FunctionFragment; }; @@ -50,7 +51,7 @@ export interface CombineTierFactoryInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "createChildTyped", - values: [StateConfigStruct] + values: [CombineTierConfigStruct] ): string; encodeFunctionData( functionFragment: "implementation", @@ -128,7 +129,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -143,7 +144,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -155,7 +156,7 @@ export interface CombineTierFactory extends BaseContract { createChild(data_: BytesLike, overrides?: CallOverrides): Promise; createChildTyped( - config_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: CallOverrides ): Promise; @@ -188,7 +189,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -204,7 +205,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: StateConfigStruct, + config_: CombineTierConfigStruct, 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/ERC20BalanceTier.ts b/src/typechain/ERC20BalanceTier.ts deleted file mode 100644 index 2c79ef4..0000000 --- a/src/typechain/ERC20BalanceTier.ts +++ /dev/null @@ -1,246 +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; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): 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 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; - - "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/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/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/PCToken.ts b/src/typechain/ERC20Snapshot.ts similarity index 75% rename from src/typechain/PCToken.ts rename to src/typechain/ERC20Snapshot.ts index 51c8c3f..0712e53 100644 --- a/src/typechain/PCToken.ts +++ b/src/typechain/ERC20Snapshot.ts @@ -17,25 +17,23 @@ 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 interface ERC20SnapshotInterface extends utils.Interface { functions: { - "DECIMALS()": FunctionFragment; - "NAME()": FunctionFragment; "allowance(address,address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; + "balanceOfAt(address,uint256)": FunctionFragment; "decimals()": FunctionFragment; - "decreaseApproval(address,uint256)": FunctionFragment; - "increaseApproval(address,uint256)": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; "name()": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; + "totalSupplyAt(uint256)": FunctionFragment; "transfer(address,uint256)": FunctionFragment; "transferFrom(address,address,uint256)": FunctionFragment; }; - encodeFunctionData(functionFragment: "DECIMALS", values?: undefined): string; - encodeFunctionData(functionFragment: "NAME", values?: undefined): string; encodeFunctionData( functionFragment: "allowance", values: [string, string] @@ -45,13 +43,17 @@ export interface PCTokenInterface extends utils.Interface { values: [string, BigNumberish] ): string; encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; + encodeFunctionData( + functionFragment: "balanceOfAt", + values: [string, BigNumberish] + ): string; encodeFunctionData(functionFragment: "decimals", values?: undefined): string; encodeFunctionData( - functionFragment: "decreaseApproval", + functionFragment: "decreaseAllowance", values: [string, BigNumberish] ): string; encodeFunctionData( - functionFragment: "increaseApproval", + functionFragment: "increaseAllowance", values: [string, BigNumberish] ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; @@ -60,6 +62,10 @@ export interface PCTokenInterface extends utils.Interface { functionFragment: "totalSupply", values?: undefined ): string; + encodeFunctionData( + functionFragment: "totalSupplyAt", + values: [BigNumberish] + ): string; encodeFunctionData( functionFragment: "transfer", values: [string, BigNumberish] @@ -69,18 +75,20 @@ export interface PCTokenInterface extends utils.Interface { values: [string, string, 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: "balanceOfAt", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "decreaseApproval", + functionFragment: "decreaseAllowance", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "increaseApproval", + functionFragment: "increaseAllowance", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; @@ -89,6 +97,10 @@ export interface PCTokenInterface extends utils.Interface { functionFragment: "totalSupply", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "totalSupplyAt", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; decodeFunctionResult( functionFragment: "transferFrom", @@ -97,10 +109,12 @@ export interface PCTokenInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; + "Snapshot(uint256)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } @@ -111,6 +125,10 @@ export type ApprovalEvent = TypedEvent< export type ApprovalEventFilter = TypedEventFilter; +export type SnapshotEvent = TypedEvent<[BigNumber], { id: BigNumber }>; + +export type SnapshotEventFilter = TypedEventFilter; + export type TransferEvent = TypedEvent< [string, string, BigNumber], { from: string; to: string; value: BigNumber } @@ -118,12 +136,12 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; -export interface PCToken extends BaseContract { +export interface ERC20Snapshot extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: PCTokenInterface; + interface: ERC20SnapshotInterface; queryFilter( event: TypedEventFilter, @@ -145,10 +163,6 @@ export interface PCToken extends BaseContract { removeListener: OnEvent; functions: { - DECIMALS(overrides?: CallOverrides): Promise<[number]>; - - NAME(overrides?: CallOverrides): Promise<[string]>; - allowance( owner: string, spender: string, @@ -163,17 +177,23 @@ export interface PCToken extends BaseContract { balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + balanceOfAt( + account: string, + snapshotId: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + decimals(overrides?: CallOverrides): Promise<[number]>; - decreaseApproval( + decreaseAllowance( spender: string, - amount: BigNumberish, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - increaseApproval( + increaseAllowance( spender: string, - amount: BigNumberish, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -183,24 +203,25 @@ export interface PCToken extends BaseContract { totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + totalSupplyAt( + snapshotId: BigNumberish, + 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; - allowance( owner: string, spender: string, @@ -215,17 +236,23 @@ export interface PCToken extends BaseContract { balanceOf(account: string, overrides?: CallOverrides): Promise; + balanceOfAt( + account: string, + snapshotId: BigNumberish, + overrides?: CallOverrides + ): Promise; + decimals(overrides?: CallOverrides): Promise; - decreaseApproval( + decreaseAllowance( spender: string, - amount: BigNumberish, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - increaseApproval( + increaseAllowance( spender: string, - amount: BigNumberish, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -235,24 +262,25 @@ export interface PCToken extends BaseContract { totalSupply(overrides?: CallOverrides): Promise; + totalSupplyAt( + snapshotId: BigNumberish, + 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; - allowance( owner: string, spender: string, @@ -267,17 +295,23 @@ export interface PCToken extends BaseContract { balanceOf(account: string, overrides?: CallOverrides): Promise; + balanceOfAt( + account: string, + snapshotId: BigNumberish, + overrides?: CallOverrides + ): Promise; + decimals(overrides?: CallOverrides): Promise; - decreaseApproval( + decreaseAllowance( spender: string, - amount: BigNumberish, + subtractedValue: BigNumberish, overrides?: CallOverrides ): Promise; - increaseApproval( + increaseAllowance( spender: string, - amount: BigNumberish, + addedValue: BigNumberish, overrides?: CallOverrides ): Promise; @@ -287,15 +321,20 @@ export interface PCToken extends BaseContract { totalSupply(overrides?: CallOverrides): Promise; + totalSupplyAt( + snapshotId: BigNumberish, + 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; @@ -313,6 +352,9 @@ export interface PCToken extends BaseContract { value?: null ): ApprovalEventFilter; + "Snapshot(uint256)"(id?: null): SnapshotEventFilter; + Snapshot(id?: null): SnapshotEventFilter; + "Transfer(address,address,uint256)"( from?: string | null, to?: string | null, @@ -326,10 +368,6 @@ export interface PCToken extends BaseContract { }; estimateGas: { - DECIMALS(overrides?: CallOverrides): Promise; - - NAME(overrides?: CallOverrides): Promise; - allowance( owner: string, spender: string, @@ -344,17 +382,23 @@ export interface PCToken extends BaseContract { balanceOf(account: string, overrides?: CallOverrides): Promise; + balanceOfAt( + account: string, + snapshotId: BigNumberish, + overrides?: CallOverrides + ): Promise; + decimals(overrides?: CallOverrides): Promise; - decreaseApproval( + decreaseAllowance( spender: string, - amount: BigNumberish, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - increaseApproval( + increaseAllowance( spender: string, - amount: BigNumberish, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -364,25 +408,26 @@ export interface PCToken extends BaseContract { totalSupply(overrides?: CallOverrides): Promise; + totalSupplyAt( + snapshotId: BigNumberish, + 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; }; populateTransaction: { - DECIMALS(overrides?: CallOverrides): Promise; - - NAME(overrides?: CallOverrides): Promise; - allowance( owner: string, spender: string, @@ -400,17 +445,23 @@ export interface PCToken extends BaseContract { overrides?: CallOverrides ): Promise; + balanceOfAt( + account: string, + snapshotId: BigNumberish, + overrides?: CallOverrides + ): Promise; + decimals(overrides?: CallOverrides): Promise; - decreaseApproval( + decreaseAllowance( spender: string, - amount: BigNumberish, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - increaseApproval( + increaseAllowance( spender: string, - amount: BigNumberish, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -420,15 +471,20 @@ export interface PCToken extends BaseContract { totalSupply(overrides?: CallOverrides): Promise; + totalSupplyAt( + snapshotId: BigNumberish, + 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; diff --git a/src/typechain/ERC20TransferTier.ts b/src/typechain/ERC20TransferTier.ts deleted file mode 100644 index 29ef0c9..0000000 --- a/src/typechain/ERC20TransferTier.ts +++ /dev/null @@ -1,246 +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; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): 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 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; - - "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/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/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/ERC721BalanceTier.ts b/src/typechain/ERC721BalanceTier.ts deleted file mode 100644 index 11e2ce1..0000000 --- a/src/typechain/ERC721BalanceTier.ts +++ /dev/null @@ -1,259 +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; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): 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 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; - - "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/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 deleted file mode 100644 index 2de721b..0000000 --- a/src/typechain/ERC721Upgradeable.ts +++ /dev/null @@ -1,528 +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; - "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 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; - - "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/EmissionsERC20.ts b/src/typechain/EmissionsERC20.ts index e0a4dd7..5e2e6d5 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; @@ -99,10 +78,13 @@ export interface EmissionsERC20Interface extends utils.Interface { "decimals()": FunctionFragment; "decreaseAllowance(address,uint256)": 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; + "packedFunctionPointers()": FunctionFragment; + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; @@ -144,10 +126,25 @@ 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: "packedFunctionPointers", + values?: undefined + ): string; + encodeFunctionData( + 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( @@ -186,8 +183,23 @@ export interface EmissionsERC20Interface extends utils.Interface { ): 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: "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", @@ -202,17 +214,15 @@ export interface EmissionsERC20Interface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "Claim(address,address,bytes)": EventFragment; - "Initialize(address,bool)": EventFragment; - "Snapshot(address,address,tuple)": EventFragment; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; + "Initialize(address,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; getEvent(nameOrSignatureOrTopic: "Claim"): EventFragment; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } @@ -231,31 +241,15 @@ 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; -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 TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], - { - sender: string; - account: string; - startTier: BigNumber; - endTier: BigNumber; - data: string; - } ->; - -export type TierChangeEventFilter = TypedEventFilter; +export type InitializedEventFilter = TypedEventFilter; export type TransferEvent = TypedEvent< [string, string, BigNumber], @@ -339,14 +333,31 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise<[string]>; - report(account_: string, overrides?: CallOverrides): Promise<[BigNumber]>; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides - ): Promise<[void]>; + ): Promise<[boolean]>; symbol(overrides?: CallOverrides): Promise<[string]>; @@ -414,14 +425,29 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + report( + account_: string, + arg1: BigNumberish[], overrides?: CallOverrides - ): Promise; + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; symbol(overrides?: CallOverrides): Promise; @@ -489,14 +515,29 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + report( + account_: string, + arg1: BigNumberish[], overrides?: CallOverrides - ): Promise; + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; symbol(overrides?: CallOverrides): Promise; @@ -535,36 +576,14 @@ export interface EmissionsERC20 extends BaseContract { ): ClaimEventFilter; Claim(sender?: null, claimant?: null, data?: null): ClaimEventFilter; - "Initialize(address,bool)"( + "Initialize(address,tuple)"( sender?: null, - allowDelegatedClaims?: null - ): InitializeEventFilter; - Initialize( - sender?: null, - allowDelegatedClaims?: null + config?: null ): InitializeEventFilter; + Initialize(sender?: null, config?: null): InitializeEventFilter; - "Snapshot(address,address,tuple)"( - sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; - - "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; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; "Transfer(address,address,uint256)"( from?: string | null, @@ -627,12 +646,25 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; @@ -708,15 +740,29 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + report( account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( overrides?: CallOverrides ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + supportsInterface( + interfaceId_: BytesLike, 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/ERC20Pull.ts b/src/typechain/FactoryChildTest.ts similarity index 52% rename from src/typechain/ERC20Pull.ts rename to src/typechain/FactoryChildTest.ts index de0d0e2..a7a7f76 100644 --- a/src/typechain/ERC20Pull.ts +++ b/src/typechain/FactoryChildTest.ts @@ -17,39 +17,50 @@ 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 { +export interface FactoryChildTestInterface extends utils.Interface { functions: { - "pullERC20(uint256)": FunctionFragment; + "initialize(uint256)": FunctionFragment; }; encodeFunctionData( - functionFragment: "pullERC20", + functionFragment: "initialize", values: [BigNumberish] ): string; - decodeFunctionResult(functionFragment: "pullERC20", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; events: { - "ERC20PullInitialize(address,address,address)": EventFragment; + "Construct(address)": EventFragment; + "Initialize(address,uint256)": EventFragment; + "Initialized(uint8)": EventFragment; }; - getEvent(nameOrSignatureOrTopic: "ERC20PullInitialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Construct"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; } -export type ERC20PullInitializeEvent = TypedEvent< - [string, string, string], - { sender: string; tokenSender: string; token: string } +export type ConstructEvent = TypedEvent<[string], { sender: string }>; + +export type ConstructEventFilter = TypedEventFilter; + +export type InitializeEvent = TypedEvent< + [string, BigNumber], + { sender: string; value: BigNumber } >; -export type ERC20PullInitializeEventFilter = - TypedEventFilter; +export type InitializeEventFilter = TypedEventFilter; + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; -export interface ERC20Pull extends BaseContract { +export interface FactoryChildTest extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: ERC20PullInterface; + interface: FactoryChildTestInterface; queryFilter( event: TypedEventFilter, @@ -71,44 +82,45 @@ export interface ERC20Pull extends BaseContract { removeListener: OnEvent; functions: { - pullERC20( - amount_: BigNumberish, + initialize( + value_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; - pullERC20( - amount_: BigNumberish, + initialize( + value_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; callStatic: { - pullERC20(amount_: BigNumberish, overrides?: CallOverrides): Promise; + initialize(value_: BigNumberish, overrides?: CallOverrides): Promise; }; filters: { - "ERC20PullInitialize(address,address,address)"( - sender?: null, - tokenSender?: null, - token?: null - ): ERC20PullInitializeEventFilter; - ERC20PullInitialize( + "Construct(address)"(sender?: null): ConstructEventFilter; + Construct(sender?: null): ConstructEventFilter; + + "Initialize(address,uint256)"( sender?: null, - tokenSender?: null, - token?: null - ): ERC20PullInitializeEventFilter; + value?: null + ): InitializeEventFilter; + Initialize(sender?: null, value?: null): InitializeEventFilter; + + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; }; estimateGas: { - pullERC20( - amount_: BigNumberish, + initialize( + value_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; populateTransaction: { - pullERC20( - amount_: BigNumberish, + 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/ERC20TransferTierFactory.ts b/src/typechain/FactoryTest.ts similarity index 77% rename from src/typechain/ERC20TransferTierFactory.ts rename to src/typechain/FactoryTest.ts index a5362ab..a44c301 100644 --- a/src/typechain/ERC20TransferTierFactory.ts +++ b/src/typechain/FactoryTest.ts @@ -17,21 +17,10 @@ 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 { +export interface FactoryTestInterface extends utils.Interface { functions: { "createChild(bytes)": FunctionFragment; - "createChildTyped((address,uint256[8]))": FunctionFragment; - "implementation()": FunctionFragment; + "createChildTyped(uint256)": FunctionFragment; "isChild(address)": FunctionFragment; }; @@ -41,11 +30,7 @@ export interface ERC20TransferTierFactoryInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "createChildTyped", - values: [ERC20TransferTierConfigStruct] - ): string; - encodeFunctionData( - functionFragment: "implementation", - values?: undefined + values: [BigNumberish] ): string; encodeFunctionData(functionFragment: "isChild", values: [string]): string; @@ -57,10 +42,6 @@ export interface ERC20TransferTierFactoryInterface extends utils.Interface { functionFragment: "createChildTyped", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "implementation", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "isChild", data: BytesLike): Result; events: { @@ -86,12 +67,12 @@ export type NewChildEvent = TypedEvent< export type NewChildEventFilter = TypedEventFilter; -export interface ERC20TransferTierFactory extends BaseContract { +export interface FactoryTest extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: ERC20TransferTierFactoryInterface; + interface: FactoryTestInterface; queryFilter( event: TypedEventFilter, @@ -119,12 +100,10 @@ export interface ERC20TransferTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC20TransferTierConfigStruct, + value_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - implementation(overrides?: CallOverrides): Promise<[string]>; - isChild(maybeChild_: string, overrides?: CallOverrides): Promise<[boolean]>; }; @@ -134,24 +113,20 @@ export interface ERC20TransferTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC20TransferTierConfigStruct, + value_: BigNumberish, 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, + value_: BigNumberish, overrides?: CallOverrides ): Promise; - implementation(overrides?: CallOverrides): Promise; - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; }; @@ -179,12 +154,10 @@ export interface ERC20TransferTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC20TransferTierConfigStruct, + value_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - implementation(overrides?: CallOverrides): Promise; - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; }; @@ -195,12 +168,10 @@ export interface ERC20TransferTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC20TransferTierConfigStruct, + value_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - implementation(overrides?: CallOverrides): Promise; - isChild( maybeChild_: string, overrides?: CallOverrides 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/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 279f9d2..0000000 --- a/src/typechain/GatedNFT.ts +++ /dev/null @@ -1,939 +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; - "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: "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 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; - - "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/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/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/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/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/LibCommitmentTest.ts b/src/typechain/LibCommitmentTest.ts new file mode 100644 index 0000000..78bdf85 --- /dev/null +++ b/src/typechain/LibCommitmentTest.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 LibCommitmentTestInterface extends utils.Interface { + functions: { + "eq(uint256,uint256)": FunctionFragment; + "fromSecret(uint256)": FunctionFragment; + "nil()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "eq", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "fromSecret", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "nil", values?: undefined): string; + + decodeFunctionResult(functionFragment: "eq", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fromSecret", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nil", 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 }>; + + nil(overrides?: CallOverrides): Promise<[BigNumber] & { nil_: BigNumber }>; + }; + + eq( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fromSecret( + secret_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + nil(overrides?: CallOverrides): Promise; + + callStatic: { + eq( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fromSecret( + secret_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + nil(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + eq( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fromSecret( + secret_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + nil(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + eq( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fromSecret( + secret_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + nil(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/ERC165Upgradeable.ts b/src/typechain/LibSeedTest.ts similarity index 67% rename from src/typechain/ERC165Upgradeable.ts rename to src/typechain/LibSeedTest.ts index a9123ec..250ceea 100644 --- a/src/typechain/ERC165Upgradeable.ts +++ b/src/typechain/LibSeedTest.ts @@ -4,6 +4,7 @@ import { BaseContract, BigNumber, + BigNumberish, BytesLike, CallOverrides, PopulatedTransaction, @@ -14,30 +15,27 @@ import { FunctionFragment, Result } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export interface ERC165UpgradeableInterface extends utils.Interface { +export interface LibSeedTestInterface extends utils.Interface { functions: { - "supportsInterface(bytes4)": FunctionFragment; + "with(uint256,uint256)": FunctionFragment; }; encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] + functionFragment: "with", + values: [BigNumberish, BigNumberish] ): string; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; + decodeFunctionResult(functionFragment: "with", data: BytesLike): Result; events: {}; } -export interface ERC165Upgradeable extends BaseContract { +export interface LibSeedTest extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: ERC165UpgradeableInterface; + interface: LibSeedTestInterface; queryFilter( event: TypedEventFilter, @@ -59,36 +57,41 @@ export interface ERC165Upgradeable extends BaseContract { removeListener: OnEvent; functions: { - supportsInterface( - interfaceId: BytesLike, + with( + seed_: BigNumberish, + val_: BigNumberish, overrides?: CallOverrides - ): Promise<[boolean]>; + ): Promise<[BigNumber] & { newSeed_: BigNumber }>; }; - supportsInterface( - interfaceId: BytesLike, + with( + seed_: BigNumberish, + val_: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; callStatic: { - supportsInterface( - interfaceId: BytesLike, + with( + seed_: BigNumberish, + val_: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; }; filters: {}; estimateGas: { - supportsInterface( - interfaceId: BytesLike, + with( + seed_: BigNumberish, + val_: BigNumberish, overrides?: CallOverrides ): Promise; }; populateTransaction: { - supportsInterface( - interfaceId: BytesLike, + with( + seed_: BigNumberish, + val_: BigNumberish, overrides?: CallOverrides ): Promise; }; 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..a0b844f --- /dev/null +++ b/src/typechain/OrderBook.ts @@ -0,0 +1,511 @@ +/* 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 IOStruct = { token: string; vaultId: BigNumberish }; + +export type IOStructOutput = [string, BigNumber] & { + token: string; + vaultId: BigNumber; +}; + +export type OrderStruct = { + owner: string; + validInputs: IOStruct[]; + validOutputs: IOStruct[]; + tracking: BigNumberish; + vmState: BytesLike; +}; + +export type OrderStructOutput = [ + string, + IOStructOutput[], + IOStructOutput[], + BigNumber, + string +] & { + owner: string; + validInputs: IOStructOutput[]; + validOutputs: IOStructOutput[]; + tracking: BigNumber; + vmState: string; +}; + +export type ClearConfigStruct = { + aInputIndex: BigNumberish; + aOutputIndex: BigNumberish; + bInputIndex: BigNumberish; + bOutputIndex: BigNumberish; + aBountyVaultId: BigNumberish; + bBountyVaultId: BigNumberish; +}; + +export type ClearConfigStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber +] & { + aInputIndex: BigNumber; + aOutputIndex: BigNumber; + bInputIndex: BigNumber; + bOutputIndex: BigNumber; + aBountyVaultId: BigNumber; + bBountyVaultId: 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 = { + validInputs: IOStruct[]; + validOutputs: IOStruct[]; + vmStateConfig: StateConfigStruct; +}; + +export type OrderConfigStructOutput = [ + IOStructOutput[], + IOStructOutput[], + StateConfigStructOutput +] & { + validInputs: IOStructOutput[]; + validOutputs: IOStructOutput[]; + 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)[],(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; + "packedFunctionPointers()": 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, ClearConfigStruct] + ): string; + encodeFunctionData( + functionFragment: "deposit", + values: [DepositConfigStruct] + ): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + 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: "packedFunctionPointers", + 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, ClearConfigStructOutput], + { + sender: string; + a_: OrderStructOutput; + b_: OrderStructOutput; + clearConfig: ClearConfigStructOutput; + } +>; + +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, + clearConfig_: ClearConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + deposit( + config_: DepositConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: 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, + clearConfig_: ClearConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + deposit( + config_: DepositConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers(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, + clearConfig_: ClearConfigStruct, + overrides?: CallOverrides + ): Promise; + + deposit( + config_: DepositConfigStruct, + overrides?: CallOverrides + ): Promise; + + packedFunctionPointers(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, + clearConfig?: null + ): ClearEventFilter; + Clear( + sender?: null, + a_?: null, + b_?: null, + clearConfig?: 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, + clearConfig_: ClearConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + deposit( + config_: DepositConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers(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, + clearConfig_: ClearConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + deposit( + config_: DepositConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers( + 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..4191aee --- /dev/null +++ b/src/typechain/OrderBookStateBuilder.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 OrderBookStateBuilderInterface 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 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( + 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/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/IERC165Upgradeable.ts b/src/typechain/RainVM.ts similarity index 52% rename from src/typechain/IERC165Upgradeable.ts rename to src/typechain/RainVM.ts index 1e55fb4..16db226 100644 --- a/src/typechain/IERC165Upgradeable.ts +++ b/src/typechain/RainVM.ts @@ -4,6 +4,7 @@ import { BaseContract, BigNumber, + BigNumberish, BytesLike, CallOverrides, PopulatedTransaction, @@ -14,30 +15,49 @@ 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 { +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; +}; + +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; +}; + +export interface RainVMInterface extends utils.Interface { functions: { - "supportsInterface(bytes4)": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; }; encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined ): string; decodeFunctionResult( - functionFragment: "supportsInterface", + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", data: BytesLike ): Result; events: {}; } -export interface IERC165Upgradeable extends BaseContract { +export interface RainVM extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: IERC165UpgradeableInterface; + interface: RainVMInterface; queryFilter( event: TypedEventFilter, @@ -59,36 +79,43 @@ export interface IERC165Upgradeable extends BaseContract { removeListener: OnEvent; functions: { - supportsInterface( - interfaceId: BytesLike, + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + + storageOpcodesRange( overrides?: CallOverrides - ): Promise<[boolean]>; + ): Promise<[StorageOpcodesRangeStructOutput]>; }; - supportsInterface( - interfaceId: BytesLike, + packedFunctionPointers(overrides?: CallOverrides): Promise; + + storageOpcodesRange( overrides?: CallOverrides - ): Promise; + ): Promise; callStatic: { - supportsInterface( - interfaceId: BytesLike, + packedFunctionPointers(overrides?: CallOverrides): Promise; + + storageOpcodesRange( overrides?: CallOverrides - ): Promise; + ): Promise; }; filters: {}; estimateGas: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; }; populateTransaction: { - supportsInterface( - interfaceId: BytesLike, + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( overrides?: CallOverrides ): Promise; }; 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/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..41dfd45 100644 --- a/src/typechain/ReadWriteTier.ts +++ b/src/typechain/ReadWriteTier.ts @@ -19,34 +19,100 @@ import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; export interface ReadWriteTierInterface extends utils.Interface { functions: { - "report(address)": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; + "setTier(address,uint256,uint256[])": 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] + values: [string, BigNumberish, BigNumberish[]] + ): 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; + "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[]; } >; @@ -79,75 +145,357 @@ 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, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "reportTimeForTier(uint256,uint256)"( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { timestamp_: BigNumber }>; setTier( account_: string, endTier_: BigNumberish, - data_: BytesLike, + context_: BigNumberish[], 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, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(uint256,uint256)"( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise; setTier( account_: string, endTier_: BigNumberish, - data_: BytesLike, + context_: BigNumberish[], 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, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(uint256,uint256)"( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise; setTier( account_: string, endTier_: BigNumberish, - data_: BytesLike, + context_: BigNumberish[], 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: { - "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; }; estimateGas: { - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(address,uint256,uint256[])"( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(uint256,uint256)"( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise; setTier( account_: string, endTier_: BigNumberish, - data_: BytesLike, + context_: BigNumberish[], 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, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(uint256,uint256)"( + report_: BigNumberish, + tier_: BigNumberish, overrides?: CallOverrides ): Promise; setTier( account_: string, endTier_: BigNumberish, - data_: BytesLike, + context_: BigNumberish[], 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 48f4878..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,12 +73,12 @@ export interface RedeemableERC20Interface extends utils.Interface { "minimumTier()": FunctionFragment; "name()": FunctionFragment; "newTreasuryAsset(address)": FunctionFragment; - "phaseAtBlockNumber(uint32[8],uint256)": FunctionFragment; - "phaseBlocks(uint256)": FunctionFragment; - "pullERC20(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; @@ -94,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", @@ -141,15 +136,11 @@ export interface RedeemableERC20Interface extends utils.Interface { values: [string] ): string; encodeFunctionData( - functionFragment: "phaseAtBlockNumber", + functionFragment: "phaseAtTime", values: [BigNumberish[], BigNumberish] ): string; encodeFunctionData( - functionFragment: "phaseBlocks", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "pullERC20", + functionFragment: "phaseTimes", values: [BigNumberish] ): string; encodeFunctionData( @@ -158,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 @@ -174,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( @@ -218,17 +209,17 @@ export interface RedeemableERC20Interface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "phaseAtBlockNumber", + functionFragment: "phaseAtTime", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "phaseBlocks", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "pullERC20", 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 @@ -241,8 +232,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 +243,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 +260,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,9 +267,13 @@ 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 } + { sender: string; newPhase: BigNumber; scheduledTime: BigNumber } >; export type PhaseScheduledEventFilter = TypedEventFilter; @@ -372,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 } @@ -389,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]>; @@ -444,22 +427,17 @@ 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]>; - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - redeem( treasuryAssets_: string[], redeemAmount_: BigNumberish, @@ -470,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( @@ -500,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 } @@ -569,18 +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; - - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + phaseTimes(arg0: BigNumberish, overrides?: CallOverrides): Promise; redeem( treasuryAssets_: string[], @@ -592,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( @@ -622,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( @@ -685,15 +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; - - pullERC20(amount_: BigNumberish, overrides?: CallOverrides): Promise; + phaseTimes(arg0: BigNumberish, overrides?: CallOverrides): Promise; redeem( treasuryAssets_: string[], @@ -705,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( @@ -733,32 +710,24 @@ 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, - scheduledBlock?: null + scheduledTime?: null ): PhaseScheduledEventFilter; PhaseScheduled( sender?: null, newPhase?: null, - scheduledBlock?: null + scheduledTime?: null ): PhaseScheduledEventFilter; "Receiver(address,address)"( @@ -819,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 } @@ -891,22 +854,17 @@ 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; - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - redeem( treasuryAssets_: string[], redeemAmount_: BigNumberish, @@ -917,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( @@ -951,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 } @@ -1023,22 +981,17 @@ 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; - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - redeem( treasuryAssets_: string[], redeemAmount_: BigNumberish, @@ -1049,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/OwnableUpgradeable.ts b/src/typechain/ReportOMeter.ts similarity index 52% rename from src/typechain/OwnableUpgradeable.ts rename to src/typechain/ReportOMeter.ts index 6017655..3b9a896 100644 --- a/src/typechain/OwnableUpgradeable.ts +++ b/src/typechain/ReportOMeter.ts @@ -4,6 +4,7 @@ import { BaseContract, BigNumber, + BigNumberish, BytesLike, CallOverrides, ContractTransaction, @@ -16,54 +17,47 @@ 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 { +export interface ReportOMeterInterface extends utils.Interface { functions: { - "owner()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "transferOwnership(address)": FunctionFragment; + "gaugeReport(address,address,uint256[])": FunctionFragment; + "gaugeReportTimeForTier(address,address,uint256,uint256[])": FunctionFragment; }; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined + functionFragment: "gaugeReport", + values: [string, string, BigNumberish[]] ): string; encodeFunctionData( - functionFragment: "transferOwnership", - values: [string] + functionFragment: "gaugeReportTimeForTier", + values: [string, string, BigNumberish, BigNumberish[]] ): string; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "renounceOwnership", + functionFragment: "gaugeReport", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "transferOwnership", + functionFragment: "gaugeReportTimeForTier", data: BytesLike ): Result; events: { - "OwnershipTransferred(address,address)": EventFragment; + "Report(uint256)": EventFragment; }; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Report"): EventFragment; } -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - { previousOwner: string; newOwner: string } ->; +export type ReportEvent = TypedEvent<[BigNumber], { report: BigNumber }>; -export type OwnershipTransferredEventFilter = - TypedEventFilter; +export type ReportEventFilter = TypedEventFilter; -export interface OwnableUpgradeable extends BaseContract { +export interface ReportOMeter extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: OwnableUpgradeableInterface; + interface: ReportOMeterInterface; queryFilter( event: TypedEventFilter, @@ -85,73 +79,89 @@ export interface OwnableUpgradeable extends BaseContract { removeListener: OnEvent; functions: { - owner(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( + gaugeReport( + tierContract_: string, + account_: string, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; - transferOwnership( - newOwner: string, + gaugeReportTimeForTier( + tierContract_: string, + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; }; - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( + gaugeReport( + tierContract_: string, + account_: string, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; - transferOwnership( - newOwner: string, + gaugeReportTimeForTier( + tierContract_: string, + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; callStatic: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; + gaugeReport( + tierContract_: string, + account_: string, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; - transferOwnership( - newOwner: string, + gaugeReportTimeForTier( + tierContract_: string, + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: CallOverrides ): Promise; }; filters: { - "OwnershipTransferred(address,address)"( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; + "Report(uint256)"(report?: null): ReportEventFilter; + Report(report?: null): ReportEventFilter; }; estimateGas: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( + gaugeReport( + tierContract_: string, + account_: string, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; - transferOwnership( - newOwner: string, + gaugeReportTimeForTier( + tierContract_: string, + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; }; populateTransaction: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( + gaugeReport( + tierContract_: string, + account_: string, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; - transferOwnership( - newOwner: string, + gaugeReportTimeForTier( + tierContract_: string, + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; }; 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/IERC721MetadataUpgradeable.ts b/src/typechain/ReserveTokenERC20Snapshot.ts similarity index 53% rename from src/typechain/IERC721MetadataUpgradeable.ts rename to src/typechain/ReserveTokenERC20Snapshot.ts index 1121973..66f458e 100644 --- a/src/typechain/IERC721MetadataUpgradeable.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 IERC721MetadataUpgradeableInterface 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,42 +124,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 ReserveTokenERC20Snapshot extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: IERC721MetadataUpgradeableInterface; + interface: ReserveTokenERC20SnapshotInterface; queryFilter( event: TypedEventFilter, @@ -163,368 +178,367 @@ export interface IERC721MetadataUpgradeable extends BaseContract { removeListener: OnEvent; functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise<[BigNumber] & { balance: BigNumber }>; + DECIMALS(overrides?: CallOverrides): Promise<[BigNumber]>; - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { operator: 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; + + 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, + 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; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; + ): 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; + "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/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/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..5cdccf8 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; + "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; "start()": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; "timeout()": FunctionFragment; "token()": FunctionFragment; }; @@ -207,17 +184,20 @@ 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: "initialize", values: [SaleConfigStruct, SaleRedeemableERC20ConfigStruct] ): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; encodeFunctionData( functionFragment: "refund", values: [ReceiptStruct] @@ -228,23 +208,34 @@ 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: "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; 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 +246,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 +258,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 +312,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 +323,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 +363,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, @@ -399,6 +385,10 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + refund( receipt_: ReceiptStruct, overrides?: Overrides & { from?: string | Promise } @@ -412,6 +402,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 +418,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, @@ -448,6 +440,8 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + refund( receipt_: ReceiptStruct, overrides?: Overrides & { from?: string | Promise } @@ -461,6 +455,10 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + timeout( overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -470,14 +468,12 @@ 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; @@ -489,6 +485,8 @@ export interface Sale extends BaseContract { overrides?: CallOverrides ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + refund(receipt_: ReceiptStruct, overrides?: CallOverrides): Promise; reserve(overrides?: CallOverrides): Promise; @@ -497,6 +495,10 @@ export interface Sale extends BaseContract { start(overrides?: CallOverrides): Promise; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + timeout(overrides?: CallOverrides): Promise; token(overrides?: CallOverrides): Promise; @@ -548,16 +550,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 +569,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, @@ -595,6 +591,8 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + refund( receipt_: ReceiptStruct, overrides?: Overrides & { from?: string | Promise } @@ -608,6 +606,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 +621,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, @@ -645,6 +643,10 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + refund( receipt_: ReceiptStruct, overrides?: Overrides & { from?: string | Promise } @@ -658,6 +660,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/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/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/SeedERC20Factory.ts b/src/typechain/SeedERC20Factory.ts deleted file mode 100644 index 225d006..0000000 --- a/src/typechain/SeedERC20Factory.ts +++ /dev/null @@ -1,235 +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 SeedERC20FactoryInterface extends utils.Interface { - functions: { - "createChild(bytes)": FunctionFragment; - "createChildTyped((address,address,uint256,uint256,(string,string,address,uint256)))": FunctionFragment; - "implementation()": FunctionFragment; - "isChild(address)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "createChild", - values: [BytesLike] - ): string; - encodeFunctionData( - functionFragment: "createChildTyped", - values: [SeedERC20ConfigStruct] - ): 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 SeedERC20Factory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: SeedERC20FactoryInterface; - - 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_: SeedERC20ConfigStruct, - 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_: SeedERC20ConfigStruct, - 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_: SeedERC20ConfigStruct, - 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_: SeedERC20ConfigStruct, - 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_: SeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild( - maybeChild_: string, - overrides?: CallOverrides - ): 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..75fbe4e --- /dev/null +++ b/src/typechain/StackHeightTest.ts @@ -0,0 +1,165 @@ +/* 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: { + "initialize((bytes[],uint256[]))": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "initialize", + values: [StateConfigStruct] + ): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + 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: { + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + }; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + callStatic: { + initialize( + stateConfig_: StateConfigStruct, + overrides?: CallOverrides + ): Promise; + + packedFunctionPointers(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers(overrides?: CallOverrides): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/ReserveNFT.ts b/src/typechain/Stake.ts similarity index 54% rename from src/typechain/ReserveNFT.ts rename to src/typechain/Stake.ts index 5f1c30e..3c613a2 100644 --- a/src/typechain/ReserveNFT.ts +++ b/src/typechain/Stake.ts @@ -17,106 +17,122 @@ 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 { +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: { - "addFreezable(address)": FunctionFragment; + "allowance(address,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; + "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; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; "supportsInterface(bytes4)": FunctionFragment; "symbol()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; "transferFrom(address,address,uint256)": FunctionFragment; + "withdraw(uint256)": FunctionFragment; }; encodeFunctionData( - functionFragment: "addFreezable", - values: [string] + functionFragment: "allowance", + values: [string, string] ): string; encodeFunctionData( functionFragment: "approve", values: [string, BigNumberish] ): string; encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData(functionFragment: "freezables", values: [string]): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "decreaseAllowance", + values: [string, BigNumberish] + ): string; encodeFunctionData( - functionFragment: "getApproved", + functionFragment: "deposit", values: [BigNumberish] ): string; encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] + functionFragment: "deposits", + values: [string, BigNumberish] ): string; - encodeFunctionData(functionFragment: "maxSupply", values?: undefined): string; encodeFunctionData( - functionFragment: "mint", + functionFragment: "increaseAllowance", values: [string, BigNumberish] ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] + functionFragment: "initialize", + values: [StakeConfigStruct] ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] + functionFragment: "report", + values: [string, BigNumberish[]] ): string; encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] + functionFragment: "reportTimeForTier", + values: [string, BigNumberish, BigNumberish[]] ): 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: "transfer", + values: [string, BigNumberish] + ): string; encodeFunctionData( functionFragment: "transferFrom", values: [string, string, BigNumberish] ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BigNumberish] + ): string; - decodeFunctionResult( - functionFragment: "addFreezable", - data: BytesLike - ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "freezables", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "getApproved", + functionFragment: "decreaseAllowance", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposits", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "isApprovedForAll", + functionFragment: "increaseAllowance", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "maxSupply", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom", - data: BytesLike - ): Result; + decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "setApprovalForAll", + functionFragment: "reportTimeForTier", data: BytesLike ): Result; decodeFunctionResult( @@ -124,54 +140,61 @@ export interface ReserveNFTInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; decodeFunctionResult( functionFragment: "transferFrom", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; events: { "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; + "Initialize(address,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): 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 InitializeEvent = TypedEvent< + [string, StakeConfigStructOutput], + { sender: string; config: StakeConfigStructOutput } >; -export type ApprovalForAllEventFilter = TypedEventFilter; +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; tokenId: BigNumber } + { from: string; to: string; value: BigNumber } >; export type TransferEventFilter = TypedEventFilter; -export interface ReserveNFT extends BaseContract { +export interface Stake extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: ReserveNFTInterface; + interface: StakeInterface; queryFilter( event: TypedEventFilter, @@ -193,450 +216,475 @@ export interface ReserveNFT extends BaseContract { removeListener: OnEvent; functions: { - addFreezable( - account_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + allowance( + owner: string, + spender: string, + overrides?: CallOverrides + ): Promise<[BigNumber]>; approve( - to: string, - tokenId: BigNumberish, + spender: string, + amount: 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]>; + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; + decimals(overrides?: CallOverrides): Promise<[number]>; - maxSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - mint( - _address: string, - _amount: BigNumberish, + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - name(overrides?: CallOverrides): Promise<[string]>; + deposit( + assets_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; - ownerOf( - tokenId: BigNumberish, + deposits( + arg0: string, + arg1: BigNumberish, overrides?: CallOverrides - ): Promise<[string]>; + ): Promise<[number, BigNumber] & { timestamp: number; amount: BigNumber }>; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, + initialize( + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + name(overrides?: CallOverrides): Promise<[string]>; + + 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, + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise<[boolean]>; symbol(overrides?: CallOverrides): Promise<[string]>; - tokenURI( - tokenId: BigNumberish, - 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, - tokenId: BigNumberish, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + withdraw( + shares_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; - addFreezable( - account_: string, - 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; - - freezables(arg0: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; + balanceOf(account: string, overrides?: CallOverrides): Promise; - maxSupply(overrides?: CallOverrides): Promise; + decimals(overrides?: CallOverrides): Promise; - mint( - _address: string, - _amount: BigNumberish, + decreaseAllowance( + spender: string, + subtractedValue: 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, + deposit( + assets_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, + deposits( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise<[number, BigNumber] & { timestamp: number; amount: BigNumber }>; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - approved: boolean, + initialize( + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + name(overrides?: CallOverrides): Promise; + + report( + account_: string, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + supportsInterface( - interfaceId: BytesLike, + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; symbol(overrides?: CallOverrides): Promise; - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - totalSupply(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; + + withdraw( + shares_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; callStatic: { - addFreezable(account_: string, overrides?: CallOverrides): Promise; + allowance( + owner: string, + spender: string, + overrides?: CallOverrides + ): Promise; approve( - to: string, - tokenId: BigNumberish, + spender: string, + amount: BigNumberish, overrides?: CallOverrides - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; + ): Promise; - freezables(arg0: string, overrides?: CallOverrides): Promise; + balanceOf(account: string, overrides?: CallOverrides): Promise; - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; + decimals(overrides?: CallOverrides): Promise; - isApprovedForAll( - owner: string, - operator: string, + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: CallOverrides ): Promise; - maxSupply(overrides?: CallOverrides): Promise; - - mint( - _address: string, - _amount: BigNumberish, + deposit( + assets_: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; - name(overrides?: CallOverrides): Promise; + deposits( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise<[number, BigNumber] & { timestamp: number; amount: BigNumber }>; - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: CallOverrides + ): Promise; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, + initialize( + config_: StakeConfigStruct, overrides?: CallOverrides ): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, + name(overrides?: CallOverrides): Promise; + + report( + account_: string, + context_: BigNumberish[], overrides?: CallOverrides - ): Promise; + ): Promise; - setApprovalForAll( - operator: string, - approved: boolean, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: CallOverrides - ): Promise; + ): Promise; supportsInterface( - interfaceId: BytesLike, + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; symbol(overrides?: CallOverrides): Promise; - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - totalSupply(overrides?: CallOverrides): Promise; + transfer( + to: string, + amount: BigNumberish, + overrides?: CallOverrides + ): Promise; + transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; + + withdraw( + shares_: BigNumberish, + overrides?: CallOverrides + ): 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; + "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, - tokenId?: BigNumberish | null + value?: null ): TransferEventFilter; Transfer( from?: string | null, to?: string | null, - tokenId?: BigNumberish | null + value?: null ): TransferEventFilter; }; estimateGas: { - addFreezable( - account_: string, - overrides?: Overrides & { from?: string | 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; - freezables(arg0: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; + decimals(overrides?: CallOverrides): Promise; - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise } ): Promise; - maxSupply(overrides?: CallOverrides): Promise; - - mint( - _address: string, - _amount: BigNumberish, + deposit( + assets_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, + deposits( + arg0: string, + arg1: BigNumberish, overrides?: CallOverrides ): Promise; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, + initialize( + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + name(overrides?: CallOverrides): Promise; - supportsInterface( - interfaceId: BytesLike, + report( + account_: string, + context_: BigNumberish[], overrides?: CallOverrides ): Promise; - symbol(overrides?: CallOverrides): Promise; + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; - tokenURI( - tokenId: BigNumberish, + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides ): 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, - tokenId: BigNumberish, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + withdraw( + shares_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; populateTransaction: { - addFreezable( - account_: string, - overrides?: Overrides & { from?: string | 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, + account: string, overrides?: CallOverrides ): Promise; - freezables( - arg0: string, - overrides?: CallOverrides + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise } ): Promise; - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides + deposit( + assets_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } ): Promise; - isApprovedForAll( - owner: string, - operator: string, + deposits( + arg0: string, + arg1: BigNumberish, overrides?: CallOverrides ): Promise; - maxSupply(overrides?: CallOverrides): Promise; + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; - mint( - _address: string, - _amount: BigNumberish, + initialize( + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; name(overrides?: CallOverrides): Promise; - ownerOf( - tokenId: BigNumberish, + report( + account_: string, + context_: 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 } + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides ): Promise; supportsInterface( - interfaceId: BytesLike, + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; symbol(overrides?: CallOverrides): Promise; - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - totalSupply(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; + + withdraw( + shares_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; diff --git a/src/typechain/ERC20BalanceTierFactory.ts b/src/typechain/StakeFactory.ts similarity index 87% rename from src/typechain/ERC20BalanceTierFactory.ts rename to src/typechain/StakeFactory.ts index 3b04954..6680522 100644 --- a/src/typechain/ERC20BalanceTierFactory.ts +++ b/src/typechain/StakeFactory.ts @@ -17,20 +17,24 @@ 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 StakeConfigStruct = { + token: string; + initialRatio: BigNumberish; + name: string; + symbol: string; }; -export type ERC20BalanceTierConfigStructOutput = [string, BigNumber[]] & { - erc20: string; - tierValues: BigNumber[]; +export type StakeConfigStructOutput = [string, BigNumber, string, string] & { + token: string; + initialRatio: BigNumber; + name: string; + symbol: string; }; -export interface ERC20BalanceTierFactoryInterface extends utils.Interface { +export interface StakeFactoryInterface extends utils.Interface { functions: { "createChild(bytes)": FunctionFragment; - "createChildTyped((address,uint256[8]))": FunctionFragment; + "createChildTyped((address,uint256,string,string))": FunctionFragment; "implementation()": FunctionFragment; "isChild(address)": FunctionFragment; }; @@ -41,7 +45,7 @@ export interface ERC20BalanceTierFactoryInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "createChildTyped", - values: [ERC20BalanceTierConfigStruct] + values: [StakeConfigStruct] ): string; encodeFunctionData( functionFragment: "implementation", @@ -86,12 +90,12 @@ export type NewChildEvent = TypedEvent< export type NewChildEventFilter = TypedEventFilter; -export interface ERC20BalanceTierFactory extends BaseContract { +export interface StakeFactory extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: ERC20BalanceTierFactoryInterface; + interface: StakeFactoryInterface; queryFilter( event: TypedEventFilter, @@ -119,7 +123,7 @@ export interface ERC20BalanceTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC20BalanceTierConfigStruct, + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -134,7 +138,7 @@ export interface ERC20BalanceTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC20BalanceTierConfigStruct, + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -146,7 +150,7 @@ export interface ERC20BalanceTierFactory extends BaseContract { createChild(data_: BytesLike, overrides?: CallOverrides): Promise; createChildTyped( - config_: ERC20BalanceTierConfigStruct, + config_: StakeConfigStruct, overrides?: CallOverrides ): Promise; @@ -179,7 +183,7 @@ export interface ERC20BalanceTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC20BalanceTierConfigStruct, + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -195,7 +199,7 @@ export interface ERC20BalanceTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: ERC20BalanceTierConfigStruct, + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; 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/StandardVM.ts b/src/typechain/StandardVM.ts new file mode 100644 index 0000000..a93590e --- /dev/null +++ b/src/typechain/StandardVM.ts @@ -0,0 +1,122 @@ +/* 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 StandardVMInterface extends utils.Interface { + functions: { + "packedFunctionPointers()": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", + data: BytesLike + ): Result; + + events: {}; +} + +export interface StandardVM extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: StandardVMInterface; + + 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: { + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + }; + + packedFunctionPointers(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + callStatic: { + packedFunctionPointers(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + packedFunctionPointers(overrides?: CallOverrides): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): 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/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/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..b6a9b5d --- /dev/null +++ b/src/typechain/VMStateBuilder.ts @@ -0,0 +1,221 @@ +/* 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 VMStateBuilderInterface 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 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( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise<[void]>; + + stackPops(overrides?: CallOverrides): Promise<[BigNumber[]]>; + + stackPushes(overrides?: CallOverrides): Promise<[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/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 4255974..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( @@ -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 } @@ -415,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, @@ -514,9 +520,9 @@ export interface Verify extends BaseContract { overrides?: CallOverrides ): Promise; - statusAtBlock( + statusAtTime( state_: StateStruct, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; @@ -607,9 +613,9 @@ export interface Verify extends BaseContract { overrides?: CallOverrides ): Promise; - statusAtBlock( + statusAtTime( state_: StateStruct, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; @@ -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; @@ -778,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; @@ -883,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/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/VerifyTier.ts b/src/typechain/VerifyTier.ts index 033eab3..d2712bf 100644 --- a/src/typechain/VerifyTier.ts +++ b/src/typechain/VerifyTier.ts @@ -20,28 +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; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; + "Initialized(uint8)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; } export type InitializeEvent = TypedEvent< @@ -51,18 +66,9 @@ export type InitializeEvent = TypedEvent< 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 VerifyTier extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; @@ -96,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<[void]>; + ): Promise<[BigNumber]>; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; }; initialize( @@ -111,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: { @@ -140,20 +173,8 @@ export interface VerifyTier extends BaseContract { ): InitializeEventFilter; Initialize(sender?: null, verify?: null): InitializeEventFilter; - "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; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; }; estimateGas: { @@ -162,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; }; @@ -180,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 new file mode 100644 index 0000000..7df523b --- /dev/null +++ b/src/typechain/factories/AllStandardOpsStateBuilder__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 { + 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: "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: "", + type: "uint256[]", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "stackPushes", + outputs: [ + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b50611d97806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d5236cd14610051578063661b810d1461006f578063aa9628a114610077578063ce19c93514610097575b600080fd5b6100596100ac565b604051610066919061158b565b60405180910390f35b6100596100cc565b61008a6100853660046118e3565b6100e7565b6040516100669190611a01565b6100aa6100a5366004611a52565b6103c2565b005b6040805160008152602081019091526060906100c7906107ca565b905090565b6040805160008152602081019091526060906100c79061099b565b606060006100f485610b6d565b905060006101058260200151610ed2565b905060008060006101146100cc565b905060006101206100ac565b905060005b88518110156101ea57866000015161ffff1689828151811061014957610149611aed565b602002602001015160a001818152505061017e83838c8c858151811061017157610171611aed565b60200260200101516103c2565b6101ae89828151811061019357610193611aed565b60200260200101516080015186610f0690919063ffffffff16565b94506101e08982815181106101c5576101c5611aed565b60200260200101516060015185610f0690919063ffffffff16565b9350600101610125565b506000848a60200151510167ffffffffffffffff81111561020d5761020d6115cf565b604051908082528060200260200182016040528015610236578160200160208202803683370190505b50905060005b8a602001515181101561028c578a60200151818151811061025f5761025f611aed565b602002602001015182828151811061027957610279611aed565b602090810291909101015260010161023c565b5089515160009067ffffffffffffffff8111156102ab576102ab6115cf565b6040519080825280602002602001820160405280156102de57816020015b60608152602001906001900390816102c95790505b50905060005b8b515181101561033a57610315888d60000151838151811061030857610308611aed565b6020026020010151610f1f565b82828151811061032757610327611aed565b60209081029190910101526001016102e4565b506103b26040518060a00160405280600081526020018767ffffffffffffffff811115610369576103696115cf565b604051908082528060200260200182016040528015610392578160200160208202803683370190505b5081526020018381526020018481526020018d60200151518152506110af565b9c9b505050505050505050505050565b80518251518110610434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000808060008060208602602001885101519050805193505b838510156106dd576002850194508481015180601e1a935080601f1a925050600683101561061e57826104fe5787602001515187608001510182106104ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4f4f425f434f4e5354414e540000000000000000000000000000000000000000604482015260640161042b565b60408701805160010190526106c0565b600183141561057457866040015182106104ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4f425f535441434b0000000000000000000000000000000000000000000000604482015260640161042b565b600283141561058d5760408701805160010190526106c0565b6003831415610603578660a0015182106104ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f4f425f53544f52414745000000000000000000000000000000000000000000604482015260640161042b565b6004831415610619576106198a8a8a8a866111ec565b6106c0565b60008a848151811061063257610632611aed565b60200260200101519050600581111561065757806106538463ffffffff8316565b9150505b60408801805182900390819052606089015161067291610f06565b606089015289516000908b908690811061068e5761068e611aed565b6020026020010151905060058111156106b357806106af8563ffffffff8316565b9150505b6040890180519091019052505b604087015160608801516106d391610f06565b606088015261044d565b606087015160ff101561074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b0000000000000000000000000000000000000000000000604482015260640161042b565b8660200151876040015110156107be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e444558000000000000000000000000000000604482015260640161042b565b50505050505050505050565b60606000825190506000604051806105e001604052808360286006010181526020016001815260200160018152602001600181526020016001815260200160008152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200161085061128f90565b81526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152509050604051602083020160405280925060005b828110156109935784818151811061096057610960611aed565b602002602001015184602860060183018151811061098057610980611aed565b6020908102919091010152600101610946565b505050919050565b8051606090600061128f90506000604051806105e0016040528084602860060101815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160028152602001600181526020016003815260200160028152602001600281526020016002815260200160038152602001610a256112fe90565b81526020016000815260200160008152602001600081526020016000815260200160018152602001600281526020016002815260200160018152602001600181526020018381526020016003815260200160028152602001838152602001600281526020016001815260200160028152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001610ae361137390565b815260200161137981526002602082015260400161137f815260200160028152509050604051602084020160405280935060005b83811015610b6457858181518110610b3157610b31611aed565b6020026020010151856028600601830181518110610b5157610b51611aed565b6020908102919091010152600101610b17565b50505050919050565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff84811682528183529083902083518085019094525461ffff8116845262010000900416908201819052610ecd5760008273ffffffffffffffffffffffffffffffffffffffff163b11610c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f53495a455f564d0000000000000000000000000000000000000000000000604482015260640161042b565b60008273ffffffffffffffffffffffffffffffffffffffff1663ea7cb3706040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c93573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cd99190810190611b1c565b905060008373ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b9190611b93565b905061ffff801681602001511115610dbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4f425f53544f524147455f4f50434f44455300000000000000000000000000604482015260640161042b565b6002825181610dd057610dd0611be2565b0615610e38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f504f494e5445525300000000000000000000000000000000604482015260640161042b565b6040518060400160405280826020015161ffff168152602001610e5a846113ec565b73ffffffffffffffffffffffffffffffffffffffff908116909152858116600090815260208181526040909120835181549285015190931662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090921661ffff90931692909217179055925050505b919050565b6060610f008260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611477565b92915050565b600081831015610f165781610f18565b825b9392505050565b805182516060919060011615610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4f44445f5041434b45445f505452530000000000000000000000000000000000604482015260640161042b565b6002810615610ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e475448000000000000000000000000000000604482015260640161042b565b60006002600383020467ffffffffffffffff81111561101d5761101d6115cf565b6040519080825280601f01601f191660200182016040528015611047576020820181803683370190505b50905060056002808701908681019085880101600385015b818310156110a157825180601e1a868111156110805760020285015161ffff165b81601f1a8160081b178351178352505060028301925060038101905061105f565b509398975050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016110fb9190611c11565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526111379291602001611c47565b604051602081830303815290604052905060005b8560400151518110156111e357818660400151828151811061116f5761116f611aed565b60200260200101515160001b8760400151838151811061119157611191611aed565b60200260200101516040516020016111ab93929190611c6d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161114b565b50949350505050565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916112369190610f06565b6060840152608083015161124a9082610f06565b60808401528251600783168085526001600385811c161b919060005b838110156112825761127a8a8a8a8a6103c2565b600101611266565b5050909352505050505050565b60008082116112fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f305f4f504552414e445f4e5a4f4e000000000000000000000000000000000000604482015260640161042b565b5090565b6000808211611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f305f4f504552414e445f45524331313535000000000000000000000000000000604482015260640161042b565b5060020260010190565b60020190565b60030190565b6000601f821680610f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e44000000000000000000000000000000000000000000604482015260640161042b565b600080611417836040516020016114039190611ca4565b60405160208183030381529060405261155f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611471576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b80611496575050604080516020810190915260008152610f18565b808411156114b4575050604080516020810190915260008152610f18565b838310156114ff576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161042b565b83830384820360008282106115145782611516565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6060815182604051602001611575929190611cca565b6040516020818303038152906040529050919050565b6020808252825182820181905260009190848201906040850190845b818110156115c3578351835292840192918401916001016115a7565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611621576116216115cf565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561166e5761166e6115cf565b604052919050565b600067ffffffffffffffff821115611690576116906115cf565b5060051b60200190565b600067ffffffffffffffff8211156116b4576116b46115cf565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126116f157600080fd5b8135602061170661170183611676565b611627565b82815260059290921b8401810191818101908684111561172557600080fd5b8286015b848110156117405780358352918301918301611729565b509695505050505050565b6000604080838503121561175e57600080fd5b6117666115fe565b9150823567ffffffffffffffff8082111561178057600080fd5b818501915085601f83011261179457600080fd5b813560206117a461170183611676565b82815260059290921b840181019181810190898411156117c357600080fd5b8286015b84811015611837578035868111156117df5760008081fd5b8701603f81018c136117f15760008081fd5b848101356118016117018261169a565b8181528d8b8385010111156118165760008081fd5b818b84018883013760009181018701919091528452509183019183016117c7565b508752508681013594508285111561184e57600080fd5b61185a888689016116e0565b81870152505050505092915050565b600060c0828403121561187b57600080fd5b60405160c0810181811067ffffffffffffffff8211171561189e5761189e6115cf565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b6000806000606084860312156118f857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461191c57600080fd5b925060208481013567ffffffffffffffff8082111561193a57600080fd5b6119468883890161174b565b9450604087013591508082111561195c57600080fd5b508501601f8101871361196e57600080fd5b803561197c61170182611676565b81815260c0918202830184019184820191908a84111561199b57600080fd5b938501935b838510156119c1576119b28b86611869565b835293840193918501916119a0565b5080955050505050509250925092565b60005b838110156119ec5781810151838201526020016119d4565b838111156119fb576000848401525b50505050565b6020815260008251806020840152611a208160408501602087016119d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806101208587031215611a6957600080fd5b843567ffffffffffffffff80821115611a8157600080fd5b611a8d888389016116e0565b95506020870135915080821115611aa357600080fd5b611aaf888389016116e0565b94506040870135915080821115611ac557600080fd5b50611ad28782880161174b565b925050611ae28660608701611869565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611b2e57600080fd5b815167ffffffffffffffff811115611b4557600080fd5b8201601f81018413611b5657600080fd5b8051611b646117018261169a565b818152856020838501011115611b7957600080fd5b611b8a8260208301602086016119d1565b95945050505050565b600060408284031215611ba557600080fd5b6040516040810181811067ffffffffffffffff82111715611bc857611bc86115cf565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b815160009082906020808601845b83811015611c3b57815185529382019390820190600101611c1f565b50929695505050505050565b82815260008251611c5f8160208501602087016119d1565b919091016020019392505050565b60008451611c7f8184602089016119d1565b82018481528351611c978160208085019088016119d1565b0160200195945050505050565b6000815260008251611cbd8160018501602087016119d1565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d5381600e8501602087016119d1565b91909101600e01939250505056fea2646970667358221220a9ada7b31db93d7cfd280905ab5e6ab85e4b96cb1312199c8fa7b9b3dfff4c4964736f6c634300080a0033"; + +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..6fa87bd --- /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: [ + { + 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: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "run", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "context_", + 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 = + "0x60c060405260006001556001600255600260035560036004553480156200002557600080fd5b50604051620038083803806200380883398101604081905262000048916200005e565b306080526001600160a01b031660a05262000090565b6000602082840312156200007157600080fd5b81516001600160a01b03811681146200008957600080fd5b9392505050565b60805160a051613752620000b6600039600061094d0152600061097a01526137526000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c04062261161005b578063c0406226146100e9578063c19d93fb146100f1578063e0419ae314610106578063ea7cb3701461014257600080fd5b8063016e477d1461008d578063138ef151146100a25780634e75d77e146100c0578063b9e62b74146100d3575b600080fd5b6100a061009b366004612c7f565b610157565b005b6100aa6101db565b6040516100b79190612cef565b60405180910390f35b6100a06100ce366004612d02565b610236565b6100db610315565b6040519081526020016100b7565b6100a061034a565b6100f96103de565b6040516100b79190612e0c565b604080518082018252600080825260209182015281518083018352600180825260039183019182528351908152905191810191909152016100b7565b61014a6105bf565b6040516100b79190612ea3565b60006101616105d7565b905061016f82826000610634565b50805160059081556020808301518051849392610191926006929101906129c6565b50604082015180516101ad916002840191602090910190612a11565b50606082015180516101c99160038401916020909101906129c6565b50608082015181600401559050505050565b6060600560010180548060200260200160405190810160405280929190818152602001828054801561022c57602002820191906000526020600020905b815481526020019060010190808311610218575b5050505050905090565b61026f6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6102c96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161029057905050905081816000815181106102f2576102f2612eb6565b60200260200101819052506103108361030a90612f2b565b8261090d565b505050565b60055460009060069061032a90600190613075565b8154811061033a5761033a612eb6565b9060005260206000200154905090565b60006103546105d7565b6040805160008082526020820190925291925061037391908390610634565b50805160059081556020808301518051849392610395926006929101906129c6565b50604082015180516103b1916002840191602090910190612a11565b50606082015180516103cd9160038401916020909101906129c6565b506080820151816004015590505050565b6104106040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60056040518060a0016040529081600082015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561047657602002820191906000526020600020905b815481526020019060010190808311610462575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156105505783829060005260206000200180546104c39061308c565b80601f01602080910402602001604051908101604052809291908181526020018280546104ef9061308c565b801561053c5780601f106105115761010080835404028352916020019161053c565b820191906000526020600020905b81548152906001019060200180831161051f57829003601f168201915b5050505050815260200190600101906104a4565b505050508152602001600382018054806020026020016040519081016040528092919081815260200182805480156105a757602002820191906000526020600020905b815481526020019060010190808311610593575b50505050508152602001600482015481525050905090565b60606105d26105cd82610a60565b610c81565b905090565b6106096040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6000546105d29061062f9073ffffffffffffffffffffffffffffffffffffffff16610cc0565b610cf4565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156108f3576003890198508886015180601f1a975061ffff8160081c16985050600688101561086b57876106b75786602002840151825260208201915061087e565b60018814156106d45760208702830151825260208201915061087e565b6002881415610763578c51871061074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064015b60405180910390fd5b866020026020018d0151825260208201915061087e565b60038814156107ac57600061079a604080518082018252600080825260209182015281518083019092526001825260039082015290565b5188015483525060209091019061087e565b60048814156107c8576107c18d8d848a610e60565b915061087e565b6060876107f6578c6040516020016107e09190612e0c565b6040516020818303038152906040529050610855565b600188141561080f576108088d610fcd565b9050610855565b600288141561082b576020808e01516040516107e092016130da565b6003881415610855578c516040805160208101929092520160405160208183030381529060405290505b805115610865576108658161110a565b5061087e565b8761087a888463ffffffff8416565b9250505b60208c0151518c5111156108ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610743565b610672565b6020838303048c52509750505050505050505b9392505050565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a1906109a6907f0000000000000000000000000000000000000000000000000000000000000000908790879060040161313f565b6000604051808303816000875af11580156109c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a0b9190810190613227565b9050610a168161119c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261122760e0840181905261131b6101008501526113a76101208501526114c86101408501526101608401526115716101808401526116796101a084015261174d6101c084015261194a6101e084015261195561020084015261196061022084015261196b6102408401526119766102608401526119aa610280840152611a106102a0840152611a766102c0840152611aaa6102e0840152611ade610300840152611b13610320840152611b6e610340840152611bc4610360840152611bed610380840152611c446103a0840152611c716103c0840152611cc86103e0840152611d33610400840152611d90610420840152611dce610440840152611e07610460840152611e3b610480840152611e6d6104a0840152611e9f6104c0840152611ed16104e0840152611f05610500840152611f57610520840152611f9061054084015261204261056084015261216f6105808401526121cb6105a08401526122856105c0840152835190850201909252919082815b83811015610c7857858181518110610c3757610c37612eb6565b6020026020010151856028600601830181518110610c5757610c57612eb6565b67ffffffffffffffff90921660209283029190910190910152600101610c1d565b50505050919050565b60606020820182516020028101600284015b81831015610cb05782518151178152602090920191600201610c93565b5050825160020283525090919050565b6060610cee8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612301565b92915050565b610d266040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610d586040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610d8c57610d8c612b49565b604051908082528060200260200182016040528015610db5578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610dec57610dec612b49565b604051908082528060200260200182016040528015610e15578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610e4f578160208202602001840152815160200182019150600181019050610e28565b505060408501525091949350505050565b600060078216600383811c16828082610e9f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100610eea565b8260011415610ec357506fffffffffffffffffffffffffffffffff90506080610eea565b8260021415610edf575067ffffffffffffffff90506040610eea565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115610f0d57610f0d612b49565b604051908082528060200260200182016040528015610f36578160200160208202803683370190505b50905060208082019083028a03815b8b821015610f5d578151815260209182019101610f45565b505060608b015160808c015160209081029091010160005b610100811015610fbb5760208502830182845b82811015610fa4578051841c8a16825260209182019101610f88565b505050610fb28e8e8b610634565b9b508501610f75565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161101991906130da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611055929160200161329e565b604051602081830303815290604052905060005b85604001515181101561110157818660400151828151811061108d5761108d612eb6565b60200260200101515160001b876040015183815181106110af576110af612eb6565b60200260200101516040516020016110c9939291906132c4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611069565b50949350505050565b6111998160405160240161111e9190612ea3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526123e9565b50565b6000806111c7836040516020016111b391906132fb565b60405160208183030381529060405261240a565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611221576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190613321565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139b9190613321565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015611496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ba9190613321565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016112cd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611632573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611656919061333a565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401611479565b60008060008467ffffffffffffffff81111561176b5761176b612b49565b604051908082528060200260200182016040528015611794578160200160208202803683370190505b50905060008567ffffffffffffffff8111156117b2576117b2612b49565b6040519080825280602002602001820160405280156117db578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611830578251815260209283019201611818565b5050602088028101602084015b8183101561185557825181526020928301920161183d565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906118af9087908790600401613370565b600060405180830381865afa1580156118cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261191291908101906133dd565b9050846020820160208a0281015b8082101561193b578151835260209283019290910190611920565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261139b8287612436565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361130e82611a0a858a612436565b906124b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361130e82611a70858a612436565b906124d6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261139b82876124eb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261139b8287612536565b6000602083028203805b83811015611b085780518015611aff578252611b08565b50602001611ae8565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611b08578051611be55760008252611b08565b602001611bce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015611d0657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15611d2557508051602090910190611d1e8382612594565b9250611cd8565b505081526020019392505050565b6020828102820380516000928201835b8582108015611d7157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15611d2557508051602090910190611d8983826125d0565b9250611d43565b6020828102820380516000928201835b8582108015611daf5750826000105b15611d2557508051602090910190611dc783826125ff565b9250611da0565b600060208302820380516000602083015b85811015611d255780518301915082821015611dfa57600080fd5b9091508190602001611ddf565b600060208302820380516000602083015b85811015611d25578051915081611e2e57600080fd5b9181900491602001611e18565b6020828102820380516000928201835b85821015611d2557508051602090910190611e66818461358e565b9250611e4b565b6020828102820380516000928201835b85821015611d255750805182811115611e94578092505b602082019150611e7d565b6020828102820380516000928201835b85821015611d255750805182811015611ec6578092505b602082019150611eaf565b600060208302820380516000602083015b85811015611d25578051915081611ef857600080fd5b9181900691602001611ee2565b60006020830282038051600080602084015b86811015611f48578315611f40578051925082840291508284830414611f3c57600080fd5b8193505b602001611f17565b50505081526020019392505050565b600060208302820380516000602083015b85811015611d255780518303915082821115611f8357600080fd5b9091508190602001611f68565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490611479908690869060040161359a565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061211b908790879087906004016135c9565b602060405180830381865afa158015612138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215c9190613321565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361130e8383612615565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156121f9576121f9612b49565b604051908082528060200260200182016040528015612222578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561225e5781518160200186015260208201915060208101905061223c565b5050519050600061227183838989612674565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856122f2858585856127c4565b90955250949695505050505050565b6060833b80612320575050604080516020810190915260008152610906565b8084111561233e575050604080516020810190915260008152610906565b83831015612389576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610743565b838303848203600082821061239e57826123a0565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60608151826040516020016124209291906135fe565b6040516020818303038152906040529050919050565b600080826012141561244b5783915050610cee565b82601211156124775750601282900361246581600a61358e565b61246f9085613695565b915050610cee565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016124a681600a61358e565b61246f90856136d2565b5092915050565b6000816124cc670de0b6b3a764000085613695565b61090691906136d2565b6000670de0b6b3a76400006124cc8385613695565b600081810b6124fb575081610cee565b60008260000b13156125235761251282600a61370d565b61251c9084613695565b9050610cee565b60ff6000839003166124a681600a61358e565b600080601283141561254b5783915050610cee565b8260121115612565575060128290036124a681600a61358e565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161246581600a61358e565b60008282018381106125a657806125c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826125df57506000610cee565b828202828482816125f2576125f2613110565b0414156125a657806125c8565b600081831161260f576000610906565b50900390565b60008060015b6008811161266c57600061262f868361286a565b9050600061263d868461286a565b9050600061264b83836125ff565b905061265b856001860383612917565b9450506001909201915061261b9050565b509392505050565b835160009081908190819060015b600881116127b6576000925082876126bb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6126bf565b5060005b60005b83811015612774576126ed8c82815181106126df576126df612eb6565b60200260200101518461286a565b95508a861161273f578861270c5761270586836129a0565b9150612736565b600189141561271f5761270586836129b6565b60028914801561272d575084155b15612736578591505b6001945061276c565b8961276c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612774565b6001016126c2565b508361279d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6127ab866001840383612917565b955050600101612682565b509298975050505050505050565b6000826008811115612832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610743565b6000855b8581101561285e5763ffffffff6020820290811b199890981685891b17979150600101612836565b50959695505050505050565b60008160088111156128d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610743565b826128e657600091506124b0565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610743565b505063ffffffff602090920291821b199290921691901b1790565b60008183106129af5781610906565b5090919050565b6000818310156129af5781610906565b828054828255906000526020600020908101928215612a01579160200282015b82811115612a015782518255916020019190600101906129e6565b50612a0d929150612a6a565b5090565b828054828255906000526020600020908101928215612a5e579160200282015b82811115612a5e5782518051612a4e918491602090910190612a7f565b5091602001919060010190612a31565b50612a0d929150612af2565b5b80821115612a0d5760008155600101612a6b565b828054612a8b9061308c565b90600052602060002090601f016020900481019282612aad5760008555612a01565b82601f10612ac657805160ff1916838001178555612a01565b82800160010185558215612a015791820182811115612a015782518255916020019190600101906129e6565b80821115612a0d576000612b068282612b0f565b50600101612af2565b508054612b1b9061308c565b6000825580601f10612b2b575050565b601f0160209004906000526020600020908101906111999190612a6a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715612b9b57612b9b612b49565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612be857612be8612b49565b604052919050565b600067ffffffffffffffff821115612c0a57612c0a612b49565b5060051b60200190565b600082601f830112612c2557600080fd5b81356020612c3a612c3583612bf0565b612ba1565b82815260059290921b84018101918181019086841115612c5957600080fd5b8286015b84811015612c745780358352918301918301612c5d565b509695505050505050565b600060208284031215612c9157600080fd5b813567ffffffffffffffff811115612ca857600080fd5b6125c884828501612c14565b600081518084526020808501945080840160005b83811015612ce457815187529582019590820190600101612cc8565b509495945050505050565b6020815260006109066020830184612cb4565b600060208284031215612d1457600080fd5b813567ffffffffffffffff811115612d2b57600080fd5b82016040818503121561090657600080fd5b60005b83811015612d58578181015183820152602001612d40565b83811115612d67576000848401525b50505050565b60008151808452612d85816020860160208601612d3d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015612dff578284038952612ded848351612d6d565b98850198935090840190600101612dd5565b5091979650505050505050565b60208152815160208201526000602083015160a06040840152612e3260c0840182612cb4565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858403016060860152612e6e8383612db7565b9250606086015191508085840301608086015250612e8c8282612cb4565b915050608084015160a08401528091505092915050565b6020815260006109066020830184612d6d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600067ffffffffffffffff821115612eff57612eff612b49565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006040808336031215612f3e57600080fd5b612f46612b78565b833567ffffffffffffffff80821115612f5e57600080fd5b9085019036601f830112612f7157600080fd5b81356020612f81612c3583612bf0565b82815260059290921b84018101918181019036841115612fa057600080fd5b8286015b8481101561301457803586811115612fbc5760008081fd5b870136603f820112612fce5760008081fd5b84810135612fde612c3582612ee5565b818152368c838501011115612ff35760008081fd5b818c8401888301376000918101870191909152845250918301918301612fa4565b508652508781013595508286111561302b57600080fd5b61303736878a01612c14565b90850152509195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561308757613087613046565b500390565b600181811c908216806130a057607f821691505b60208210811415611221577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b815160009082906020808601845b83811015613104578151855293820193908201906001016130e8565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261317a83880183612db7565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a01526131b58483612cb4565b898103848b01528a51808252878c019550908701925060005b818110156132155785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c0909301926001016131ce565b50919c9b505050505050505050505050565b60006020828403121561323957600080fd5b815167ffffffffffffffff81111561325057600080fd5b8201601f8101841361326157600080fd5b805161326f612c3582612ee5565b81815285602083850101111561328457600080fd5b613295826020830160208601612d3d565b95945050505050565b828152600082516132b6816020850160208701612d3d565b919091016020019392505050565b600084516132d6818460208901612d3d565b820184815283516132ee816020808501908801612d3d565b0160200195945050505050565b6000815260008251613314816001850160208701612d3d565b9190910160010192915050565b60006020828403121561333357600080fd5b5051919050565b60006020828403121561334c57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461090657600080fd5b604080825283519082018190526000906020906060840190828701845b828110156133bf57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161338d565b505050838103828501526133d38186612cb4565b9695505050505050565b600060208083850312156133f057600080fd5b825167ffffffffffffffff81111561340757600080fd5b8301601f8101851361341857600080fd5b8051613426612c3582612bf0565b81815260059190911b8201830190838101908783111561344557600080fd5b928401925b828410156134635783518252928401929084019061344a565b979650505050505050565b600181815b808511156134c757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156134ad576134ad613046565b808516156134ba57918102915b93841c9390800290613473565b509250929050565b6000826134de57506001610cee565b816134eb57506000610cee565b8160018114613501576002811461350b57613527565b6001915050610cee565b60ff84111561351c5761351c613046565b50506001821b610cee565b5060208310610133831016604e8410600b841016171561354a575081810a610cee565b613554838361346e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561358657613586613046565b029392505050565b600061090683836134cf565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006125c86040830184612cb4565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006132956060830184612cb4565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161368781600e850160208701612d3d565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136cd576136cd613046565b500290565b600082613708577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061090660ff8416836134cf56fea264697066735822122047ec9cb99d33e9fd22ffccfe52562647bf8b7eb300bb0f7c1693cb5d1de14dca64736f6c634300080a0033"; + +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/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/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/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..96d7eb9 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", }, @@ -75,28 +81,30 @@ const _abi = [ inputs: [ { components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, { internalType: "uint256", - name: "stackLength", + name: "combinedTiersLength", type: "uint256", }, { - internalType: "uint256", - name: "argumentsLength", - 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", + internalType: "struct CombineTierConfig", name: "config_", type: "tuple", }, @@ -147,7 +155,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61388680610dbe83390190565b608051610cfa6100c4600039600081816093015261037a0152610cfa6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e57806384e0ecdb146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee919061070c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161031991906108bf565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108d2565b92915050565b60008061037183850185610a25565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517fe684b6d600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063e684b6d6906103f3908590600401610be8565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201608081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b8060051b360383131561066d57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156106ef57600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000602080835260a083016107218586610606565b6080848701528281845260c08701905060c08260051b88010193508260005b838110156107ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126107a157600080fd5b8501803567ffffffffffffffff8111156107ba57600080fd5b8036038713156107c957600080fd5b6107d688828b8501610674565b975050509186019190860190600101610740565b50505050506107fb82860186610606565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08583030160408601526108328284836106bd565b9250505060408401356060840152606084013560808401528091505092915050565b6000815180845260005b8181101561087a5760208185018101518683018201520161085e565b8181111561088c576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610854565b6000602082840312156108e457600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610941576109416108ef565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561098e5761098e6108ef565b604052919050565b600067ffffffffffffffff8211156109b0576109b06108ef565b5060051b60200190565b600082601f8301126109cb57600080fd5b813560206109e06109db83610996565b610947565b82815260059290921b840181019181810190868411156109ff57600080fd5b8286015b84811015610a1a5780358352918301918301610a03565b509695505050505050565b60006020808385031215610a3857600080fd5b823567ffffffffffffffff80821115610a5057600080fd5b9084019060808287031215610a6457600080fd5b610a6c61091e565b823582811115610a7b57600080fd5b8301601f81018813610a8c57600080fd5b8035610a9a6109db82610996565b81815260059190911b8201860190868101908a831115610ab957600080fd5b8784015b83811015610b6457803587811115610ad55760008081fd5b8501603f81018d13610ae75760008081fd5b89810135604089821115610afd57610afd6108ef565b610b2d8c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601610947565b8281528f82848601011115610b425760008081fd5b828285018e83013760009281018d019290925250845250918801918801610abd565b5084525050508284013582811115610b7b57600080fd5b610b87888286016109ba565b858301525060408301356040820152606083013560608201528094505050505092915050565b600081518084526020808501945080840160005b83811015610bdd57815187529582019590820190600101610bc1565b509495945050505050565b6000602080835260a08301845160808386015281815180845260c08701915060c08160051b8801019350848301925060005b81811015610c66577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40888603018352610c54858551610854565b94509285019291850191600101610c1a565b50505050908401518382037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001604085015290610ca38183610bad565b9150506040840151606084015260608401516080840152809150509291505056fea26469706673582212209f1edcfebafeb5d3d1638b31964f54d0ff073806f5075b2f4d53f884da2453de64736f6c634300080a003360a06040523480156200001157600080fd5b506002808060066007600b6200002982600462000087565b62000035919062000087565b62000041919062000087565b6200004d919062000087565b62000059919062000087565b62000065919062000087565b62000071919062000087565b6200007e90600562000087565b608052620000ae565b60008219821115620000a957634e487b7160e01b600052601160045260246000fd5b500190565b6080516137b5620000d1600039600081816109cf0152610a0a01526137b56000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063e053ea311461005b578063e684b6d614610080575b600080fd5b610059610054366004612c15565b610093565b005b61006e610069366004612c9e565b6100fa565b60405190815260200160405180910390f35b61005961008e366004612e5a565b610197565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000805481906101259062010000900473ffffffffffffffffffffffffffffffffffffffff16610305565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201529192506101649101604051602081830303815290604052826000610359565b6020810151815161017790600190612fdd565b8151811061018757610187612ff4565b6020026020010151915050919050565b600054610100900460ff166101b25760005460ff16156101b6565b303b155b610242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b600054610100900460ff1615801561028157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b61029261028d836105dd565b610739565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801561030157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b6103376040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b610340826107a7565b8060200190518101906103539190613166565b92915050565b602082015151825111156103c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016100f1565b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156105d0576002880197508784015180601e1a975080601f1a965050600587101561054f5760018714156104675781608087166104325750825b607f87168151811061044357600080fd5b8b516020820260200183015160208202602001850152600181018d5250505061055b565b600287141561049e57895180871061047e57600080fd5b6020870260200182015160208202602001830152600181018b525061055b565b60038714156104b7576104b28b8b886107d5565b61055b565b60048714156104e8576104b28a6040516020016104d491906133a4565b60405160208183030381529060405261093b565b866104b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016100f1565b61055b8b8b89896109cd565b60208a0151518a5111156105cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016100f1565b6103f5565b5050505050505050505050565b61060f6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f534f5552434553000000000000000000000000000000000000000000000060448201526064016100f1565b6040518060a0016040528060008152602001836040015167ffffffffffffffff8111156106a7576106a7612cbb565b6040519080825280602002602001820160405280156106d0578160200160208202803683370190505b5081526020018360000151815260200183602001518152602001836060015167ffffffffffffffff81111561070757610707612cbb565b604051908082528060200260200182016040528015610730578160200160208202803683370190505b50905292915050565b6000806107648360405160200161075091906133a4565b604051602081830303815290604052610afa565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd338285604051610799939291906133b7565b60405180910390a192915050565b60606103538260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b85565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff81111561083957610839612cbb565b604051908082528060200260200182016040528015610862578160200160208202803683370190505b50905060005b828110156108b9578760200151818960000151018151811061088c5761088c612ff4565b60200260200101518282815181106108a6576108a6612ff4565b6020908102919091010152600101610868565b5060005b6101008110156109305760005b8381101561091d57848286038483815181106108e8576108e8612ff4565b6020026020010151901b901c8960800151828151811061090a5761090a612ff4565b60209081029190910101526001016108ca565b50610929898988610359565b84016108bd565b505050505050505050565b6109ca8160405160240161094f91906133f0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052610c6e565b50565b7f0000000000000000000000000000000000000000000000000000000000000000821015610a0857610a03836005840383610c8f565b610af4565b7f00000000000000000000000000000000000000000000000000000000000000008203915060018210610a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b600084806020019051810190610aad9190613403565b90508073ffffffffffffffffffffffffffffffffffffffff168460200151856000015181518110610ae057610ae0612ff4565b602090810291909101015250825160010183525b50505050565b600080610b2583604051602001610b119190613420565b604051602081830303815290604052610dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610b7f576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b80610ba4575050604080516020810190915260008152610c67565b80841115610bc2575050604080516020810190915260008152610c67565b83831015610c0d576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016100f1565b8383038482036000828210610c225782610c24565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6004821015610ca857610ca3838383610e26565b505050565b601d821015610d2b57600b821015610cc857610ca3836004840383610f3c565b6016821015610cfe57610ca3837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff584018361126a565b610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea840183611703565b6023821015610d6157610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3840183611973565b6025821015610d9757610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd840183611e47565b6027821015610dcd57610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb840183612070565b610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd984018361226a565b6060815182604051602001610e10929190613446565b6040516020818303038152906040529050919050565b60048210610e90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b81610ec157438360200151846000015181518110610eb057610eb0612ff4565b602002602001018181525050610f31565b6001821415610ee557428360200151846000015181518110610eb057610eb0612ff4565b6002821415610f0957602083015183518151339291908110610eb057610eb0612ff4565b602083015183518151309291908110610f2457610f24612ff4565b6020026020010181815250505b505080516001019052565b60078210610fa6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b60028210156110f25782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01826110515783602001518160010181518110610ff157610ff1612ff4565b6020026020010151611029838660200151848151811061101357611013612ff4565b602002602001015161269690919063ffffffff16565b028460200151828151811061104057611040612ff4565b6020026020010181815250506110c6565b60018314156110c6578360200151816001018151811061107357611073612ff4565b6020026020010151611095838660200151848151811061101357611013612ff4565b816110a2576110a26134dd565b04846020015182815181106110b9576110b9612ff4565b6020026020010181815250505b5082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018352505050565b60058210156112035782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600283141561116957611142828560200151838151811061101357611013612ff4565b8460200151828151811061115857611158612ff4565b602002602001018181525050610af4565b60038314156111a257611142828560200151838151811061118c5761118c612ff4565b602002602001015161271790919063ffffffff16565b6004831415610af4576111db82856020015183815181106111c5576111c5612ff4565b602002602001015161277590919063ffffffff16565b846020015182815181106111f1576111f1612ff4565b60200260200101818152505050505050565b600582141561124557670de0b6b3a7640000836020015184600001518151811061122f5761122f612ff4565b6020908102919091010152505080516001019052565b6006821415610ca35760128360200151846000015181518110610f2457610f24612ff4565b600b82106112d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b825160208401518051838303927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01918391600091908390811061131a5761131a612ff4565b602002602001015190506000861415611372575b8282101561136d57602087015180516001909301928390811061135357611353612ff4565b602002602001015181611366919061350c565b905061132e565b6116d4565b60018614156113ee575b82821080156113aa57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561136d5781806001019250506113e7876020015183815181106113d0576113d0612ff4565b6020026020010151826127c090919063ffffffff16565b905061137c565b6002861415611437575b8282101561136d57602087015180516001909301928390811061141d5761141d612ff4565b6020026020010151816114309190612fdd565b90506113f8565b6003861415611494575b82821080156114505750806000105b1561136d57818060010192505061148d8760200151838151811061147657611476612ff4565b6020026020010151826127fc90919063ffffffff16565b9050611441565b60048614156114dd575b8282101561136d5760208701518051600190930192839081106114c3576114c3612ff4565b6020026020010151816114d69190613524565b905061149e565b6005861415611559575b828210801561151557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561136d5781806001019250506115528760200151838151811061153b5761153b612ff4565b60200260200101518261281290919063ffffffff16565b90506114e7565b60068614156115a2575b8282101561136d57602087015180516001909301928390811061158857611588612ff4565b60200260200101518161159b9190613561565b9050611563565b60078614156115eb575b8282101561136d5760208701518051600190930192839081106115d1576115d1612ff4565b6020026020010151816115e49190613575565b90506115ac565b6008861415611634575b8282101561136d57602087015180516001909301928390811061161a5761161a612ff4565b60200260200101518161162d91906136a9565b90506115f5565b60098614156116865760005b8383101561168057602088015180516001909401938490811061166557611665612ff4565b602002602001015190508181101561167b578091505b611640565b506116d4565b600a8614156116d45760005b838310156116d25760208801518051600190940193849081106116b7576116b7612ff4565b60200260200101519050818111156116cd578091505b611692565b505b80876020015185815181106116eb576116eb612ff4565b60209081029190910101525050506001019092525050565b6007821061176d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b825160208085015181830201018380156117b657600181146117ed5760028114611866576003811461188e57600481146118b657600581146118de57600681146119255761196b565b826117c057600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201805115905261196b565b60038310156117fb57600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830186527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0820180518015611857576020820151825261185f565b604082015182525b505061196b565b600283101561187457600080fd5b60018303865260408203602081015181511481525061196b565b600283101561189c57600080fd5b60018303865260408203602081015181511081525061196b565b60028310156118c457600080fd5b60018303865260408203602081015181511181525061196b565b838310156118eb57600080fd5b8315611920576001840383038652602084028203805b8381101561185f578051611918576000825261185f565b602001611901565b61196b565b8383101561193257600080fd5b831561196b576001840383038652602084028203805b83811015611968578051801561195f578252611968565b50602001611948565b50505b505050505050565b600682106119dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b600082611b05575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110611a4857611a48612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e053ea3185602001518360010181518110611a8457611a84612ff4565b60200260200101516040518263ffffffff1660e01b8152600401611ac4919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015611ae1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114291906136b5565b6001831415611b60577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460200151856000015181518110611b4957611b49612ff4565b602090810291909101015283516001018452610af4565b6002831415611b855760008460200151856000015181518110611b4957611b49612ff4565b6003831415611c39575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01808452602084015180516000919083908110611bd157611bd1612ff4565b60200260200101519050600085602001518360010181518110611bf657611bf6612ff4565b60200260200101519050611c0a8282612841565b86602001518481518110611c2057611c20612ff4565b6020908102919091010152505083516001018452610af4565b6004831415611d01575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600f80851692600486901c909116916000919085908110611c9457611c94612ff4565b60200260200101519050600087602001518560010181518110611cb957611cb9612ff4565b60200260200101519050611ccf828585846128a0565b88602001518681518110611ce557611ce5612ff4565b602090810291909101015250508551600101865250610af49050565b6005831415610af4575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f8316918290030180855290600783901c906003600585901c16908360008267ffffffffffffffff811115611d6657611d66612cbb565b604051908082528060200260200182016040528015611d8f578160200160208202803683370190505b50905060005b83811015611de45789602001518381518110611db357611db3612ff4565b6020026020010151828281518110611dcd57611dcd612ff4565b602090810291909101015260019283019201611d95565b50600089602001518381518110611dfd57611dfd612ff4565b60200260200101519050611e1382828888612946565b8a602001518881518110611e2957611e29612ff4565b60209081029190910101525050875160010188525050505050505050565b60028210611eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b81611fd75782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110611f1957611f19612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110611f5657611f56612ff4565b60200260200101516040518263ffffffff1660e01b8152600401611f96919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111db91906136b5565b6001821415610ca3578251602084015180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201918290811061201e5761201e612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb3573d6000803e3d6000fd5b600282106120da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810184527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018261217b578360200151818151811061213e5761213e612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110611a8457611a84612ff4565b6001831415610af4578360200151818151811061219a5761219a612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636352211e85602001518660000151815181106121d7576121d7612ff4565b60200260200101516040518263ffffffff1660e01b81526004016121fd91815260200190565b602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190613403565b73ffffffffffffffffffffffffffffffffffffffff16846020015182815181106111f1576111f1612ff4565b600282106122d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b816123de5782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd909201918290811061233c5761233c612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e8560200151836001018151811061237757612377612ff4565b60200260200101518660200151846002018151811061239857612398612ff4565b60200260200101516040518363ffffffff1660e01b8152600401611f9692919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6001821415610ca3576001810160008167ffffffffffffffff81111561240657612406612cbb565b60405190808252806020026020018201604052801561242f578160200160208202803683370190505b50905060008267ffffffffffffffff81111561244d5761244d612cbb565b604051908082528060200260200182016040528015612476578160200160208202803683370190505b5086518490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810189526020890151805193945091869003019160009190839081106124c6576124c6612ff4565b6020026020010151905060005b8581101561257d578860200151818401600101815181106124f6576124f6612ff4565b602002602001015185828151811061251057612510612ff4565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528901518051600185890184010190811061255057612550612ff4565b602002602001015184828151811061256a5761256a612ff4565b60209081029190910101526001016124d3565b506040517f4e1273f400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906125d590889088906004016136ce565b600060405180830381865afa1580156125f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612638919081019061373b565b905060005b8681101561268a5781818151811061265757612657612ff4565b60200260200101518a602001518286018151811061267757612677612ff4565b602090810291909101015260010161263d565b50505050505050505050565b60008082601214156126ab5783915050610353565b82601211156126d7575060128290036126c581600a6136a9565b6126cf9085613524565b915050610353565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161270681600a6136a9565b6126cf9085613561565b5092915050565b600080601283141561272c5783915050610353565b82601211156127465750601282900361270681600a6136a9565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126c581600a6136a9565b600081810b612785575081610353565b60008260000b13156127ad5761279c82600a613770565b6127a69084613524565b9050610353565b60ff60008390031661270681600a6136a9565b60008282018381106127d257806127f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600081831161280c576000610c67565b50900390565b60008261282157506000610353565b82820282848281612834576128346134dd565b0414156127d257806127f4565b60008060015b6008811161289857600061285b8683612a96565b905060006128698684612a96565b9050600061287783836127fc565b9050612887856001860383612b43565b945050600190920191506128479050565b509392505050565b600082600881111561290e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b8581101561293a5763ffffffff6020820290811b199890981685891b17979150600101612912565b50959695505050505050565b835160009081908190819060015b60088111612a885760009250828761298d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612991565b5060005b60005b83811015612a46576129bf8c82815181106129b1576129b1612ff4565b602002602001015184612a96565b95508a8611612a1157886129de576129d78683612bcd565b9150612a08565b60018914156129f1576129d78683612be3565b6002891480156129ff575084155b15612a08578591505b60019450612a3e565b89612a3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612a46565b600101612994565b5083612a6f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a7d866001840383612b43565b955050600101612954565b509298975050505050505050565b6000816008811115612b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b82612b125760009150612710565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612bb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310612bdc5781610c67565b5090919050565b600081831015612bdc5781610c67565b73ffffffffffffffffffffffffffffffffffffffff811681146109ca57600080fd5b60008060008060608587031215612c2b57600080fd5b8435612c3681612bf3565b935060208501359250604085013567ffffffffffffffff80821115612c5a57600080fd5b818701915087601f830112612c6e57600080fd5b813581811115612c7d57600080fd5b886020828501011115612c8f57600080fd5b95989497505060200194505050565b600060208284031215612cb057600080fd5b8135610c6781612bf3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715612d0d57612d0d612cbb565b60405290565b60405160a0810167ffffffffffffffff81118282101715612d0d57612d0d612cbb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612d7d57612d7d612cbb565b604052919050565b600067ffffffffffffffff821115612d9f57612d9f612cbb565b5060051b60200190565b600067ffffffffffffffff821115612dc357612dc3612cbb565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112612e0057600080fd5b81356020612e15612e1083612d85565b612d36565b82815260059290921b84018101918181019086841115612e3457600080fd5b8286015b84811015612e4f5780358352918301918301612e38565b509695505050505050565b60006020808385031215612e6d57600080fd5b823567ffffffffffffffff80821115612e8557600080fd5b9084019060808287031215612e9957600080fd5b612ea1612cea565b823582811115612eb057600080fd5b8301601f81018813612ec157600080fd5b8035612ecf612e1082612d85565b81815260059190911b8201860190868101908a831115612eee57600080fd5b8784015b83811015612f6557803587811115612f0a5760008081fd5b8501603f81018d13612f1c5760008081fd5b898101356040612f2e612e1083612da9565b8281528f82848601011115612f435760008081fd5b828285018e83013760009281018d019290925250845250918801918801612ef2565b5084525050508284013582811115612f7c57600080fd5b612f8888828601612def565b858301525060408301356040820152606083013560608201528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fef57612fef612fae565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f83011261303457600080fd5b81516020613044612e1083612d85565b82815260059290921b8401810191818101908684111561306357600080fd5b8286015b84811015612e4f5780518352918301918301613067565b60005b83811015613099578181015183820152602001613081565b83811115610af45750506000910152565b600082601f8301126130bb57600080fd5b815160206130cb612e1083612d85565b82815260059290921b840181019181810190868411156130ea57600080fd5b8286015b84811015612e4f57805167ffffffffffffffff81111561310e5760008081fd5b8701603f810189136131205760008081fd5b848101516040613132612e1083612da9565b8281528b828486010111156131475760008081fd5b6131568389830184870161307e565b86525050509183019183016130ee565b60006020828403121561317857600080fd5b815167ffffffffffffffff8082111561319057600080fd5b9083019060a082860312156131a457600080fd5b6131ac612d13565b825181526020830151828111156131c257600080fd5b6131ce87828601613023565b6020830152506040830151828111156131e657600080fd5b6131f2878286016130aa565b60408301525060608301518281111561320a57600080fd5b61321687828601613023565b60608301525060808301518281111561322e57600080fd5b61323a87828601613023565b60808301525095945050505050565b600081518084526020808501945080840160005b838110156132795781518752958201959082019060010161325d565b509495945050505050565b6000815180845261329c81602086016020860161307e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252600060208083015160a0828601526132ed60a0860182613249565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b82811015613363577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868303018452613351828651613284565b94870194938701939150600101613317565b506060880151955088810360608a015261337d8187613249565b955050505050506080830151848203608086015261339b8282613249565b95945050505050565b602081526000610c6760208301846132ce565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261339b60608301846132ce565b602081526000610c676020830184613284565b60006020828403121561341557600080fd5b8151610c6781612bf3565b600081526000825161343981600185016020870161307e565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516134cf81600e85016020870161307e565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000821982111561351f5761351f612fae565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561355c5761355c612fae565b500290565b600082613570576135706134dd565b500490565b600082613584576135846134dd565b500690565b600181815b808511156135e257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156135c8576135c8612fae565b808516156135d557918102915b93841c939080029061358e565b509250929050565b6000826135f957506001610353565b8161360657506000610353565b816001811461361c576002811461362657613642565b6001915050610353565b60ff84111561363757613637612fae565b50506001821b610353565b5060208310610133831016604e8410600b8410161715613665575081810a610353565b61366f8383613589565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156136a1576136a1612fae565b029392505050565b6000610c6783836135ea565b6000602082840312156136c757600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561371d57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016136eb565b505050838103828501526137318186613249565b9695505050505050565b60006020828403121561374d57600080fd5b815167ffffffffffffffff81111561376457600080fd5b6127f484828501613023565b6000610c6760ff8416836135ea56fea2646970667358221220b093111fbd37db4e752472d7a9ecb54289ae2466b71641674440c1ecc8ae93fe64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b50604051614c64380380614c6483398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b613fbc80610ca883390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610b836101256000396000818160a5015261030c0152610b836000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c8062e44217146100505780632ea72a491461008d5780635c60da1b146100a0578063fc91a897146100c7575b600080fd5b61006361005e36600461066e565b610110565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006361009b3660046107a5565b610140565b6100637f000000000000000000000000000000000000000000000000000000000000000081565b6101006100d53660046107e2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610084565b600061013a82604051602001610126919061088a565b604051602081830303815290604052610140565b92915050565b6000600260005414156101b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101c4836102ec565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c44000000000000000000000000000000000060448201526064016101ab565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b6000808280602001905181019061030391906109f1565b905060006103307f00000000000000000000000000000000000000000000000000000000000000006103bf565b6040517fa225543b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a225543b9061038590859060040161088a565b600060405180830381600087803b15801561039f57600080fd5b505af11580156103b3573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661049c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064016101ab565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156104f3576104f36104a1565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610540576105406104a1565b604052919050565b600067ffffffffffffffff821115610562576105626104a1565b5060051b60200190565b600067ffffffffffffffff821115610586576105866104a1565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126105c357600080fd5b81356105d66105d18261056c565b6104f9565b8181528460208386010111156105eb57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261061957600080fd5b813560206106296105d183610548565b82815260059290921b8401810191818101908684111561064857600080fd5b8286015b84811015610663578035835291830191830161064c565b509695505050505050565b6000602080838503121561068157600080fd5b823567ffffffffffffffff8082111561069957600080fd5b90840190604082870312156106ad57600080fd5b6106b56104d0565b8235815283830135828111156106ca57600080fd5b9290920191604083880312156106df57600080fd5b6106e76104d0565b8335838111156106f657600080fd5b8401601f8101891361070757600080fd5b80356107156105d182610548565b81815260059190911b8201870190878101908b83111561073457600080fd5b8884015b8381101561076c578035888111156107505760008081fd5b61075e8e8c838901016105b2565b845250918901918901610738565b508452505050838501358381111561078357600080fd5b61078f89828701610608565b8287015250938101939093525090949350505050565b6000602082840312156107b757600080fd5b813567ffffffffffffffff8111156107ce57600080fd5b6107da848285016105b2565b949350505050565b6000602082840312156107f457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461081857600080fd5b9392505050565b60005b8381101561083a578181015183820152602001610822565b83811115610849576000848401525b50505050565b600081518084526020808501945080840160005b8381101561087f57815187529582019590820190600101610863565b509495945050505050565b600060208083528351818401528084015160408085015260a0840181516040606087015281815180845260c08801915060c08160051b8901019350858301925060005b8181101561094f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089860301835283518051808752610912818a89018b850161081f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016959095018701945092860192918601916001016108cd565b50505050918101518483037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00160808601529161098c818461084f565b9695505050505050565b600082601f8301126109a757600080fd5b815160206109b76105d183610548565b82815260059290921b840181019181810190868411156109d657600080fd5b8286015b8481101561066357805183529183019183016109da565b60006020808385031215610a0457600080fd5b825167ffffffffffffffff80821115610a1c57600080fd5b9084019060408287031215610a3057600080fd5b610a386104d0565b825181528383015182811115610a4d57600080fd5b929092019160408388031215610a6257600080fd5b610a6a6104d0565b835183811115610a7957600080fd5b8401601f81018913610a8a57600080fd5b8051610a986105d182610548565b81815260059190911b8201870190878101908b831115610ab757600080fd5b8884015b83811015610b2a57805188811115610ad35760008081fd5b8501603f81018e13610ae55760008081fd5b8a810151610af56105d18261056c565b8181528f6040838501011115610b0b5760008081fd5b610b1b828e83016040860161081f565b85525050918901918901610abb565b5084525050508385015183811115610b4157600080fd5b61078f8982870161099656fea2646970667358221220ccf948a102d5adea1e241d94142cc635a9cef82a6eff384caad05cb09f7bbf7a64736f6c634300080a003360c06040523480156200001157600080fd5b5060405162003fbc38038062003fbc833981016040819052620000349162000125565b306080526001600160a01b03811660a0526200004f62000056565b5062000157565b600054600160a81b900460ff1615620000c55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff600160a01b9091048116101562000123576000805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200013857600080fd5b81516001600160a01b03811681146200015057600080fd5b9392505050565b60805160a051613e3f6200017d6000396000610bf801526000610c250152613e3f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063ea7cb3701461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612e27565b610135565b60405190151581526020015b60405180910390f35b6100b26100ad366004612fc1565b6101ce565b604051908152602001610096565b6100d36100ce366004613011565b6102e7565b005b6100b26100e336600461304c565b610738565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b610128610870565b6040516100969190613152565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806101c857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000806101d9610888565b90506000835160010167ffffffffffffffff8111156101fa576101fa612e8b565b604051908082528060200260200182016040528015610223578160200160208202803683370190505b5090508473ffffffffffffffffffffffffffffffffffffffff168160008151811061025057610250613165565b60200260200101818152505060005b84518110156102aa5784818151811061027a5761027a613165565b602002602001015182826001018151811061029757610297613165565b602090810291909101015260010161025f565b506102b7818360006108e5565b5081602001516001836000015103815181106102d5576102d5613165565b60200260200101519250505092915050565b6000547501000000000000000000000000000000000000000000900460ff1615808015610332575060005460017401000000000000000000000000000000000000000090910460ff16105b806103645750303b158015610364575060005474010000000000000000000000000000000000000000900460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561047b57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6104b46040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160c08101825280820185905260608082018690526080820186905260a0820186905284825281840194909452815160028082529481019092529392909182015b6105406040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610507579050509050828160008151811061056957610569613165565b6020026020010181905250818160018151811061058857610588613165565b60200260200101819052506105b58580602001906105a69190613194565b6105af90613218565b82610bb8565b60005b85358110156106945761061c6105d16020880188613194565b6105df906020810190613333565b838181106105ef576105ef613165565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000610d0b565b610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016103ec565b8061068c816133d1565b9150506105b8565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c514833866040516106c6929190613509565b60405180910390a1505050801561073457600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080610743610888565b905060006002840167ffffffffffffffff81111561076357610763612e8b565b60405190808252806020026020018201604052801561078c578160200160208202803683370190505b5090508673ffffffffffffffffffffffffffffffffffffffff16816000815181106107b9576107b9613165565b60200260200101818152505085816001815181106107d9576107d9613165565b60200260200101818152505060005b848110156108315785858281811061080257610802613165565b9050602002013582826002018151811061081e5761081e613165565b60209081029190910101526001016107e8565b5061083e818360016108e5565b50816020015160018360000151038151811061085c5761085c613165565b602002602001015192505050949350505050565b606061088361087e82610d27565b610f48565b905090565b6108ba6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600054610883906108e09073ffffffffffffffffffffffffffffffffffffffff16610f87565b610fb5565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610b9e576003890198508886015180601f1a975061ffff8160081c169850506006881015610b16578761096857866020028401518252602082019150610b29565b600188141561098557602087028301518252602082019150610b29565b6002881415610a0f578c5187106109f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016103ec565b866020026020018d01518252602082019150610b29565b6003881415610a57576000610a456040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610b29565b6004881415610a7357610a6c8d8d848a611121565b9150610b29565b606087610aa1578c604051602001610a8b919061372a565b6040516020818303038152906040529050610b00565b6001881415610aba57610ab38d61128e565b9050610b00565b6002881415610ad6576020808e0151604051610a8b92016137c1565b6003881415610b00578c516040805160208101929092520160405160208183030381529060405290505b805115610b1057610b10816113cb565b50610b29565b87610b25888463ffffffff8416565b9250505b60208c0151518c511115610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016103ec565b610923565b6020838303048c52509750505050505050505b9392505050565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a190610c51907f00000000000000000000000000000000000000000000000000000000000000009087908790600401613826565b6000604051808303816000875af1158015610c70573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cb6919081019061390e565b9050610cc18161145d565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b6000610d16836114e8565b8015610bb15750610bb1838361154c565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261168860e0840181905261177c6101008501526118086101208501526119296101408501526101608401526119d2610180840152611ada6101a0840152611bae6101c0840152611dab6101e0840152611db6610200840152611dc1610220840152611dcc610240840152611dd7610260840152611e0b610280840152611e716102a0840152611ed76102c0840152611f0b6102e0840152611f3f610300840152611f74610320840152611fcf61034084015261202561036084015261204e6103808401526120a56103a08401526120d26103c08401526121296103e08401526121946104008401526121f161042084015261222f61044084015261226861046084015261229c6104808401526122ce6104a08401526123006104c08401526123326104e08401526123666105008401526123b86105208401526123f16105408401526124a36105608401526125d061058084015261262c6105a08401526126e66105c0840152835190850201909252919082815b83811015610f3f57858181518110610efe57610efe613165565b6020026020010151856028600601830181518110610f1e57610f1e613165565b67ffffffffffffffff90921660209283029190910190910152600101610ee4565b50505050919050565b60606020820182516020028101600284015b81831015610f775782518151178152602090920191600201610f5a565b5050825160020283525090919050565b60606101c88260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612762565b610fe76040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6110196040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561104d5761104d612e8b565b604051908082528060200260200182016040528015611076578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156110ad576110ad612e8b565b6040519080825280602002602001820160405280156110d6578160200160208202803683370190505b5090506020870151602002604001870160005b848110156111105781602082026020018401528151602001820191506001810190506110e9565b505060408501525091949350505050565b600060078216600383811c1682808261116057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006111ab565b826001141561118457506fffffffffffffffffffffffffffffffff905060806111ab565b82600214156111a0575067ffffffffffffffff905060406111ab565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156111ce576111ce612e8b565b6040519080825280602002602001820160405280156111f7578160200160208202803683370190505b50905060208082019083028a03815b8b82101561121e578151815260209182019101611206565b505060608b015160808c015160209081029091010160005b61010081101561127c5760208502830182845b82811015611265578051841c8a16825260209182019101611249565b5050506112738e8e8b6108e5565b9b508501611236565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112da91906137c1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113169291602001613985565b604051602081830303815290604052905060005b8560400151518110156113c257818660400151828151811061134e5761134e613165565b60200260200101515160001b8760400151838151811061137057611370613165565b602002602001015160405160200161138a939291906139ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161132a565b50949350505050565b61145a816040516024016113df9190613152565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261284a565b50565b6000806114888360405160200161147491906139e2565b60405160208183030381529060405261286b565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166114e2576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000611514827f01ffc9a70000000000000000000000000000000000000000000000000000000061154c565b80156101c85750611545827fffffffff0000000000000000000000000000000000000000000000000000000061154c565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff87169061753090611606908690613a08565b6000604051808303818686fa925050503d8060008114611642576040519150601f19603f3d011682016040523d82523d6000602084013e611647565b606091505b509150915060208151101561166257600093505050506101c8565b81801561167e57508080602001905181019061167e9190613a1a565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561174b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176f9190613a3c565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fc9190613a3c565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156118f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191b9190613a3c565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d09060240161172e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab79190613a55565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016118da565b60008060008467ffffffffffffffff811115611bcc57611bcc612e8b565b604051908082528060200260200182016040528015611bf5578160200160208202803683370190505b50905060008567ffffffffffffffff811115611c1357611c13612e8b565b604051908082528060200260200182016040528015611c3c578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611c91578251815260209283019201611c79565b5050602088028101602084015b81831015611cb6578251815260209283019201611c9e565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611d109087908790600401613a72565b600060405180830381865afa158015611d2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d739190810190613ad5565b9050846020820160208a0281015b80821015611d9c578151835260209283019290910190611d81565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc8287612897565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f82611e6b858a612897565b90612918565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f82611ed1858a612897565b90612937565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc828761294c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc8287612997565b6000602083028203805b83811015611f695780518015611f60578252611f69565b50602001611f49565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611f695780516120465760008252611f69565b60200161202f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561216757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156121865750805160209091019061217f83826129f5565b9250612139565b505081526020019392505050565b6020828102820380516000928201835b85821080156121d257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612186575080516020909101906121ea8382612a31565b92506121a4565b6020828102820380516000928201835b85821080156122105750826000105b15612186575080516020909101906122288382612a60565b9250612201565b600060208302820380516000602083015b85811015612186578051830191508282101561225b57600080fd5b9091508190602001612240565b600060208302820380516000602083015b8581101561218657805191508161228f57600080fd5b9181900491602001612279565b6020828102820380516000928201835b85821015612186575080516020909101906122c78184613c7b565b92506122ac565b6020828102820380516000928201835b8582101561218657508051828111156122f5578092505b6020820191506122de565b6020828102820380516000928201835b858210156121865750805182811015612327578092505b602082019150612310565b600060208302820380516000602083015b8581101561218657805191508161235957600080fd5b9181900691602001612343565b60006020830282038051600080602084015b868110156123a95783156123a157805192508284029150828483041461239d57600080fd5b8193505b602001612378565b50505081526020019392505050565b600060208302820380516000602083015b8581101561218657805183039150828211156123e457600080fd5b90915081906020016123c9565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906118da9086908690600401613c87565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061257c90879087908790600401613cb6565b602060405180830381865afa158015612599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bd9190613a3c565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f8383612a76565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561265a5761265a612e8b565b604051908082528060200260200182016040528015612683578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156126bf5781518160200186015260208201915060208101905061269d565b505051905060006126d283838989612ad5565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561275385858585612c25565b90955250949695505050505050565b6060833b80612781575050604080516020810190915260008152610bb1565b8084111561279f575050604080516020810190915260008152610bb1565b838310156127ea576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016103ec565b83830384820360008282106127ff5782612801565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060815182604051602001612881929190613ceb565b6040516020818303038152906040529050919050565b60008082601214156128ac57839150506101c8565b82601211156128d8575060128290036128c681600a613c7b565b6128d09085613d82565b9150506101c8565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161290781600a613c7b565b6128d09085613dbf565b5092915050565b60008161292d670de0b6b3a764000085613d82565b610bb19190613dbf565b6000670de0b6b3a764000061292d8385613d82565b600081810b61295c5750816101c8565b60008260000b13156129845761297382600a613dfa565b61297d9084613d82565b90506101c8565b60ff60008390031661290781600a613c7b565b60008060128314156129ac57839150506101c8565b82601211156129c65750601282900361290781600a613c7b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016128c681600a613c7b565b6000828201838110612a075780612a29565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082612a40575060006101c8565b82820282848281612a5357612a536137f7565b041415612a075780612a29565b6000818311612a70576000610bb1565b50900390565b60008060015b60088111612acd576000612a908683612ccb565b90506000612a9e8684612ccb565b90506000612aac8383612a60565b9050612abc856001860383612d78565b94505060019092019150612a7c9050565b509392505050565b835160009081908190819060015b60088111612c1757600092508287612b1c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612b20565b5060005b60005b83811015612bd557612b4e8c8281518110612b4057612b40613165565b602002602001015184612ccb565b95508a8611612ba05788612b6d57612b668683612e01565b9150612b97565b6001891415612b8057612b668683612e17565b600289148015612b8e575084155b15612b97578591505b60019450612bcd565b89612bcd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612bd5565b600101612b23565b5083612bfe57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612c0c866001840383612d78565b955050600101612ae3565b509298975050505050505050565b6000826008811115612c93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b85811015612cbf5763ffffffff6020820290811b199890981685891b17979150600101612c97565b50959695505050505050565b6000816008811115612d39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b82612d475760009150612911565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612e105781610bb1565b5090919050565b600081831015612e105781610bb1565b600060208284031215612e3957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bb157600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461145a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715612edd57612edd612e8b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f2a57612f2a612e8b565b604052919050565b600067ffffffffffffffff821115612f4c57612f4c612e8b565b5060051b60200190565b600082601f830112612f6757600080fd5b81356020612f7c612f7783612f32565b612ee3565b82815260059290921b84018101918181019086841115612f9b57600080fd5b8286015b84811015612fb65780358352918301918301612f9f565b509695505050505050565b60008060408385031215612fd457600080fd5b8235612fdf81612e69565b9150602083013567ffffffffffffffff811115612ffb57600080fd5b61300785828601612f56565b9150509250929050565b60006020828403121561302357600080fd5b813567ffffffffffffffff81111561303a57600080fd5b820160408185031215610bb157600080fd5b6000806000806060858703121561306257600080fd5b843561306d81612e69565b935060208501359250604085013567ffffffffffffffff8082111561309157600080fd5b818701915087601f8301126130a557600080fd5b8135818111156130b457600080fd5b8860208260051b85010111156130c957600080fd5b95989497505060200194505050565b60005b838110156130f35781810151838201526020016130db565b83811115613102576000848401525b50505050565b600081518084526131208160208601602086016130d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610bb16020830184613108565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126131c857600080fd5b9190910192915050565b600067ffffffffffffffff8211156131ec576131ec612e8b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000604080833603121561322b57600080fd5b613233612eba565b833567ffffffffffffffff8082111561324b57600080fd5b9085019036601f83011261325e57600080fd5b8135602061326e612f7783612f32565b82815260059290921b8401810191818101903684111561328d57600080fd5b8286015b84811015613301578035868111156132a95760008081fd5b870136603f8201126132bb5760008081fd5b848101356132cb612f77826131d2565b818152368c8385010111156132e05760008081fd5b818c8401888301376000918101870191909152845250918301918301613291565b508652508781013595508286111561331857600080fd5b61332436878a01612f56565b90850152509195945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261336857600080fd5b83018035915067ffffffffffffffff82111561338357600080fd5b6020019150600581901b360382131561339b57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613403576134036133a2565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261343f57600080fd5b830160208101925035905067ffffffffffffffff81111561345f57600080fd5b8060051b360383131561339b57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156134ec57600080fd5b8260051b8083602087013760009401602001938452509192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526000602060408184015283356040840152808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261356757600080fd5b60406060850152840160c0840161357e828061340a565b604060808801528281845260e08801905060e08260051b89010193508260005b83811015613648577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126135ff57600080fd5b8501803567ffffffffffffffff81111561361857600080fd5b80360387131561362757600080fd5b61363488828c8501613471565b97505050918701919087019060010161359e565b50505050506136598383018361340a565b935091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808582030160a08601526136928184846134ba565b979650505050505050565b600081518084526020808501945080840160005b838110156136cd578151875295820195908201906001016136b1565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b8581101561371d57838303895261370b838351613108565b988501989250908401906001016136f3565b5090979650505050505050565b60208152815160208201526000602083015160a0604084015261375060c084018261369d565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08085840301606086015261378c83836136d8565b92506060860151915080858403016080860152506137aa828261369d565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156137eb578151855293820193908201906001016137cf565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a0865160408085880152613861838801836136d8565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261389c848361369d565b898103848b01528a51808252878c019550908701925060005b818110156138fc5785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c0909301926001016138b5565b50919c9b505050505050505050505050565b60006020828403121561392057600080fd5b815167ffffffffffffffff81111561393757600080fd5b8201601f8101841361394857600080fd5b8051613956612f77826131d2565b81815285602083850101111561396b57600080fd5b61397c8260208301602086016130d8565b95945050505050565b8281526000825161399d8160208501602087016130d8565b919091016020019392505050565b600084516139bd8184602089016130d8565b820184815283516139d58160208085019088016130d8565b0160200195945050505050565b60008152600082516139fb8160018501602087016130d8565b9190910160010192915050565b600082516131c88184602087016130d8565b600060208284031215613a2c57600080fd5b81518015158114610bb157600080fd5b600060208284031215613a4e57600080fd5b5051919050565b600060208284031215613a6757600080fd5b8151610bb181612e69565b604080825283519082018190526000906020906060840190828701845b82811015613ac157815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613a8f565b5050508381038285015261167e818661369d565b60006020808385031215613ae857600080fd5b825167ffffffffffffffff811115613aff57600080fd5b8301601f81018513613b1057600080fd5b8051613b1e612f7782612f32565b81815260059190911b82018301908381019087831115613b3d57600080fd5b928401925b8284101561369257835182529284019290840190613b42565b600181815b80851115613bb457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613b9a57613b9a6133a2565b80851615613ba757918102915b93841c9390800290613b60565b509250929050565b600082613bcb575060016101c8565b81613bd8575060006101c8565b8160018114613bee5760028114613bf857613c14565b60019150506101c8565b60ff841115613c0957613c096133a2565b50506001821b6101c8565b5060208310610133831016604e8410600b8410161715613c37575081810a6101c8565b613c418383613b5b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613c7357613c736133a2565b029392505050565b6000610bb18383613bbc565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a29604083018461369d565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061397c606083018461369d565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251613d7481600e8501602087016130d8565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dba57613dba6133a2565b500290565b600082613df5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610bb160ff841683613bbc56fea26469706673582212209ec8a4980503b946cfd95f79746dd1ca5c1d0ee83c5e41a9fedc6e260e121b3964736f6c634300080a0033"; type CombineTierFactoryConstructorParams = | [signer?: Signer] @@ -167,14 +175,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..94635bd 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", }, @@ -46,47 +52,38 @@ const _abi = [ name: "sender", type: "address", }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, { components: [ { internalType: "uint256", - name: "stackIndex", + name: "combinedTiersLength", 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[]", + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "sourceConfig", + type: "tuple", }, ], indexed: false, - internalType: "struct State", - name: "state", + internalType: "struct CombineTierConfig", + name: "config", type: "tuple", }, ], - name: "Snapshot", + name: "Initialize", type: "event", }, { @@ -94,64 +91,42 @@ const _abi = [ 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", + internalType: "uint8", + name: "version", + type: "uint8", }, ], - name: "TierChange", + name: "Initialized", type: "event", }, { inputs: [ { components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, { internalType: "uint256", - name: "stackLength", + name: "combinedTiersLength", type: "uint256", }, { - internalType: "uint256", - name: "argumentsLength", - 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", + internalType: "struct CombineTierConfig", name: "config_", type: "tuple", }, @@ -161,6 +136,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -168,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", }, ], @@ -184,29 +177,79 @@ const _abi = [ inputs: [ { internalType: "address", - name: "", + name: "account_", type: "address", }, { internalType: "uint256", - name: "", + name: "tier_", type: "uint256", }, { - internalType: "bytes", + internalType: "uint256[]", + name: "context_", + type: "uint256[]", + }, + ], + name: "reportTimeForTier", + outputs: [ + { + internalType: "uint256", + name: "time_", + type: "uint256", + }, + ], + 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: "bytes", + type: "tuple", }, ], - name: "setTier", - outputs: [], 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 = - "0x60a06040523480156200001157600080fd5b506002808060066007600b6200002982600462000087565b62000035919062000087565b62000041919062000087565b6200004d919062000087565b62000059919062000087565b62000065919062000087565b62000071919062000087565b6200007e90600562000087565b608052620000ae565b60008219821115620000a957634e487b7160e01b600052601160045260246000fd5b500190565b6080516137b5620000d1600039600081816109cf0152610a0a01526137b56000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063e053ea311461005b578063e684b6d614610080575b600080fd5b610059610054366004612c15565b610093565b005b61006e610069366004612c9e565b6100fa565b60405190815260200160405180910390f35b61005961008e366004612e5a565b610197565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000805481906101259062010000900473ffffffffffffffffffffffffffffffffffffffff16610305565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201529192506101649101604051602081830303815290604052826000610359565b6020810151815161017790600190612fdd565b8151811061018757610187612ff4565b6020026020010151915050919050565b600054610100900460ff166101b25760005460ff16156101b6565b303b155b610242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b600054610100900460ff1615801561028157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b61029261028d836105dd565b610739565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801561030157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b6103376040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b610340826107a7565b8060200190518101906103539190613166565b92915050565b602082015151825111156103c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016100f1565b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156105d0576002880197508784015180601e1a975080601f1a965050600587101561054f5760018714156104675781608087166104325750825b607f87168151811061044357600080fd5b8b516020820260200183015160208202602001850152600181018d5250505061055b565b600287141561049e57895180871061047e57600080fd5b6020870260200182015160208202602001830152600181018b525061055b565b60038714156104b7576104b28b8b886107d5565b61055b565b60048714156104e8576104b28a6040516020016104d491906133a4565b60405160208183030381529060405261093b565b866104b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016100f1565b61055b8b8b89896109cd565b60208a0151518a5111156105cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016100f1565b6103f5565b5050505050505050505050565b61060f6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f534f5552434553000000000000000000000000000000000000000000000060448201526064016100f1565b6040518060a0016040528060008152602001836040015167ffffffffffffffff8111156106a7576106a7612cbb565b6040519080825280602002602001820160405280156106d0578160200160208202803683370190505b5081526020018360000151815260200183602001518152602001836060015167ffffffffffffffff81111561070757610707612cbb565b604051908082528060200260200182016040528015610730578160200160208202803683370190505b50905292915050565b6000806107648360405160200161075091906133a4565b604051602081830303815290604052610afa565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd338285604051610799939291906133b7565b60405180910390a192915050565b60606103538260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b85565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff81111561083957610839612cbb565b604051908082528060200260200182016040528015610862578160200160208202803683370190505b50905060005b828110156108b9578760200151818960000151018151811061088c5761088c612ff4565b60200260200101518282815181106108a6576108a6612ff4565b6020908102919091010152600101610868565b5060005b6101008110156109305760005b8381101561091d57848286038483815181106108e8576108e8612ff4565b6020026020010151901b901c8960800151828151811061090a5761090a612ff4565b60209081029190910101526001016108ca565b50610929898988610359565b84016108bd565b505050505050505050565b6109ca8160405160240161094f91906133f0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052610c6e565b50565b7f0000000000000000000000000000000000000000000000000000000000000000821015610a0857610a03836005840383610c8f565b610af4565b7f00000000000000000000000000000000000000000000000000000000000000008203915060018210610a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b600084806020019051810190610aad9190613403565b90508073ffffffffffffffffffffffffffffffffffffffff168460200151856000015181518110610ae057610ae0612ff4565b602090810291909101015250825160010183525b50505050565b600080610b2583604051602001610b119190613420565b604051602081830303815290604052610dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610b7f576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b80610ba4575050604080516020810190915260008152610c67565b80841115610bc2575050604080516020810190915260008152610c67565b83831015610c0d576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016100f1565b8383038482036000828210610c225782610c24565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6004821015610ca857610ca3838383610e26565b505050565b601d821015610d2b57600b821015610cc857610ca3836004840383610f3c565b6016821015610cfe57610ca3837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff584018361126a565b610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea840183611703565b6023821015610d6157610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3840183611973565b6025821015610d9757610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd840183611e47565b6027821015610dcd57610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb840183612070565b610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd984018361226a565b6060815182604051602001610e10929190613446565b6040516020818303038152906040529050919050565b60048210610e90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b81610ec157438360200151846000015181518110610eb057610eb0612ff4565b602002602001018181525050610f31565b6001821415610ee557428360200151846000015181518110610eb057610eb0612ff4565b6002821415610f0957602083015183518151339291908110610eb057610eb0612ff4565b602083015183518151309291908110610f2457610f24612ff4565b6020026020010181815250505b505080516001019052565b60078210610fa6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b60028210156110f25782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01826110515783602001518160010181518110610ff157610ff1612ff4565b6020026020010151611029838660200151848151811061101357611013612ff4565b602002602001015161269690919063ffffffff16565b028460200151828151811061104057611040612ff4565b6020026020010181815250506110c6565b60018314156110c6578360200151816001018151811061107357611073612ff4565b6020026020010151611095838660200151848151811061101357611013612ff4565b816110a2576110a26134dd565b04846020015182815181106110b9576110b9612ff4565b6020026020010181815250505b5082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018352505050565b60058210156112035782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600283141561116957611142828560200151838151811061101357611013612ff4565b8460200151828151811061115857611158612ff4565b602002602001018181525050610af4565b60038314156111a257611142828560200151838151811061118c5761118c612ff4565b602002602001015161271790919063ffffffff16565b6004831415610af4576111db82856020015183815181106111c5576111c5612ff4565b602002602001015161277590919063ffffffff16565b846020015182815181106111f1576111f1612ff4565b60200260200101818152505050505050565b600582141561124557670de0b6b3a7640000836020015184600001518151811061122f5761122f612ff4565b6020908102919091010152505080516001019052565b6006821415610ca35760128360200151846000015181518110610f2457610f24612ff4565b600b82106112d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b825160208401518051838303927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01918391600091908390811061131a5761131a612ff4565b602002602001015190506000861415611372575b8282101561136d57602087015180516001909301928390811061135357611353612ff4565b602002602001015181611366919061350c565b905061132e565b6116d4565b60018614156113ee575b82821080156113aa57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561136d5781806001019250506113e7876020015183815181106113d0576113d0612ff4565b6020026020010151826127c090919063ffffffff16565b905061137c565b6002861415611437575b8282101561136d57602087015180516001909301928390811061141d5761141d612ff4565b6020026020010151816114309190612fdd565b90506113f8565b6003861415611494575b82821080156114505750806000105b1561136d57818060010192505061148d8760200151838151811061147657611476612ff4565b6020026020010151826127fc90919063ffffffff16565b9050611441565b60048614156114dd575b8282101561136d5760208701518051600190930192839081106114c3576114c3612ff4565b6020026020010151816114d69190613524565b905061149e565b6005861415611559575b828210801561151557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561136d5781806001019250506115528760200151838151811061153b5761153b612ff4565b60200260200101518261281290919063ffffffff16565b90506114e7565b60068614156115a2575b8282101561136d57602087015180516001909301928390811061158857611588612ff4565b60200260200101518161159b9190613561565b9050611563565b60078614156115eb575b8282101561136d5760208701518051600190930192839081106115d1576115d1612ff4565b6020026020010151816115e49190613575565b90506115ac565b6008861415611634575b8282101561136d57602087015180516001909301928390811061161a5761161a612ff4565b60200260200101518161162d91906136a9565b90506115f5565b60098614156116865760005b8383101561168057602088015180516001909401938490811061166557611665612ff4565b602002602001015190508181101561167b578091505b611640565b506116d4565b600a8614156116d45760005b838310156116d25760208801518051600190940193849081106116b7576116b7612ff4565b60200260200101519050818111156116cd578091505b611692565b505b80876020015185815181106116eb576116eb612ff4565b60209081029190910101525050506001019092525050565b6007821061176d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b825160208085015181830201018380156117b657600181146117ed5760028114611866576003811461188e57600481146118b657600581146118de57600681146119255761196b565b826117c057600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201805115905261196b565b60038310156117fb57600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830186527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0820180518015611857576020820151825261185f565b604082015182525b505061196b565b600283101561187457600080fd5b60018303865260408203602081015181511481525061196b565b600283101561189c57600080fd5b60018303865260408203602081015181511081525061196b565b60028310156118c457600080fd5b60018303865260408203602081015181511181525061196b565b838310156118eb57600080fd5b8315611920576001840383038652602084028203805b8381101561185f578051611918576000825261185f565b602001611901565b61196b565b8383101561193257600080fd5b831561196b576001840383038652602084028203805b83811015611968578051801561195f578252611968565b50602001611948565b50505b505050505050565b600682106119dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b600082611b05575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110611a4857611a48612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e053ea3185602001518360010181518110611a8457611a84612ff4565b60200260200101516040518263ffffffff1660e01b8152600401611ac4919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015611ae1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114291906136b5565b6001831415611b60577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460200151856000015181518110611b4957611b49612ff4565b602090810291909101015283516001018452610af4565b6002831415611b855760008460200151856000015181518110611b4957611b49612ff4565b6003831415611c39575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01808452602084015180516000919083908110611bd157611bd1612ff4565b60200260200101519050600085602001518360010181518110611bf657611bf6612ff4565b60200260200101519050611c0a8282612841565b86602001518481518110611c2057611c20612ff4565b6020908102919091010152505083516001018452610af4565b6004831415611d01575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600f80851692600486901c909116916000919085908110611c9457611c94612ff4565b60200260200101519050600087602001518560010181518110611cb957611cb9612ff4565b60200260200101519050611ccf828585846128a0565b88602001518681518110611ce557611ce5612ff4565b602090810291909101015250508551600101865250610af49050565b6005831415610af4575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f8316918290030180855290600783901c906003600585901c16908360008267ffffffffffffffff811115611d6657611d66612cbb565b604051908082528060200260200182016040528015611d8f578160200160208202803683370190505b50905060005b83811015611de45789602001518381518110611db357611db3612ff4565b6020026020010151828281518110611dcd57611dcd612ff4565b602090810291909101015260019283019201611d95565b50600089602001518381518110611dfd57611dfd612ff4565b60200260200101519050611e1382828888612946565b8a602001518881518110611e2957611e29612ff4565b60209081029190910101525050875160010188525050505050505050565b60028210611eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b81611fd75782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110611f1957611f19612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110611f5657611f56612ff4565b60200260200101516040518263ffffffff1660e01b8152600401611f96919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111db91906136b5565b6001821415610ca3578251602084015180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201918290811061201e5761201e612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb3573d6000803e3d6000fd5b600282106120da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810184527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018261217b578360200151818151811061213e5761213e612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110611a8457611a84612ff4565b6001831415610af4578360200151818151811061219a5761219a612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636352211e85602001518660000151815181106121d7576121d7612ff4565b60200260200101516040518263ffffffff1660e01b81526004016121fd91815260200190565b602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190613403565b73ffffffffffffffffffffffffffffffffffffffff16846020015182815181106111f1576111f1612ff4565b600282106122d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b816123de5782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd909201918290811061233c5761233c612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e8560200151836001018151811061237757612377612ff4565b60200260200101518660200151846002018151811061239857612398612ff4565b60200260200101516040518363ffffffff1660e01b8152600401611f9692919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6001821415610ca3576001810160008167ffffffffffffffff81111561240657612406612cbb565b60405190808252806020026020018201604052801561242f578160200160208202803683370190505b50905060008267ffffffffffffffff81111561244d5761244d612cbb565b604051908082528060200260200182016040528015612476578160200160208202803683370190505b5086518490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810189526020890151805193945091869003019160009190839081106124c6576124c6612ff4565b6020026020010151905060005b8581101561257d578860200151818401600101815181106124f6576124f6612ff4565b602002602001015185828151811061251057612510612ff4565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528901518051600185890184010190811061255057612550612ff4565b602002602001015184828151811061256a5761256a612ff4565b60209081029190910101526001016124d3565b506040517f4e1273f400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906125d590889088906004016136ce565b600060405180830381865afa1580156125f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612638919081019061373b565b905060005b8681101561268a5781818151811061265757612657612ff4565b60200260200101518a602001518286018151811061267757612677612ff4565b602090810291909101015260010161263d565b50505050505050505050565b60008082601214156126ab5783915050610353565b82601211156126d7575060128290036126c581600a6136a9565b6126cf9085613524565b915050610353565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161270681600a6136a9565b6126cf9085613561565b5092915050565b600080601283141561272c5783915050610353565b82601211156127465750601282900361270681600a6136a9565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126c581600a6136a9565b600081810b612785575081610353565b60008260000b13156127ad5761279c82600a613770565b6127a69084613524565b9050610353565b60ff60008390031661270681600a6136a9565b60008282018381106127d257806127f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600081831161280c576000610c67565b50900390565b60008261282157506000610353565b82820282848281612834576128346134dd565b0414156127d257806127f4565b60008060015b6008811161289857600061285b8683612a96565b905060006128698684612a96565b9050600061287783836127fc565b9050612887856001860383612b43565b945050600190920191506128479050565b509392505050565b600082600881111561290e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b8581101561293a5763ffffffff6020820290811b199890981685891b17979150600101612912565b50959695505050505050565b835160009081908190819060015b60088111612a885760009250828761298d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612991565b5060005b60005b83811015612a46576129bf8c82815181106129b1576129b1612ff4565b602002602001015184612a96565b95508a8611612a1157886129de576129d78683612bcd565b9150612a08565b60018914156129f1576129d78683612be3565b6002891480156129ff575084155b15612a08578591505b60019450612a3e565b89612a3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612a46565b600101612994565b5083612a6f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a7d866001840383612b43565b955050600101612954565b509298975050505050505050565b6000816008811115612b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b82612b125760009150612710565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612bb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310612bdc5781610c67565b5090919050565b600081831015612bdc5781610c67565b73ffffffffffffffffffffffffffffffffffffffff811681146109ca57600080fd5b60008060008060608587031215612c2b57600080fd5b8435612c3681612bf3565b935060208501359250604085013567ffffffffffffffff80821115612c5a57600080fd5b818701915087601f830112612c6e57600080fd5b813581811115612c7d57600080fd5b886020828501011115612c8f57600080fd5b95989497505060200194505050565b600060208284031215612cb057600080fd5b8135610c6781612bf3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715612d0d57612d0d612cbb565b60405290565b60405160a0810167ffffffffffffffff81118282101715612d0d57612d0d612cbb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612d7d57612d7d612cbb565b604052919050565b600067ffffffffffffffff821115612d9f57612d9f612cbb565b5060051b60200190565b600067ffffffffffffffff821115612dc357612dc3612cbb565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112612e0057600080fd5b81356020612e15612e1083612d85565b612d36565b82815260059290921b84018101918181019086841115612e3457600080fd5b8286015b84811015612e4f5780358352918301918301612e38565b509695505050505050565b60006020808385031215612e6d57600080fd5b823567ffffffffffffffff80821115612e8557600080fd5b9084019060808287031215612e9957600080fd5b612ea1612cea565b823582811115612eb057600080fd5b8301601f81018813612ec157600080fd5b8035612ecf612e1082612d85565b81815260059190911b8201860190868101908a831115612eee57600080fd5b8784015b83811015612f6557803587811115612f0a5760008081fd5b8501603f81018d13612f1c5760008081fd5b898101356040612f2e612e1083612da9565b8281528f82848601011115612f435760008081fd5b828285018e83013760009281018d019290925250845250918801918801612ef2565b5084525050508284013582811115612f7c57600080fd5b612f8888828601612def565b858301525060408301356040820152606083013560608201528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fef57612fef612fae565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f83011261303457600080fd5b81516020613044612e1083612d85565b82815260059290921b8401810191818101908684111561306357600080fd5b8286015b84811015612e4f5780518352918301918301613067565b60005b83811015613099578181015183820152602001613081565b83811115610af45750506000910152565b600082601f8301126130bb57600080fd5b815160206130cb612e1083612d85565b82815260059290921b840181019181810190868411156130ea57600080fd5b8286015b84811015612e4f57805167ffffffffffffffff81111561310e5760008081fd5b8701603f810189136131205760008081fd5b848101516040613132612e1083612da9565b8281528b828486010111156131475760008081fd5b6131568389830184870161307e565b86525050509183019183016130ee565b60006020828403121561317857600080fd5b815167ffffffffffffffff8082111561319057600080fd5b9083019060a082860312156131a457600080fd5b6131ac612d13565b825181526020830151828111156131c257600080fd5b6131ce87828601613023565b6020830152506040830151828111156131e657600080fd5b6131f2878286016130aa565b60408301525060608301518281111561320a57600080fd5b61321687828601613023565b60608301525060808301518281111561322e57600080fd5b61323a87828601613023565b60808301525095945050505050565b600081518084526020808501945080840160005b838110156132795781518752958201959082019060010161325d565b509495945050505050565b6000815180845261329c81602086016020860161307e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252600060208083015160a0828601526132ed60a0860182613249565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b82811015613363577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868303018452613351828651613284565b94870194938701939150600101613317565b506060880151955088810360608a015261337d8187613249565b955050505050506080830151848203608086015261339b8282613249565b95945050505050565b602081526000610c6760208301846132ce565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261339b60608301846132ce565b602081526000610c676020830184613284565b60006020828403121561341557600080fd5b8151610c6781612bf3565b600081526000825161343981600185016020870161307e565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516134cf81600e85016020870161307e565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000821982111561351f5761351f612fae565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561355c5761355c612fae565b500290565b600082613570576135706134dd565b500490565b600082613584576135846134dd565b500690565b600181815b808511156135e257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156135c8576135c8612fae565b808516156135d557918102915b93841c939080029061358e565b509250929050565b6000826135f957506001610353565b8161360657506000610353565b816001811461361c576002811461362657613642565b6001915050610353565b60ff84111561363757613637612fae565b50506001821b610353565b5060208310610133831016604e8410600b8410161715613665575081810a610353565b61366f8383613589565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156136a1576136a1612fae565b029392505050565b6000610c6783836135ea565b6000602082840312156136c757600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561371d57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016136eb565b505050838103828501526137318186613249565b9695505050505050565b60006020828403121561374d57600080fd5b815167ffffffffffffffff81111561376457600080fd5b6127f484828501613023565b6000610c6760ff8416836135ea56fea2646970667358221220b093111fbd37db4e752472d7a9ecb54289ae2466b71641674440c1ecc8ae93fe64736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5060405162003fbc38038062003fbc833981016040819052620000349162000125565b306080526001600160a01b03811660a0526200004f62000056565b5062000157565b600054600160a81b900460ff1615620000c55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff600160a01b9091048116101562000123576000805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200013857600080fd5b81516001600160a01b03811681146200015057600080fd5b9392505050565b60805160a051613e3f6200017d6000396000610bf801526000610c250152613e3f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063ea7cb3701461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612e27565b610135565b60405190151581526020015b60405180910390f35b6100b26100ad366004612fc1565b6101ce565b604051908152602001610096565b6100d36100ce366004613011565b6102e7565b005b6100b26100e336600461304c565b610738565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b610128610870565b6040516100969190613152565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806101c857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000806101d9610888565b90506000835160010167ffffffffffffffff8111156101fa576101fa612e8b565b604051908082528060200260200182016040528015610223578160200160208202803683370190505b5090508473ffffffffffffffffffffffffffffffffffffffff168160008151811061025057610250613165565b60200260200101818152505060005b84518110156102aa5784818151811061027a5761027a613165565b602002602001015182826001018151811061029757610297613165565b602090810291909101015260010161025f565b506102b7818360006108e5565b5081602001516001836000015103815181106102d5576102d5613165565b60200260200101519250505092915050565b6000547501000000000000000000000000000000000000000000900460ff1615808015610332575060005460017401000000000000000000000000000000000000000090910460ff16105b806103645750303b158015610364575060005474010000000000000000000000000000000000000000900460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561047b57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6104b46040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160c08101825280820185905260608082018690526080820186905260a0820186905284825281840194909452815160028082529481019092529392909182015b6105406040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610507579050509050828160008151811061056957610569613165565b6020026020010181905250818160018151811061058857610588613165565b60200260200101819052506105b58580602001906105a69190613194565b6105af90613218565b82610bb8565b60005b85358110156106945761061c6105d16020880188613194565b6105df906020810190613333565b838181106105ef576105ef613165565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000610d0b565b610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016103ec565b8061068c816133d1565b9150506105b8565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c514833866040516106c6929190613509565b60405180910390a1505050801561073457600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080610743610888565b905060006002840167ffffffffffffffff81111561076357610763612e8b565b60405190808252806020026020018201604052801561078c578160200160208202803683370190505b5090508673ffffffffffffffffffffffffffffffffffffffff16816000815181106107b9576107b9613165565b60200260200101818152505085816001815181106107d9576107d9613165565b60200260200101818152505060005b848110156108315785858281811061080257610802613165565b9050602002013582826002018151811061081e5761081e613165565b60209081029190910101526001016107e8565b5061083e818360016108e5565b50816020015160018360000151038151811061085c5761085c613165565b602002602001015192505050949350505050565b606061088361087e82610d27565b610f48565b905090565b6108ba6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600054610883906108e09073ffffffffffffffffffffffffffffffffffffffff16610f87565b610fb5565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610b9e576003890198508886015180601f1a975061ffff8160081c169850506006881015610b16578761096857866020028401518252602082019150610b29565b600188141561098557602087028301518252602082019150610b29565b6002881415610a0f578c5187106109f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016103ec565b866020026020018d01518252602082019150610b29565b6003881415610a57576000610a456040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610b29565b6004881415610a7357610a6c8d8d848a611121565b9150610b29565b606087610aa1578c604051602001610a8b919061372a565b6040516020818303038152906040529050610b00565b6001881415610aba57610ab38d61128e565b9050610b00565b6002881415610ad6576020808e0151604051610a8b92016137c1565b6003881415610b00578c516040805160208101929092520160405160208183030381529060405290505b805115610b1057610b10816113cb565b50610b29565b87610b25888463ffffffff8416565b9250505b60208c0151518c511115610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016103ec565b610923565b6020838303048c52509750505050505050505b9392505050565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a190610c51907f00000000000000000000000000000000000000000000000000000000000000009087908790600401613826565b6000604051808303816000875af1158015610c70573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cb6919081019061390e565b9050610cc18161145d565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b6000610d16836114e8565b8015610bb15750610bb1838361154c565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261168860e0840181905261177c6101008501526118086101208501526119296101408501526101608401526119d2610180840152611ada6101a0840152611bae6101c0840152611dab6101e0840152611db6610200840152611dc1610220840152611dcc610240840152611dd7610260840152611e0b610280840152611e716102a0840152611ed76102c0840152611f0b6102e0840152611f3f610300840152611f74610320840152611fcf61034084015261202561036084015261204e6103808401526120a56103a08401526120d26103c08401526121296103e08401526121946104008401526121f161042084015261222f61044084015261226861046084015261229c6104808401526122ce6104a08401526123006104c08401526123326104e08401526123666105008401526123b86105208401526123f16105408401526124a36105608401526125d061058084015261262c6105a08401526126e66105c0840152835190850201909252919082815b83811015610f3f57858181518110610efe57610efe613165565b6020026020010151856028600601830181518110610f1e57610f1e613165565b67ffffffffffffffff90921660209283029190910190910152600101610ee4565b50505050919050565b60606020820182516020028101600284015b81831015610f775782518151178152602090920191600201610f5a565b5050825160020283525090919050565b60606101c88260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612762565b610fe76040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6110196040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561104d5761104d612e8b565b604051908082528060200260200182016040528015611076578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156110ad576110ad612e8b565b6040519080825280602002602001820160405280156110d6578160200160208202803683370190505b5090506020870151602002604001870160005b848110156111105781602082026020018401528151602001820191506001810190506110e9565b505060408501525091949350505050565b600060078216600383811c1682808261116057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006111ab565b826001141561118457506fffffffffffffffffffffffffffffffff905060806111ab565b82600214156111a0575067ffffffffffffffff905060406111ab565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156111ce576111ce612e8b565b6040519080825280602002602001820160405280156111f7578160200160208202803683370190505b50905060208082019083028a03815b8b82101561121e578151815260209182019101611206565b505060608b015160808c015160209081029091010160005b61010081101561127c5760208502830182845b82811015611265578051841c8a16825260209182019101611249565b5050506112738e8e8b6108e5565b9b508501611236565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112da91906137c1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113169291602001613985565b604051602081830303815290604052905060005b8560400151518110156113c257818660400151828151811061134e5761134e613165565b60200260200101515160001b8760400151838151811061137057611370613165565b602002602001015160405160200161138a939291906139ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161132a565b50949350505050565b61145a816040516024016113df9190613152565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261284a565b50565b6000806114888360405160200161147491906139e2565b60405160208183030381529060405261286b565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166114e2576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000611514827f01ffc9a70000000000000000000000000000000000000000000000000000000061154c565b80156101c85750611545827fffffffff0000000000000000000000000000000000000000000000000000000061154c565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff87169061753090611606908690613a08565b6000604051808303818686fa925050503d8060008114611642576040519150601f19603f3d011682016040523d82523d6000602084013e611647565b606091505b509150915060208151101561166257600093505050506101c8565b81801561167e57508080602001905181019061167e9190613a1a565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561174b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176f9190613a3c565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fc9190613a3c565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156118f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191b9190613a3c565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d09060240161172e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab79190613a55565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016118da565b60008060008467ffffffffffffffff811115611bcc57611bcc612e8b565b604051908082528060200260200182016040528015611bf5578160200160208202803683370190505b50905060008567ffffffffffffffff811115611c1357611c13612e8b565b604051908082528060200260200182016040528015611c3c578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611c91578251815260209283019201611c79565b5050602088028101602084015b81831015611cb6578251815260209283019201611c9e565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611d109087908790600401613a72565b600060405180830381865afa158015611d2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d739190810190613ad5565b9050846020820160208a0281015b80821015611d9c578151835260209283019290910190611d81565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc8287612897565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f82611e6b858a612897565b90612918565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f82611ed1858a612897565b90612937565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc828761294c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc8287612997565b6000602083028203805b83811015611f695780518015611f60578252611f69565b50602001611f49565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611f695780516120465760008252611f69565b60200161202f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561216757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156121865750805160209091019061217f83826129f5565b9250612139565b505081526020019392505050565b6020828102820380516000928201835b85821080156121d257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612186575080516020909101906121ea8382612a31565b92506121a4565b6020828102820380516000928201835b85821080156122105750826000105b15612186575080516020909101906122288382612a60565b9250612201565b600060208302820380516000602083015b85811015612186578051830191508282101561225b57600080fd5b9091508190602001612240565b600060208302820380516000602083015b8581101561218657805191508161228f57600080fd5b9181900491602001612279565b6020828102820380516000928201835b85821015612186575080516020909101906122c78184613c7b565b92506122ac565b6020828102820380516000928201835b8582101561218657508051828111156122f5578092505b6020820191506122de565b6020828102820380516000928201835b858210156121865750805182811015612327578092505b602082019150612310565b600060208302820380516000602083015b8581101561218657805191508161235957600080fd5b9181900691602001612343565b60006020830282038051600080602084015b868110156123a95783156123a157805192508284029150828483041461239d57600080fd5b8193505b602001612378565b50505081526020019392505050565b600060208302820380516000602083015b8581101561218657805183039150828211156123e457600080fd5b90915081906020016123c9565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906118da9086908690600401613c87565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061257c90879087908790600401613cb6565b602060405180830381865afa158015612599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bd9190613a3c565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f8383612a76565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561265a5761265a612e8b565b604051908082528060200260200182016040528015612683578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156126bf5781518160200186015260208201915060208101905061269d565b505051905060006126d283838989612ad5565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561275385858585612c25565b90955250949695505050505050565b6060833b80612781575050604080516020810190915260008152610bb1565b8084111561279f575050604080516020810190915260008152610bb1565b838310156127ea576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016103ec565b83830384820360008282106127ff5782612801565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060815182604051602001612881929190613ceb565b6040516020818303038152906040529050919050565b60008082601214156128ac57839150506101c8565b82601211156128d8575060128290036128c681600a613c7b565b6128d09085613d82565b9150506101c8565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161290781600a613c7b565b6128d09085613dbf565b5092915050565b60008161292d670de0b6b3a764000085613d82565b610bb19190613dbf565b6000670de0b6b3a764000061292d8385613d82565b600081810b61295c5750816101c8565b60008260000b13156129845761297382600a613dfa565b61297d9084613d82565b90506101c8565b60ff60008390031661290781600a613c7b565b60008060128314156129ac57839150506101c8565b82601211156129c65750601282900361290781600a613c7b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016128c681600a613c7b565b6000828201838110612a075780612a29565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082612a40575060006101c8565b82820282848281612a5357612a536137f7565b041415612a075780612a29565b6000818311612a70576000610bb1565b50900390565b60008060015b60088111612acd576000612a908683612ccb565b90506000612a9e8684612ccb565b90506000612aac8383612a60565b9050612abc856001860383612d78565b94505060019092019150612a7c9050565b509392505050565b835160009081908190819060015b60088111612c1757600092508287612b1c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612b20565b5060005b60005b83811015612bd557612b4e8c8281518110612b4057612b40613165565b602002602001015184612ccb565b95508a8611612ba05788612b6d57612b668683612e01565b9150612b97565b6001891415612b8057612b668683612e17565b600289148015612b8e575084155b15612b97578591505b60019450612bcd565b89612bcd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612bd5565b600101612b23565b5083612bfe57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612c0c866001840383612d78565b955050600101612ae3565b509298975050505050505050565b6000826008811115612c93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b85811015612cbf5763ffffffff6020820290811b199890981685891b17979150600101612c97565b50959695505050505050565b6000816008811115612d39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b82612d475760009150612911565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612e105781610bb1565b5090919050565b600081831015612e105781610bb1565b600060208284031215612e3957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bb157600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461145a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715612edd57612edd612e8b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f2a57612f2a612e8b565b604052919050565b600067ffffffffffffffff821115612f4c57612f4c612e8b565b5060051b60200190565b600082601f830112612f6757600080fd5b81356020612f7c612f7783612f32565b612ee3565b82815260059290921b84018101918181019086841115612f9b57600080fd5b8286015b84811015612fb65780358352918301918301612f9f565b509695505050505050565b60008060408385031215612fd457600080fd5b8235612fdf81612e69565b9150602083013567ffffffffffffffff811115612ffb57600080fd5b61300785828601612f56565b9150509250929050565b60006020828403121561302357600080fd5b813567ffffffffffffffff81111561303a57600080fd5b820160408185031215610bb157600080fd5b6000806000806060858703121561306257600080fd5b843561306d81612e69565b935060208501359250604085013567ffffffffffffffff8082111561309157600080fd5b818701915087601f8301126130a557600080fd5b8135818111156130b457600080fd5b8860208260051b85010111156130c957600080fd5b95989497505060200194505050565b60005b838110156130f35781810151838201526020016130db565b83811115613102576000848401525b50505050565b600081518084526131208160208601602086016130d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610bb16020830184613108565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126131c857600080fd5b9190910192915050565b600067ffffffffffffffff8211156131ec576131ec612e8b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000604080833603121561322b57600080fd5b613233612eba565b833567ffffffffffffffff8082111561324b57600080fd5b9085019036601f83011261325e57600080fd5b8135602061326e612f7783612f32565b82815260059290921b8401810191818101903684111561328d57600080fd5b8286015b84811015613301578035868111156132a95760008081fd5b870136603f8201126132bb5760008081fd5b848101356132cb612f77826131d2565b818152368c8385010111156132e05760008081fd5b818c8401888301376000918101870191909152845250918301918301613291565b508652508781013595508286111561331857600080fd5b61332436878a01612f56565b90850152509195945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261336857600080fd5b83018035915067ffffffffffffffff82111561338357600080fd5b6020019150600581901b360382131561339b57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613403576134036133a2565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261343f57600080fd5b830160208101925035905067ffffffffffffffff81111561345f57600080fd5b8060051b360383131561339b57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156134ec57600080fd5b8260051b8083602087013760009401602001938452509192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526000602060408184015283356040840152808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261356757600080fd5b60406060850152840160c0840161357e828061340a565b604060808801528281845260e08801905060e08260051b89010193508260005b83811015613648577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126135ff57600080fd5b8501803567ffffffffffffffff81111561361857600080fd5b80360387131561362757600080fd5b61363488828c8501613471565b97505050918701919087019060010161359e565b50505050506136598383018361340a565b935091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808582030160a08601526136928184846134ba565b979650505050505050565b600081518084526020808501945080840160005b838110156136cd578151875295820195908201906001016136b1565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b8581101561371d57838303895261370b838351613108565b988501989250908401906001016136f3565b5090979650505050505050565b60208152815160208201526000602083015160a0604084015261375060c084018261369d565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08085840301606086015261378c83836136d8565b92506060860151915080858403016080860152506137aa828261369d565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156137eb578151855293820193908201906001016137cf565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a0865160408085880152613861838801836136d8565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261389c848361369d565b898103848b01528a51808252878c019550908701925060005b818110156138fc5785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c0909301926001016138b5565b50919c9b505050505050505050505050565b60006020828403121561392057600080fd5b815167ffffffffffffffff81111561393757600080fd5b8201601f8101841361394857600080fd5b8051613956612f77826131d2565b81815285602083850101111561396b57600080fd5b61397c8260208301602086016130d8565b95945050505050565b8281526000825161399d8160208501602087016130d8565b919091016020019392505050565b600084516139bd8184602089016130d8565b820184815283516139d58160208085019088016130d8565b0160200195945050505050565b60008152600082516139fb8160018501602087016130d8565b9190910160010192915050565b600082516131c88184602087016130d8565b600060208284031215613a2c57600080fd5b81518015158114610bb157600080fd5b600060208284031215613a4e57600080fd5b5051919050565b600060208284031215613a6757600080fd5b8151610bb181612e69565b604080825283519082018190526000906020906060840190828701845b82811015613ac157815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613a8f565b5050508381038285015261167e818661369d565b60006020808385031215613ae857600080fd5b825167ffffffffffffffff811115613aff57600080fd5b8301601f81018513613b1057600080fd5b8051613b1e612f7782612f32565b81815260059190911b82018301908381019087831115613b3d57600080fd5b928401925b8284101561369257835182529284019290840190613b42565b600181815b80851115613bb457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613b9a57613b9a6133a2565b80851615613ba757918102915b93841c9390800290613b60565b509250929050565b600082613bcb575060016101c8565b81613bd8575060006101c8565b8160018114613bee5760028114613bf857613c14565b60019150506101c8565b60ff841115613c0957613c096133a2565b50506001821b6101c8565b5060208310610133831016604e8410600b8410161715613c37575081810a6101c8565b613c418383613b5b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613c7357613c736133a2565b029392505050565b6000610bb18383613bbc565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a29604083018461369d565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061397c606083018461369d565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251613d7481600e8501602087016130d8565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dba57613dba6133a2565b500290565b600082613df5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610bb160ff841683613bbc56fea26469706673582212209ec8a4980503b946cfd95f79746dd1ca5c1d0ee83c5e41a9fedc6e260e121b3964736f6c634300080a0033"; type CombineTierConstructorParams = | [signer?: Signer] @@ -226,14 +269,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/Cooldown__factory.ts b/src/typechain/factories/Cooldown__factory.ts index 90866e7..51d5858 100644 --- a/src/typechain/factories/Cooldown__factory.ts +++ b/src/typechain/factories/Cooldown__factory.ts @@ -47,7 +47,7 @@ const _abi = [ ]; const _bytecode = - "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212206194a9835a46210d885d054d777ee9580459a7eeb2834aa3946021eba713216d64736f6c634300080a0033"; + "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212206788812b8ac97f88eaa1efdefd97b88d593964c357cb869fd7223e56f3124f8964736f6c634300080a0033"; type CooldownConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC1155__factory.ts b/src/typechain/factories/ERC1155__factory.ts index 62c176a..95f1413 100644 --- a/src/typechain/factories/ERC1155__factory.ts +++ b/src/typechain/factories/ERC1155__factory.ts @@ -332,7 +332,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162001cea38038062001cea83398101604081905262000034916200011b565b6200003f8162000046565b5062000234565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b602082108114156200022e57634e487b7160e01b600052602260045260246000fd5b50919050565b611aa680620002446000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461018657600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004611255565b610199565b6040519081526020015b60405180910390f35b6100c56100c03660046112b0565b610276565b60405190151581526020016100a9565b6100e86100e33660046112d4565b61035b565b6040516100a99190611358565b61010861010336600461150c565b6103ef565b005b61011d6101183660046115b6565b6104b8565b6040516100a991906116bc565b6101086101383660046116cf565b610610565b6100c561014b36600461170b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61010861019436600461173e565b61061f565b600073ffffffffffffffffffffffffffffffffffffffff8316610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526020818152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061030957507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461036a906117a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610396906117a3565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104185750610418853361014b565b6104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000606482015260840161023a565b6104b185858585856106e1565b5050505050565b6060815183511461054b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161023a565b6000835167ffffffffffffffff8111156105675761056761136b565b604051908082528060200260200182016040528015610590578160200160208202803683370190505b50905060005b8451811015610608576105db8582815181106105b4576105b46117f7565b60200260200101518583815181106105ce576105ce6117f7565b6020026020010151610199565b8282815181106105ed576105ed6117f7565b602090810291909101015261060181611855565b9050610596565b509392505050565b61061b338383610a1b565b5050565b73ffffffffffffffffffffffffffffffffffffffff85163314806106485750610648853361014b565b6106d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f7665640000000000000000000000000000000000000000000000606482015260840161023a565b6104b18585858585610b6f565b8151835114610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff8416610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b3360005b8451811015610986576000858281518110610836576108366117f7565b602002602001015190506000858381518110610854576108546117f7565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b1682528120805484929061096b90849061188e565b925050819055505050508061097f90611855565b9050610819565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109fd9291906118a6565b60405180910390a4610a13818787878787610da9565b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8416610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b33610c2b818787610c2288611034565b6104b188611034565b60008481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8a16845290915290205483811015610ce9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008581526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b8116855292528083208785039055908816825281208054869290610d3390849061188e565b9091555050604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610da082888888888861107f565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c8190610e2090899089908890889088906004016118d4565b6020604051808303816000875af1925050508015610e79575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e769181019061193f565b60015b610f6357610e8561195c565b806308c379a01415610ed95750610e9a611978565b80610ea55750610edb565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023a9190611358565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161023a565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061106e5761106e6117f7565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906110f69089908990889088908890600401611a20565b6020604051808303816000875af192505050801561114f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261114c9181019061193f565b60015b61115b57610e8561195c565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125057600080fd5b919050565b6000806040838503121561126857600080fd5b6112718361122c565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146112ad57600080fd5b50565b6000602082840312156112c257600080fd5b81356112cd8161127f565b9392505050565b6000602082840312156112e657600080fd5b5035919050565b6000815180845260005b81811015611313576020818501810151868301820152016112f7565b81811115611325576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112cd60208301846112ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156113de576113de61136b565b6040525050565b600067ffffffffffffffff8211156113ff576113ff61136b565b5060051b60200190565b600082601f83011261141a57600080fd5b81356020611427826113e5565b604051611434828261139a565b83815260059390931b850182019282810191508684111561145457600080fd5b8286015b8481101561146f5780358352918301918301611458565b509695505050505050565b600082601f83011261148b57600080fd5b813567ffffffffffffffff8111156114a5576114a561136b565b6040516114da60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116018261139a565b8181528460208386010111156114ef57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561152457600080fd5b61152d8661122c565b945061153b6020870161122c565b9350604086013567ffffffffffffffff8082111561155857600080fd5b61156489838a01611409565b9450606088013591508082111561157a57600080fd5b61158689838a01611409565b9350608088013591508082111561159c57600080fd5b506115a98882890161147a565b9150509295509295909350565b600080604083850312156115c957600080fd5b823567ffffffffffffffff808211156115e157600080fd5b818501915085601f8301126115f557600080fd5b81356020611602826113e5565b60405161160f828261139a565b83815260059390931b850182019282810191508984111561162f57600080fd5b948201945b83861015611654576116458661122c565b82529482019490820190611634565b9650508601359250508082111561166a57600080fd5b5061167785828601611409565b9150509250929050565b600081518084526020808501945080840160005b838110156116b157815187529582019590820190600101611695565b509495945050505050565b6020815260006112cd6020830184611681565b600080604083850312156116e257600080fd5b6116eb8361122c565b91506020830135801515811461170057600080fd5b809150509250929050565b6000806040838503121561171e57600080fd5b6117278361122c565b91506117356020840161122c565b90509250929050565b600080600080600060a0868803121561175657600080fd5b61175f8661122c565b945061176d6020870161122c565b93506040860135925060608601359150608086013567ffffffffffffffff81111561179757600080fd5b6115a98882890161147a565b600181811c908216806117b757607f821691505b602082108114156117f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561188757611887611826565b5060010190565b600082198211156118a1576118a1611826565b500190565b6040815260006118b96040830185611681565b82810360208401526118cb8185611681565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261190d60a0830186611681565b828103606084015261191f8186611681565b9050828103608084015261193381856112ed565b98975050505050505050565b60006020828403121561195157600080fd5b81516112cd8161127f565b600060033d11156119755760046000803e5060005160e01c5b90565b600060443d10156119865790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156119d457505050505090565b82850191508151818111156119ec5750505050505090565b843d8701016020828501011115611a065750505050505090565b611a156020828601018761139a565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611a6560a08301846112ed565b97965050505050505056fea2646970667358221220cbc0f60db860b1378f6f2c5ba36500d18047185f97771f5638683e0b2908a3fa64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b5060405162001cf738038062001cf783398101604081905262000034916200011b565b6200003f8162000046565b5062000234565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b602082108114156200022e57634e487b7160e01b600052602260045260246000fd5b50919050565b611ab380620002446000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461018657600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004611262565b610199565b6040519081526020015b60405180910390f35b6100c56100c03660046112bd565b610276565b60405190151581526020016100a9565b6100e86100e33660046112e1565b61035b565b6040516100a99190611365565b610108610103366004611519565b6103ef565b005b61011d6101183660046115c3565b6104b8565b6040516100a991906116c9565b6101086101383660046116dc565b610610565b6100c561014b366004611718565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61010861019436600461174b565b61061f565b600073ffffffffffffffffffffffffffffffffffffffff8316610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526020818152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061030957507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461036a906117b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610396906117b0565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104185750610418853361014b565b6104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f7665640000000000000000000000000000000000606482015260840161023a565b6104b185858585856106e1565b5050505050565b6060815183511461054b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161023a565b6000835167ffffffffffffffff81111561056757610567611378565b604051908082528060200260200182016040528015610590578160200160208202803683370190505b50905060005b8451811015610608576105db8582815181106105b4576105b4611804565b60200260200101518583815181106105ce576105ce611804565b6020026020010151610199565b8282815181106105ed576105ed611804565b602090810291909101015261060181611862565b9050610596565b509392505050565b61061b338383610a1b565b5050565b73ffffffffffffffffffffffffffffffffffffffff85163314806106485750610648853361014b565b6106d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f7665640000000000000000000000000000000000606482015260840161023a565b6104b18585858585610b6f565b8151835114610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff8416610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b3360005b845181101561098657600085828151811061083657610836611804565b60200260200101519050600085838151811061085457610854611804565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b1682528120805484929061096b90849061189b565b925050819055505050508061097f90611862565b9050610819565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109fd9291906118b3565b60405180910390a4610a13818787878787610dad565b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8416610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b336000610c1e85611041565b90506000610c2b85611041565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a16825281208054889290610d3590849061189b565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610da2848a8a8a8a8a61108c565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c8190610e2490899089908890889088906004016118e1565b6020604051808303816000875af1925050508015610e7d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e7a9181019061194c565b60015b610f6757610e89611969565b806308c379a01415610edd5750610e9e611985565b80610ea95750610edf565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023a9190611365565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161023a565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061107b5761107b611804565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906111039089908990889088908890600401611a2d565b6020604051808303816000875af192505050801561115c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526111599181019061194c565b60015b61116857610e89611969565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125d57600080fd5b919050565b6000806040838503121561127557600080fd5b61127e83611239565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146112ba57600080fd5b50565b6000602082840312156112cf57600080fd5b81356112da8161128c565b9392505050565b6000602082840312156112f357600080fd5b5035919050565b6000815180845260005b8181101561132057602081850181015186830182015201611304565b81811115611332576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112da60208301846112fa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156113eb576113eb611378565b6040525050565b600067ffffffffffffffff82111561140c5761140c611378565b5060051b60200190565b600082601f83011261142757600080fd5b81356020611434826113f2565b60405161144182826113a7565b83815260059390931b850182019282810191508684111561146157600080fd5b8286015b8481101561147c5780358352918301918301611465565b509695505050505050565b600082601f83011261149857600080fd5b813567ffffffffffffffff8111156114b2576114b2611378565b6040516114e760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601826113a7565b8181528460208386010111156114fc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561153157600080fd5b61153a86611239565b945061154860208701611239565b9350604086013567ffffffffffffffff8082111561156557600080fd5b61157189838a01611416565b9450606088013591508082111561158757600080fd5b61159389838a01611416565b935060808801359150808211156115a957600080fd5b506115b688828901611487565b9150509295509295909350565b600080604083850312156115d657600080fd5b823567ffffffffffffffff808211156115ee57600080fd5b818501915085601f83011261160257600080fd5b8135602061160f826113f2565b60405161161c82826113a7565b83815260059390931b850182019282810191508984111561163c57600080fd5b948201945b838610156116615761165286611239565b82529482019490820190611641565b9650508601359250508082111561167757600080fd5b5061168485828601611416565b9150509250929050565b600081518084526020808501945080840160005b838110156116be578151875295820195908201906001016116a2565b509495945050505050565b6020815260006112da602083018461168e565b600080604083850312156116ef57600080fd5b6116f883611239565b91506020830135801515811461170d57600080fd5b809150509250929050565b6000806040838503121561172b57600080fd5b61173483611239565b915061174260208401611239565b90509250929050565b600080600080600060a0868803121561176357600080fd5b61176c86611239565b945061177a60208701611239565b93506040860135925060608601359150608086013567ffffffffffffffff8111156117a457600080fd5b6115b688828901611487565b600181811c908216806117c457607f821691505b602082108114156117fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561189457611894611833565b5060010190565b600082198211156118ae576118ae611833565b500190565b6040815260006118c6604083018561168e565b82810360208401526118d8818561168e565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261191a60a083018661168e565b828103606084015261192c818661168e565b9050828103608084015261194081856112fa565b98975050505050505050565b60006020828403121561195e57600080fd5b81516112da8161128c565b600060033d11156119825760046000803e5060005160e01c5b90565b600060443d10156119935790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156119e157505050505090565b82850191508151818111156119f95750505050505090565b843d8701016020828501011115611a135750505050505090565b611a22602082860101876113a7565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611a7260a08301846112fa565b97965050505050505056fea26469706673582212200251b0212a6b63dfb28369a3e1e8c471cfaaf246235df149cb4d42dfb40c59c664736f6c634300080a0033"; type ERC1155ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC165Upgradeable__factory.ts b/src/typechain/factories/ERC165Upgradeable__factory.ts deleted file mode 100644 index 5ec2852..0000000 --- a/src/typechain/factories/ERC165Upgradeable__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 { - ERC165Upgradeable, - ERC165UpgradeableInterface, -} from "../ERC165Upgradeable"; - -const _abi = [ - { - 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 0586aa2..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 = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b610ce3806108f783390190565b6080516108336100c4600039600081816093015261037a01526108336000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063ab43ea1f146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105e4565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610622565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c9190610695565b92915050565b6000806103718385018561070b565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103f39085906004016107a9565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b6000610120828403121561059557600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105bd57600080fd5b50565b6000602082840312156105d257600080fd5b81356105dd8161059b565b9392505050565b610120810182356105f48161059b565b73ffffffffffffffffffffffffffffffffffffffff1682526101006020848101908401376000815292915050565b600060208083528351808285015260005b8181101561064f57858101830151858201604001528201610633565b81811115610661576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106a757600080fd5b81516105dd8161059b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610705576107056106b2565b60405290565b600061012080838503121561071f57600080fd5b6040516040810181811067ffffffffffffffff82111715610742576107426106b2565b60405283356107508161059b565b81526020603f8501861361076357600080fd5b61076b6106e1565b92850192808785111561077d57600080fd5b8287015b858110156107985780358352918301918301610781565b509183019190915250949350505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156107f3578251825291830191908301906001016107d6565b505050509291505056fea2646970667358221220ec9932e0ecdaefa26435066b684dd87432016db14e264acb8c303de31d4ae06464736f6c634300080a0033608060405234801561001057600080fd5b50610cc3806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b6040516100669190610888565b60405180910390f35b61008261007d3660046108df565b6100fa565b005b6100826100923660046109c1565b610161565b6100aa6100a5366004610a5f565b61035e565b604051908152602001610066565b6100c0610869565b6000546100e29073ffffffffffffffffffffffffffffffffffffffff16610414565b8060200190518101906100f59190610a7c565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000547501000000000000000000000000000000000000000000900460ff166101a85760005474010000000000000000000000000000000000000000900460ff16156101ac565b303b155b610238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b6000547501000000000000000000000000000000000000000000900460ff1615801561029f57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6102ac8260200151610442565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561035a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b600061040e60006104096103706100b8565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa1580156103e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104049190610add565b6105db565b610629565b92915050565b606061040e8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6106c9565b60005473ffffffffffffffffffffffffffffffffffffffff161561046857610468610af6565b6000805b6008811015610516578183826008811061048857610488610b25565b602002015110156104f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610158565b82816008811061050757610507610b25565b6020020151915060010161046c565b505060006105428260405160200161052e9190610888565b6040516020818303038152906040526107b2565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b600881101561061f578381600881106105fa576105fa610b25565b602002015183101561060d57905061040e565b8061061781610b54565b9150506105df565b5060089392505050565b6000816008811115610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610158565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b806106e85750506040805160208101909152600081526107ab565b808411156107065750506040805160208101909152600081526107ab565b83831015610751576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610158565b83830384820360008282106107665782610768565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806107dd836040516020016107c99190610bef565b60405160208183030381529060405261083d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610837576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610853929190610c02565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156108b1578151835260209283019290910190600101610892565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146108dc57600080fd5b50565b600080600080606085870312156108f557600080fd5b8435610900816108ba565b935060208501359250604085013567ffffffffffffffff8082111561092457600080fd5b818701915087601f83011261093857600080fd5b81358181111561094757600080fd5b88602082850101111561095957600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156109bb576109bb610968565b60405290565b60006101208083850312156109d557600080fd5b6040516040810181811067ffffffffffffffff821117156109f8576109f8610968565b6040528335610a06816108ba565b81526020603f85018613610a1957600080fd5b610a21610997565b928501928087851115610a3357600080fd5b8287015b85811015610a4e5780358352918301918301610a37565b509183019190915250949350505050565b600060208284031215610a7157600080fd5b81356107ab816108ba565b6000610100808385031215610a9057600080fd5b83601f840112610a9f57600080fd5b610aa7610997565b908301908085831115610ab957600080fd5b845b83811015610ad3578051835260209283019201610abb565b5095945050505050565b600060208284031215610aef57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610bad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610bd55760208185018101518683015201610bbb565b81811115610be4576000828601525b509290920192915050565b6000815260006107ab6001830184610bb4565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610c85600e830184610bb4565b94935050505056fea2646970667358221220357d760f9dd4cc0e0a228e340d951502a72616fefae3f7afd98c93ffdb1c439464736f6c634300080a0033"; - -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 f194cc3..0000000 --- a/src/typechain/factories/ERC20BalanceTier__factory.ts +++ /dev/null @@ -1,242 +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: "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 = - "0x608060405234801561001057600080fd5b50610cc3806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b6040516100669190610888565b60405180910390f35b61008261007d3660046108df565b6100fa565b005b6100826100923660046109c1565b610161565b6100aa6100a5366004610a5f565b61035e565b604051908152602001610066565b6100c0610869565b6000546100e29073ffffffffffffffffffffffffffffffffffffffff16610414565b8060200190518101906100f59190610a7c565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000547501000000000000000000000000000000000000000000900460ff166101a85760005474010000000000000000000000000000000000000000900460ff16156101ac565b303b155b610238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b6000547501000000000000000000000000000000000000000000900460ff1615801561029f57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6102ac8260200151610442565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561035a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b600061040e60006104096103706100b8565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa1580156103e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104049190610add565b6105db565b610629565b92915050565b606061040e8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6106c9565b60005473ffffffffffffffffffffffffffffffffffffffff161561046857610468610af6565b6000805b6008811015610516578183826008811061048857610488610b25565b602002015110156104f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610158565b82816008811061050757610507610b25565b6020020151915060010161046c565b505060006105428260405160200161052e9190610888565b6040516020818303038152906040526107b2565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b600881101561061f578381600881106105fa576105fa610b25565b602002015183101561060d57905061040e565b8061061781610b54565b9150506105df565b5060089392505050565b6000816008811115610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610158565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b806106e85750506040805160208101909152600081526107ab565b808411156107065750506040805160208101909152600081526107ab565b83831015610751576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610158565b83830384820360008282106107665782610768565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806107dd836040516020016107c99190610bef565b60405160208183030381529060405261083d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610837576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610853929190610c02565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156108b1578151835260209283019290910190600101610892565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146108dc57600080fd5b50565b600080600080606085870312156108f557600080fd5b8435610900816108ba565b935060208501359250604085013567ffffffffffffffff8082111561092457600080fd5b818701915087601f83011261093857600080fd5b81358181111561094757600080fd5b88602082850101111561095957600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156109bb576109bb610968565b60405290565b60006101208083850312156109d557600080fd5b6040516040810181811067ffffffffffffffff821117156109f8576109f8610968565b6040528335610a06816108ba565b81526020603f85018613610a1957600080fd5b610a21610997565b928501928087851115610a3357600080fd5b8287015b85811015610a4e5780358352918301918301610a37565b509183019190915250949350505050565b600060208284031215610a7157600080fd5b81356107ab816108ba565b6000610100808385031215610a9057600080fd5b83601f840112610a9f57600080fd5b610aa7610997565b908301908085831115610ab957600080fd5b845b83811015610ad3578051835260209283019201610abb565b5095945050505050565b600060208284031215610aef57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610bad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610bd55760208185018101518683015201610bbb565b81811115610be4576000828601525b509290920192915050565b6000815260006107ab6001830184610bb4565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610c85600e830184610bb4565b94935050505056fea2646970667358221220357d760f9dd4cc0e0a228e340d951502a72616fefae3f7afd98c93ffdb1c439464736f6c634300080a0033"; - -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/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..ac91514 100644 --- a/src/typechain/factories/ERC20PulleeTest__factory.ts +++ b/src/typechain/factories/ERC20PulleeTest__factory.ts @@ -135,7 +135,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610a69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063beabacc811610050578063beabacc8146100b2578063c20713fe146100c5578063e1f21c67146100d857600080fd5b80630ac0a1ff14610077578063913bed391461008c578063b14c21c51461009f575b600080fd5b61008a6100853660046107b5565b6100eb565b005b61008a61009a3660046107b5565b610171565b61008a6100ad3660046107b5565b6101c5565b61008a6100c03660046107ee565b610219565b61008a6100d336600461082f565b6102b8565b61008a6100e63660046107ee565b610346565b6040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e7ae91fe906024015b600060405180830381600087803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b505050505050565b6040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638b24259b9060240161013b565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633833be629060240161013b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906108bd565b50505050565b6040517ff677de9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f677de969061030e908690869086906004016108df565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b5050505050505050565b61036773ffffffffffffffffffffffffffffffffffffffff8416838361036c565b505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610942565b610411919061095b565b6040805173ffffffffffffffffffffffffffffffffffffffff868116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401529293506102b29287926000916104df9190851690849061058e565b80519091501561036757808060200190518101906104fd91906108bd565b610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606061059d84846000856105a7565b90505b9392505050565b606082471015610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b6106b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e091906109c6565b60006040518083038185875af1925050503d806000811461071d576040519150601f19603f3d011682016040523d82523d6000602084013e610722565b606091505b509150915061073282828661073d565b979650505050505050565b6060831561074c5750816105a0565b82511561075c5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058591906109e2565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fd5b50565b600080604083850312156107c857600080fd5b82356107d381610790565b915060208301356107e381610790565b809150509250929050565b60008060006060848603121561080357600080fd5b833561080e81610790565b9250602084013561081e81610790565b929592945050506040919091013590565b6000806000806060858703121561084557600080fd5b843561085081610790565b9350602085013567ffffffffffffffff8082111561086d57600080fd5b818701915087601f83011261088157600080fd5b81358181111561089057600080fd5b8860208260051b85010111156108a557600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156108cf57600080fd5b815180151581146105a057600080fd5b6040808252810183905260008460608301825b8681101561092f57823561090581610790565b73ffffffffffffffffffffffffffffffffffffffff168252602092830192909101906001016108f2565b5060209390930193909352509392505050565b60006020828403121561095457600080fd5b5051919050565b60008219821115610995577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60005b838110156109b557818101518382015260200161099d565b838111156102b25750506000910152565b600082516109d881846020870161099a565b9190910192915050565b6020815260008251806020840152610a0181604085016020870161099a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220a9d4815901afb4b4e18e59f30f4f9edbe29e276f327d042ef0a58031b9d42aa964736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610a69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063beabacc811610050578063beabacc8146100b2578063c20713fe146100c5578063e1f21c67146100d857600080fd5b80630ac0a1ff14610077578063913bed391461008c578063b14c21c51461009f575b600080fd5b61008a6100853660046107b5565b6100eb565b005b61008a61009a3660046107b5565b610171565b61008a6100ad3660046107b5565b6101c5565b61008a6100c03660046107ee565b610219565b61008a6100d336600461082f565b6102b8565b61008a6100e63660046107ee565b610346565b6040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e7ae91fe906024015b600060405180830381600087803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b505050505050565b6040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638b24259b9060240161013b565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633833be629060240161013b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906108bd565b50505050565b6040517ff677de9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f677de969061030e908690869086906004016108df565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b5050505050505050565b61036773ffffffffffffffffffffffffffffffffffffffff8416838361036c565b505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610942565b610411919061095b565b6040805173ffffffffffffffffffffffffffffffffffffffff868116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401529293506102b29287926000916104df9190851690849061058e565b80519091501561036757808060200190518101906104fd91906108bd565b610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606061059d84846000856105a7565b90505b9392505050565b606082471015610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b6106b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e091906109c6565b60006040518083038185875af1925050503d806000811461071d576040519150601f19603f3d011682016040523d82523d6000602084013e610722565b606091505b509150915061073282828661073d565b979650505050505050565b6060831561074c5750816105a0565b82511561075c5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058591906109e2565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fd5b50565b600080604083850312156107c857600080fd5b82356107d381610790565b915060208301356107e381610790565b809150509250929050565b60008060006060848603121561080357600080fd5b833561080e81610790565b9250602084013561081e81610790565b929592945050506040919091013590565b6000806000806060858703121561084557600080fd5b843561085081610790565b9350602085013567ffffffffffffffff8082111561086d57600080fd5b818701915087601f83011261088157600080fd5b81358181111561089057600080fd5b8860208260051b85010111156108a557600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156108cf57600080fd5b815180151581146105a057600080fd5b6040808252810183905260008460608301825b8681101561092f57823561090581610790565b73ffffffffffffffffffffffffffffffffffffffff168252602092830192909101906001016108f2565b5060209390930193909352509392505050565b60006020828403121561095457600080fd5b5051919050565b60008219821115610995577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60005b838110156109b557818101518382015260200161099d565b838111156102b25750506000910152565b600082516109d881846020870161099a565b9190910192915050565b6020815260008251806020840152610a0181604085016020870161099a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122048e9ceb088e21b0213f7501f9affbdb46d6a9ef40195f9d426b7644edc1ffd6564736f6c634300080a0033"; type ERC20PulleeTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20Redeem__factory.ts b/src/typechain/factories/ERC20Redeem__factory.ts index 0e3535b..d38c08b 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"; + "0x608060405234801561001057600080fd5b50610e5b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101e8578063a457c2d7146101f0578063a9059cbb14610203578063dd62ed3e1461021657600080fd5b806342966c681461018c57806370a082311461019f57806379cc6790146101d557600080fd5b806318160ddd116100c857806318160ddd1461014557806323b872dd14610157578063313ce5671461016a578063395093511461017957600080fd5b8063038ef03e146100ef57806306fdde0314610104578063095ea7b314610122575b600080fd5b6101026100fd366004610c2c565b61025c565b005b61010c6102ad565b6040516101199190610c4e565b60405180910390f35b610135610130366004610cc1565b61033f565b6040519015158152602001610119565b6035545b604051908152602001610119565b610135610165366004610ceb565b610357565b60405160128152602001610119565b610135610187366004610cc1565b61037b565b61010261019a366004610d27565b6103c7565b6101496101ad366004610c2c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026101e3366004610cc1565b6103d4565b61010c6103ed565b6101356101fe366004610cc1565b6103fc565b610135610211366004610cc1565b6104d2565b610149610224366004610d40565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d56910160405180910390a150565b6060603680546102bc90610d73565b80601f01602080910402602001604051908101604052809291908181526020018280546102e890610d73565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b60003361034d8185856104e0565b5060019392505050565b600033610365858285610694565b61037085858561076b565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061034d90829086906103c2908790610df6565b6104e0565b6103d13382610a1e565b50565b6103df823383610694565b6103e98282610a1e565b5050565b6060603780546102bc90610d73565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61037082868684036104e0565b60003361034d81858561076b565b73ffffffffffffffffffffffffffffffffffffffff8316610582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8216610625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107655781811015610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104bc565b61076584848484036104e0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661080e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff82166108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906109ab908490610df6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1191815260200190565b60405180910390a3610765565b73ffffffffffffffffffffffffffffffffffffffff8216610ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015610b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290610bb3908490610e0e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610687565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c2757600080fd5b919050565b600060208284031215610c3e57600080fd5b610c4782610c03565b9392505050565b600060208083528351808285015260005b81811015610c7b57858101830151858201604001528201610c5f565b81811115610c8d576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060408385031215610cd457600080fd5b610cdd83610c03565b946020939093013593505050565b600080600060608486031215610d0057600080fd5b610d0984610c03565b9250610d1760208501610c03565b9150604084013590509250925092565b600060208284031215610d3957600080fd5b5035919050565b60008060408385031215610d5357600080fd5b610d5c83610c03565b9150610d6a60208401610c03565b90509250929050565b600181811c90821680610d8757607f821691505b60208210811415610dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610e0957610e09610dc7565b500190565b600082821015610e2057610e20610dc7565b50039056fea26469706673582212207dfba82562e8de3685bb0c09a57de20b4f1c3279bb53a0f015d8970f01430cd764736f6c634300080a0033"; type ERC20RedeemConstructorParams = | [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 38b423d..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 = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b611461806108f783390190565b6080516108336100c4600039600081816093015261037a01526108336000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063ab43ea1f146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105e4565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610622565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c9190610695565b92915050565b6000806103718385018561070b565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103f39085906004016107a9565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b6000610120828403121561059557600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105bd57600080fd5b50565b6000602082840312156105d257600080fd5b81356105dd8161059b565b9392505050565b610120810182356105f48161059b565b73ffffffffffffffffffffffffffffffffffffffff1682526101006020848101908401376000815292915050565b600060208083528351808285015260005b8181101561064f57858101830151858201604001528201610633565b81811115610661576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106a757600080fd5b81516105dd8161059b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610705576107056106b2565b60405290565b600061012080838503121561071f57600080fd5b6040516040810181811067ffffffffffffffff82111715610742576107426106b2565b60405283356107508161059b565b81526020603f8501861361076357600080fd5b61076b6106e1565b92850192808785111561077d57600080fd5b8287015b858110156107985780358352918301918301610781565b509183019190915250949350505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156107f3578251825291830191908301906001016107d6565b505050509291505056fea2646970667358221220595000413c44d9b72a212da798ce433e335b4cf68b140efef65580c0638e571464736f6c634300080a0033608060405234801561001057600080fd5b50611441806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b6040516100669190610f5a565b60405180910390f35b61008261007d366004610fb1565b6100fa565b005b610082610092366004611093565b610210565b6100aa6100a5366004611131565b61040d565b604051908152602001610066565b6100c0610f3b565b6001546100e29073ffffffffffffffffffffffffffffffffffffffff1661048a565b8060200190518101906100f5919061114e565b905090565b60008311610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101748561040d565b9050600061018282436104b8565b9050610190828287436104f2565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c8906101f3903390899085908a908a908a906111af565b60405180910390a1610208868287878761051f565b505050505050565b6001547501000000000000000000000000000000000000000000900460ff166102575760015474010000000000000000000000000000000000000000900460ff161561025b565b303b155b6102e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b6001547501000000000000000000000000000000000000000000900460ff1615801561034e57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b61035b8260200151610642565b8151600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561040957600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604081205461045d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610484565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020545b92915050565b60606104848260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107db565b6000805b60088110156104e857828160200285901c63ffffffff1611156104e0579050610484565b6001016104bc565b5060089392505050565b600083831061050c57610507858585856108c4565b610516565b610516858461096a565b95945050505050565b8383116105a5573373ffffffffffffffffffffffffffffffffffffffff8616146105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f44454c4547415445445f544945525f4c4f5353000000000000000000000000006044820152606401610160565b60006105af6100b8565b905060006105bd8287610a0a565b905060006105cb8387610a0a565b9050818114156105dd5750505061063b565b818111156106115760025461060c9073ffffffffffffffffffffffffffffffffffffffff163330858503610a3b565b610637565b6002546106379073ffffffffffffffffffffffffffffffffffffffff1633838503610b1d565b5050505b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff161561066857610668611235565b6000805b6008811015610716578183826008811061068857610688611264565b602002015110156106f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610160565b82816008811061070757610707611264565b6020020151915060010161066c565b505060006107428260405160200161072e9190610f5a565b604051602081830303815290604052610b78565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6060833b806107fa5750506040805160208101909152600081526108bd565b808411156108185750506040805160208101909152600081526108bd565b83831015610863576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610160565b8383038482036000828210610878578261087a565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000826008811115610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b6000855b8581101561095e5763ffffffff6020820290811b199890981685891b17979150600101610936565b50959695505050505050565b60008160088111156109d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6000808211610a1a5760006108bd565b826001830360088110610a2f57610a2f611264565b60200201519392505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610b179085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610c03565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b739084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610a95565b505050565b600080610ba383604051602001610b8f91906112bf565b604051602081830303815290604052610d0f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610bfd576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610c65826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610d3b9092919063ffffffff16565b805190915015610b735780806020019051810190610c8391906112e5565b610b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610160565b6060815182604051602001610d25929190611307565b6040516020818303038152906040529050919050565b6060610d4a8484600085610d52565b949350505050565b606082471015610de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610160565b73ffffffffffffffffffffffffffffffffffffffff85163b610e62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610160565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610e8b919061139e565b60006040518083038185875af1925050503d8060008114610ec8576040519150601f19603f3d011682016040523d82523d6000602084013e610ecd565b606091505b5091509150610edd828286610ee8565b979650505050505050565b60608315610ef75750816108bd565b825115610f075782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016091906113ba565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015610f83578151835260209283019290910190600101610f64565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610fae57600080fd5b50565b60008060008060608587031215610fc757600080fd5b8435610fd281610f8c565b935060208501359250604085013567ffffffffffffffff80821115610ff657600080fd5b818701915087601f83011261100a57600080fd5b81358181111561101957600080fd5b88602082850101111561102b57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561108d5761108d61103a565b60405290565b60006101208083850312156110a757600080fd5b6040516040810181811067ffffffffffffffff821117156110ca576110ca61103a565b60405283356110d881610f8c565b81526020603f850186136110eb57600080fd5b6110f3611069565b92850192808785111561110557600080fd5b8287015b858110156111205780358352918301918301611109565b509183019190915250949350505050565b60006020828403121561114357600080fd5b81356108bd81610f8c565b600061010080838503121561116257600080fd5b83601f84011261117157600080fd5b611179611069565b90830190808583111561118b57600080fd5b845b838110156111a557805183526020928301920161118d565b5095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156112ae578181015183820152602001611296565b83811115610b175750506000910152565b60008152600082516112d8816001850160208701611293565b9190910160010192915050565b6000602082840312156112f757600080fd5b815180151581146108bd57600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161139081600e850160208701611293565b91909101600e019392505050565b600082516113b0818460208701611293565b9190910192915050565b60208152600082518060208401526113d9816040850160208701611293565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212206ec8ffe9592912187417d18bec7de32180944a21c3e48048c4a3bad19700b40b64736f6c634300080a0033"; - -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 6c3c639..0000000 --- a/src/typechain/factories/ERC20TransferTier__factory.ts +++ /dev/null @@ -1,242 +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: "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 = - "0x608060405234801561001057600080fd5b50611441806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b6040516100669190610f5a565b60405180910390f35b61008261007d366004610fb1565b6100fa565b005b610082610092366004611093565b610210565b6100aa6100a5366004611131565b61040d565b604051908152602001610066565b6100c0610f3b565b6001546100e29073ffffffffffffffffffffffffffffffffffffffff1661048a565b8060200190518101906100f5919061114e565b905090565b60008311610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101748561040d565b9050600061018282436104b8565b9050610190828287436104f2565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c8906101f3903390899085908a908a908a906111af565b60405180910390a1610208868287878761051f565b505050505050565b6001547501000000000000000000000000000000000000000000900460ff166102575760015474010000000000000000000000000000000000000000900460ff161561025b565b303b155b6102e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b6001547501000000000000000000000000000000000000000000900460ff1615801561034e57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b61035b8260200151610642565b8151600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561040957600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604081205461045d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610484565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020545b92915050565b60606104848260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107db565b6000805b60088110156104e857828160200285901c63ffffffff1611156104e0579050610484565b6001016104bc565b5060089392505050565b600083831061050c57610507858585856108c4565b610516565b610516858461096a565b95945050505050565b8383116105a5573373ffffffffffffffffffffffffffffffffffffffff8616146105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f44454c4547415445445f544945525f4c4f5353000000000000000000000000006044820152606401610160565b60006105af6100b8565b905060006105bd8287610a0a565b905060006105cb8387610a0a565b9050818114156105dd5750505061063b565b818111156106115760025461060c9073ffffffffffffffffffffffffffffffffffffffff163330858503610a3b565b610637565b6002546106379073ffffffffffffffffffffffffffffffffffffffff1633838503610b1d565b5050505b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff161561066857610668611235565b6000805b6008811015610716578183826008811061068857610688611264565b602002015110156106f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610160565b82816008811061070757610707611264565b6020020151915060010161066c565b505060006107428260405160200161072e9190610f5a565b604051602081830303815290604052610b78565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6060833b806107fa5750506040805160208101909152600081526108bd565b808411156108185750506040805160208101909152600081526108bd565b83831015610863576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610160565b8383038482036000828210610878578261087a565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000826008811115610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b6000855b8581101561095e5763ffffffff6020820290811b199890981685891b17979150600101610936565b50959695505050505050565b60008160088111156109d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6000808211610a1a5760006108bd565b826001830360088110610a2f57610a2f611264565b60200201519392505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610b179085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610c03565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b739084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610a95565b505050565b600080610ba383604051602001610b8f91906112bf565b604051602081830303815290604052610d0f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610bfd576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610c65826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610d3b9092919063ffffffff16565b805190915015610b735780806020019051810190610c8391906112e5565b610b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610160565b6060815182604051602001610d25929190611307565b6040516020818303038152906040529050919050565b6060610d4a8484600085610d52565b949350505050565b606082471015610de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610160565b73ffffffffffffffffffffffffffffffffffffffff85163b610e62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610160565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610e8b919061139e565b60006040518083038185875af1925050503d8060008114610ec8576040519150601f19603f3d011682016040523d82523d6000602084013e610ecd565b606091505b5091509150610edd828286610ee8565b979650505050505050565b60608315610ef75750816108bd565b825115610f075782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016091906113ba565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015610f83578151835260209283019290910190600101610f64565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610fae57600080fd5b50565b60008060008060608587031215610fc757600080fd5b8435610fd281610f8c565b935060208501359250604085013567ffffffffffffffff80821115610ff657600080fd5b818701915087601f83011261100a57600080fd5b81358181111561101957600080fd5b88602082850101111561102b57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561108d5761108d61103a565b60405290565b60006101208083850312156110a757600080fd5b6040516040810181811067ffffffffffffffff821117156110ca576110ca61103a565b60405283356110d881610f8c565b81526020603f850186136110eb57600080fd5b6110f3611069565b92850192808785111561110557600080fd5b8287015b858110156111205780358352918301918301611109565b509183019190915250949350505050565b60006020828403121561114357600080fd5b81356108bd81610f8c565b600061010080838503121561116257600080fd5b83601f84011261117157600080fd5b611179611069565b90830190808583111561118b57600080fd5b845b838110156111a557805183526020928301920161118d565b5095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156112ae578181015183820152602001611296565b83811115610b175750506000910152565b60008152600082516112d8816001850160208701611293565b9190910160010192915050565b6000602082840312156112f757600080fd5b815180151581146108bd57600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161139081600e850160208701611293565b91909101600e019392505050565b600082516113b0818460208701611293565b9190910192915050565b60208152600082518060208401526113d9816040850160208701611293565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212206ec8ffe9592912187417d18bec7de32180944a21c3e48048c4a3bad19700b40b64736f6c634300080a0033"; - -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/ERC20Upgradeable__factory.ts b/src/typechain/factories/ERC20Upgradeable__factory.ts index 2bd9a36..4d2debd 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"; + "0x608060405234801561001057600080fd5b50610b6a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6035545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b60606036805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606037805461020f90610aa1565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea264697066735822122013624cc33b29a7af87a8ed10b1a2ef66882ff38fce50e28e1bfba34b53ab06b264736f6c634300080a0033"; type ERC20UpgradeableConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20__factory.ts b/src/typechain/factories/ERC20__factory.ts index 5842ed9..1a59b69 100644 --- a/src/typechain/factories/ERC20__factory.ts +++ b/src/typechain/factories/ERC20__factory.ts @@ -295,7 +295,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162000dfc38038062000dfc8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b610b6a80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606004805461020f90610aa1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea26469706673582212200ac558ec96dd8de2cdeb74660e0e1080bf90c496240dace24818948a945cdf0964736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b5060405162000dfc38038062000dfc8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b610b6a80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606004805461020f90610aa1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea2646970667358221220aacc14b2075679ad15e541ed3162569e92773da064d610c08fdc6e21fee7d3a764736f6c634300080a0033"; type ERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC721BalanceTierFactory__factory.ts b/src/typechain/factories/ERC721BalanceTierFactory__factory.ts deleted file mode 100644 index ebe0b66..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 = - "0x608060405234801561001057600080fd5b5060016000908155604051610024906100aa565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a1600280546001600160a01b0319166001600160a01b03929092169190911790556100b7565b610d438061086b83390190565b6107a5806100c66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a4914610046578063ab43ea1f14610083578063fc91a89714610096575b600080fd5b6100596100543660046104d9565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100596100913660046105c9565b61028d565b6100cf6100a4366004610667565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610330565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102bc919061068b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e791906106df565b6020604051808303816000875af1158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a9190610752565b92915050565b60008061033f838501856105c9565b6002549091506000906103679073ffffffffffffffffffffffffffffffffffffffff166103f7565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103bc90859060040161068b565b600060405180830381600087803b1580156103d657600080fd5b505af11580156103ea573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104ec57600080fd5b823567ffffffffffffffff8082111561050457600080fd5b818501915085601f83011261051857600080fd5b81358181111561052757600080fd5b86602082850101111561053957600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561059e5761059e61054b565b60405290565b73ffffffffffffffffffffffffffffffffffffffff811681146105c657600080fd5b50565b60006101208083850312156105dd57600080fd5b6040516040810181811067ffffffffffffffff821117156106005761060061054b565b604052833561060e816105a4565b81526020603f8501861361062157600080fd5b61062961057a565b92850192808785111561063b57600080fd5b8287015b85811015610656578035835291830191830161063f565b509183019190915250949350505050565b60006020828403121561067957600080fd5b8135610684816105a4565b9392505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156106d5578251825291830191908301906001016106b8565b5050505092915050565b600060208083528351808285015260005b8181101561070c578581018301518582016040015282016106f0565b8181111561071e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561076457600080fd5b8151610684816105a456fea2646970667358221220209ec87fa7760f5db49683456a8ed70339b85afc804f2bec8876158245ded64664736f6c634300080a0033608060405234801561001057600080fd5b50610d23806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a61e331511610050578063a61e33151461009f578063bca6ce64146100b2578063e053ea31146100f757600080fd5b806370230b391461006c5780638a200fff1461008a575b600080fd5b610074610118565b60405161008191906108e8565b60405180910390f35b61009d61009836600461093f565b61015a565b005b61009d6100ad366004610a21565b6101c1565b6001546100d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610081565b61010a610105366004610abf565b6103be565b604051908152602001610081565b6101206108c9565b6000546101429073ffffffffffffffffffffffffffffffffffffffff16610474565b8060200190518101906101559190610adc565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000547501000000000000000000000000000000000000000000900460ff166102085760005474010000000000000000000000000000000000000000900460ff161561020c565b303b155b610298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b6000547501000000000000000000000000000000000000000000900460ff161580156102ff57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b61030c82602001516104a2565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156103ba57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b600061046e60006104696103d0610118565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa158015610440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104649190610b3d565b61063b565b610689565b92915050565b606061046e8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610729565b60005473ffffffffffffffffffffffffffffffffffffffff16156104c8576104c8610b56565b6000805b600881101561057657818382600881106104e8576104e8610b85565b60200201511015610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c554553000000000000000060448201526064016101b8565b82816008811061056757610567610b85565b602002015191506001016104cc565b505060006105a28260405160200161058e91906108e8565b604051602081830303815290604052610812565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b600881101561067f5783816008811061065a5761065a610b85565b602002015183101561066d57905061046e565b8061067781610bb4565b91505061063f565b5060089392505050565b60008160088111156106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101b8565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b8061074857505060408051602081019091526000815261080b565b8084111561076657505060408051602081019091526000815261080b565b838310156107b1576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016101b8565b83830384820360008282106107c657826107c8565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b60008061083d836040516020016108299190610c4f565b60405160208183030381529060405261089d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610897576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016108b3929190610c62565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156109115781518352602092830192909101906001016108f2565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461093c57600080fd5b50565b6000806000806060858703121561095557600080fd5b84356109608161091a565b935060208501359250604085013567ffffffffffffffff8082111561098457600080fd5b818701915087601f83011261099857600080fd5b8135818111156109a757600080fd5b8860208285010111156109b957600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610a1b57610a1b6109c8565b60405290565b6000610120808385031215610a3557600080fd5b6040516040810181811067ffffffffffffffff82111715610a5857610a586109c8565b6040528335610a668161091a565b81526020603f85018613610a7957600080fd5b610a816109f7565b928501928087851115610a9357600080fd5b8287015b85811015610aae5780358352918301918301610a97565b509183019190915250949350505050565b600060208284031215610ad157600080fd5b813561080b8161091a565b6000610100808385031215610af057600080fd5b83601f840112610aff57600080fd5b610b076109f7565b908301908085831115610b1957600080fd5b845b83811015610b33578051835260209283019201610b1b565b5095945050505050565b600060208284031215610b4f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610c0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610c355760208185018101518683015201610c1b565b81811115610c44576000828601525b509290920192915050565b60008152600061080b6001830184610c14565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610ce5600e830184610c14565b94935050505056fea264697066735822122004bdfaa709e0710cf4d55d305bc8a4895c540e85df7d66bb36040a9389f38d7564736f6c634300080a0033"; - -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 514cf2f..0000000 --- a/src/typechain/factories/ERC721BalanceTier__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 { - 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: "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 = - "0x608060405234801561001057600080fd5b50610d23806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a61e331511610050578063a61e33151461009f578063bca6ce64146100b2578063e053ea31146100f757600080fd5b806370230b391461006c5780638a200fff1461008a575b600080fd5b610074610118565b60405161008191906108e8565b60405180910390f35b61009d61009836600461093f565b61015a565b005b61009d6100ad366004610a21565b6101c1565b6001546100d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610081565b61010a610105366004610abf565b6103be565b604051908152602001610081565b6101206108c9565b6000546101429073ffffffffffffffffffffffffffffffffffffffff16610474565b8060200190518101906101559190610adc565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000547501000000000000000000000000000000000000000000900460ff166102085760005474010000000000000000000000000000000000000000900460ff161561020c565b303b155b610298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b6000547501000000000000000000000000000000000000000000900460ff161580156102ff57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b61030c82602001516104a2565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156103ba57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b600061046e60006104696103d0610118565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa158015610440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104649190610b3d565b61063b565b610689565b92915050565b606061046e8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610729565b60005473ffffffffffffffffffffffffffffffffffffffff16156104c8576104c8610b56565b6000805b600881101561057657818382600881106104e8576104e8610b85565b60200201511015610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c554553000000000000000060448201526064016101b8565b82816008811061056757610567610b85565b602002015191506001016104cc565b505060006105a28260405160200161058e91906108e8565b604051602081830303815290604052610812565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b600881101561067f5783816008811061065a5761065a610b85565b602002015183101561066d57905061046e565b8061067781610bb4565b91505061063f565b5060089392505050565b60008160088111156106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101b8565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b8061074857505060408051602081019091526000815261080b565b8084111561076657505060408051602081019091526000815261080b565b838310156107b1576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016101b8565b83830384820360008282106107c657826107c8565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b60008061083d836040516020016108299190610c4f565b60405160208183030381529060405261089d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610897576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016108b3929190610c62565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156109115781518352602092830192909101906001016108f2565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461093c57600080fd5b50565b6000806000806060858703121561095557600080fd5b84356109608161091a565b935060208501359250604085013567ffffffffffffffff8082111561098457600080fd5b818701915087601f83011261099857600080fd5b8135818111156109a757600080fd5b8860208285010111156109b957600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610a1b57610a1b6109c8565b60405290565b6000610120808385031215610a3557600080fd5b6040516040810181811067ffffffffffffffff82111715610a5857610a586109c8565b6040528335610a668161091a565b81526020603f85018613610a7957600080fd5b610a816109f7565b928501928087851115610a9357600080fd5b8287015b85811015610aae5780358352918301918301610a97565b509183019190915250949350505050565b600060208284031215610ad157600080fd5b813561080b8161091a565b6000610100808385031215610af057600080fd5b83601f840112610aff57600080fd5b610b076109f7565b908301908085831115610b1957600080fd5b845b83811015610b33578051835260209283019201610b1b565b5095945050505050565b600060208284031215610b4f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610c0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610c355760208185018101518683015201610c1b565b81811115610c44576000828601525b509290920192915050565b60008152600061080b6001830184610c14565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610ce5600e830184610c14565b94935050505056fea264697066735822122004bdfaa709e0710cf4d55d305bc8a4895c540e85df7d66bb36040a9389f38d7564736f6c634300080a0033"; - -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/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 deleted file mode 100644 index 0f1a35d..0000000 --- a/src/typechain/factories/ERC721Upgradeable__factory.ts +++ /dev/null @@ -1,391 +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: 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 = - "0x608060405234801561001057600080fd5b5061192c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060658054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b606060668054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1f57508373ffffffffffffffffffffffffffffffffffffffff16610c07846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b80610c5c575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290610e459084906117b9565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea2646970667358221220f0faadabc95d4785025da8974186e87deb20ee0fc1508bdc115f6ac9b15b5dfd64736f6c634300080a0033"; - -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 bc1b8c1..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 = - "0x60806040523480156200001157600080fd5b5060405162001bbe38038062001bbe8339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61192c80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b606060018054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1f57508373ffffffffffffffffffffffffffffffffffffffff16610c07846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b80610c5c575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610e459084906117b9565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea264697066735822122065cdd12ee76692514c0985b653e17625a305f48aa0ca7aba2916a06b5b3ddb5964736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b5060405162001a2438038062001a248339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61179280620002926000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004611255565b610252565b60405190151581526020015b60405180910390f35b610114610337565b60405161010391906112e8565b61013461012f3660046112fb565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c61016736600461133d565b6103fd565b005b61016c61017c366004611367565b61058f565b61016c61018f366004611367565b610630565b6101346101a23660046112fb565b61064b565b6101ba6101b53660046113a3565b6106d7565b604051908152602001610103565b6101146107a5565b61016c6101de3660046113be565b6107b4565b61016c6101f1366004611429565b6107c3565b6101146102043660046112fb565b61086b565b6100f7610217366004611523565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461034690611556565b80601f016020809104026020016040519081016040528092919081815260200182805461037290611556565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60006103d4826108df565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104088261064b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806104f457506104f48133610217565b610580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016104c2565b61058a838361096d565b505050565b6105993382610a0d565b610625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104c2565b61058a838383610acd565b61058a838383604051806020016040528060008152506107c3565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104c2565b600073ffffffffffffffffffffffffffffffffffffffff821661077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016104c2565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461034690611556565b6107bf338383610d34565b5050565b6107cd3383610a0d565b610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104c2565b61086584848484610e62565b50505050565b6060610876826108df565b600061088d60408051602081019091526000815290565b905060008151116108ad57604051806020016040528060008152506108d8565b806108b784610f05565b6040516020016108c89291906115aa565b6040516020818303038152906040525b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1661096a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104c2565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906109c78261064b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610a198361064b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610a87575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610ac557508373ffffffffffffffffffffffffffffffffffffffff16610aad846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610aed8261064b565b73ffffffffffffffffffffffffffffffffffffffff1614610b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104c2565b73ffffffffffffffffffffffffffffffffffffffff8216610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104c2565b610c3d60008261096d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610c73908490611608565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610cae90849061161f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104c2565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610e6d848484610acd565b610e7984848484611037565b610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104c2565b606081610f4557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610f6f5780610f5981611637565b9150610f689050600a8361169f565b9150610f49565b60008167ffffffffffffffff811115610f8a57610f8a6113fa565b6040519080825280601f01601f191660200182016040528015610fb4576020820181803683370190505b5090505b8415610ac557610fc9600183611608565b9150610fd6600a866116b3565b610fe190603061161f565b60f81b818381518110610ff657610ff66116c7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611030600a8661169f565b9450610fb8565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561121c576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906110ae9033908990889088906004016116f6565b6020604051808303816000875af1925050508015611107575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526111049181019061173f565b60015b6111d1573d808015611135576040519150601f19603f3d011682016040523d82523d6000602084013e61113a565b606091505b5080516111c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104c2565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610ac5565b506001949350505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461096a57600080fd5b60006020828403121561126757600080fd5b81356108d881611227565b60005b8381101561128d578181015183820152602001611275565b838111156108655750506000910152565b600081518084526112b6816020860160208601611272565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006108d8602083018461129e565b60006020828403121561130d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461133857600080fd5b919050565b6000806040838503121561135057600080fd5b61135983611314565b946020939093013593505050565b60008060006060848603121561137c57600080fd5b61138584611314565b925061139360208501611314565b9150604084013590509250925092565b6000602082840312156113b557600080fd5b6108d882611314565b600080604083850312156113d157600080fd5b6113da83611314565b9150602083013580151581146113ef57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561143f57600080fd5b61144885611314565b935061145660208601611314565b925060408501359150606085013567ffffffffffffffff8082111561147a57600080fd5b818701915087601f83011261148e57600080fd5b8135818111156114a0576114a06113fa565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156114e6576114e66113fa565b816040528281528a60208487010111156114ff57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561153657600080fd5b61153f83611314565b915061154d60208401611314565b90509250929050565b600181811c9082168061156a57607f821691505b602082108114156115a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600083516115bc818460208801611272565b8351908301906115d0818360208801611272565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561161a5761161a6115d9565b500390565b60008219821115611632576116326115d9565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611669576116696115d9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826116ae576116ae611670565b500490565b6000826116c2576116c2611670565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611735608083018461129e565b9695505050505050565b60006020828403121561175157600080fd5b81516108d88161122756fea2646970667358221220219ba30929921c24af2d31d6df67e3efe203c61322e06a76d15ce90daac2936764736f6c634300080a0033"; type ERC721ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/EmissionsERC20Factory__factory.ts b/src/typechain/factories/EmissionsERC20Factory__factory.ts index 6287162..4d6dd26 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"; + "0x60a060405234801561001057600080fd5b50604051615c33380380615c3383398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b614cd780610f5c83390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610e376101256000396000818160a6015261030d0152610e376000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632c6afc68146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f3660046107c8565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c3660046108dd565b610141565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d636600461091a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600061013b826040516020016101279190610a7d565b604051602081830303815290604052610141565b92915050565b6000600260005414156101b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101c5836102ed565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c44000000000000000000000000000000000060448201526064016101ac565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b600080828060200190518101906103049190610cfb565b905060006103317f00000000000000000000000000000000000000000000000000000000000000006103c0565b6040517f9a8d2ac800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690639a8d2ac890610386908590600401610a7d565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064016101ac565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156104f4576104f46104a2565b60405290565b6040516060810167ffffffffffffffff811182821017156104f4576104f46104a2565b6040516080810167ffffffffffffffff811182821017156104f4576104f46104a2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610587576105876104a2565b604052919050565b801515811461059d57600080fd5b50565b600067ffffffffffffffff8211156105ba576105ba6104a2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126105f757600080fd5b813561060a610605826105a0565b610540565b81815284602083860101111561061f57600080fd5b816020850160208301376000918101602001919091529392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059d57600080fd5b600067ffffffffffffffff821115610678576106786104a2565b5060051b60200190565b600082601f83011261069357600080fd5b813560206106a36106058361065e565b82815260059290921b840181019181810190868411156106c257600080fd5b8286015b848110156106dd57803583529183019183016106c6565b509695505050505050565b6000604082840312156106fa57600080fd5b6107026104d1565b9050813567ffffffffffffffff8082111561071c57600080fd5b818401915084601f83011261073057600080fd5b813560206107406106058361065e565b82815260059290921b8401810191818101908884111561075f57600080fd5b8286015b848110156107975780358681111561077b5760008081fd5b6107898b86838b01016105e6565b845250918301918301610763565b50865250858101359350828411156107ae57600080fd5b6107ba87858801610682565b818601525050505092915050565b6000602082840312156107da57600080fd5b813567ffffffffffffffff808211156107f257600080fd5b908301906060828603121561080657600080fd5b61080e6104fa565b82356108198161058f565b815260208301358281111561082d57600080fd5b83016080818803121561083f57600080fd5b61084761051d565b81358481111561085657600080fd5b610862898285016105e6565b82525060208201358481111561087757600080fd5b610883898285016105e6565b60208301525060408201356108978161063c565b806040830152506060820135606082015280602084015250506040830135828111156108c257600080fd5b6108ce878286016106e8565b60408301525095945050505050565b6000602082840312156108ef57600080fd5b813567ffffffffffffffff81111561090657600080fd5b610912848285016105e6565b949350505050565b60006020828403121561092c57600080fd5b81356109378161063c565b9392505050565b60005b83811015610959578181015183820152602001610941565b83811115610968576000848401525b50505050565b6000815180845261098681602086016020860161093e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006040830182516040855281815180845260608701915060608160051b88010193506020808401935060005b82811015610a31577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018452610a1f86865161096e565b955093810193928101926001016109e5565b508681015188860389830152805180875290820195600095508201935091505b81841015610a715784518352938401936001939093019291820191610a51565b50909695505050505050565b6020815281511515602082015260006020830151606060408401528051608080850152610aae61010085018261096e565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610ae9828261096e565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848203016060850152610b5181836109b8565b95945050505050565b6000610b68610605846105a0565b9050828152838383011115610b7c57600080fd5b61093783602083018461093e565b600082601f830112610b9b57600080fd5b61093783835160208501610b5a565b600082601f830112610bbb57600080fd5b81516020610bcb6106058361065e565b82815260059290921b84018101918181019086841115610bea57600080fd5b8286015b848110156106dd5780518352918301918301610bee565b60006040808385031215610c1857600080fd5b610c206104d1565b9150825167ffffffffffffffff80821115610c3a57600080fd5b818501915085601f830112610c4e57600080fd5b81516020610c5e6106058361065e565b82815260059290921b84018101918181019089841115610c7d57600080fd5b8286015b84811015610cc957805186811115610c995760008081fd5b8701603f81018c13610cab5760008081fd5b610cbb8c868301518b8401610b5a565b845250918301918301610c81565b5087525086810151945082851115610ce057600080fd5b610cec88868901610baa565b81870152505050505092915050565b600060208284031215610d0d57600080fd5b815167ffffffffffffffff80821115610d2557600080fd5b9083019060608286031215610d3957600080fd5b610d416104fa565b8251610d4c8161058f565b8152602083015182811115610d6057600080fd5b830160808188031215610d7257600080fd5b610d7a61051d565b815184811115610d8957600080fd5b610d9589828501610b8a565b825250602082015184811115610daa57600080fd5b610db689828501610b8a565b6020830152506040820151610dca8161063c565b80604083015250606082015160608201528060208401525050604083015182811115610df557600080fd5b6108ce87828601610c0556fea26469706673582212208d774919d4db7fa0e5f85b6b9187757de21887aea659b1496b823750492b900a64736f6c634300080a003360c06040523480156200001157600080fd5b5060405162004cd738038062004cd7833981016040819052620000349162000118565b306080526001600160a01b03811660a0526200004f62000056565b506200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051614b6762000170600039600061136d0152600061139a0152614b676000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610331578063ea34554014610369578063ea7cb3701461037c57600080fd5b8063caa0eb3b146102d8578063dd62ed3e146102eb57600080fd5b8063a457c2d7116100b2578063a457c2d71461029f578063a9059cbb146102b2578063bb1757cf146102c557600080fd5b806395d89b41146102825780639a8d2ac81461028a57600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461021557806388d686041461024b57600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f36600461386c565b610384565b60405190151581526020015b60405180910390f35b6101a161041d565b6040516101909190613924565b6101846101bc366004613959565b6104af565b6035545b604051908152602001610190565b6101846101e1366004613985565b6104c7565b60405160128152602001610190565b610184610203366004613959565b6104ed565b6065546101849060ff1681565b6101c56102233660046139c6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610259366004613b19565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a1610539565b61029d610298366004613b69565b610548565b005b6101846102ad366004613959565b610911565b6101846102c0366004613959565b6109ed565b61029d6102d3366004613ba4565b6109fb565b6101c56102e6366004613c29565b610b36565b6101c56102f9366004613cb5565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c56103773660046139c6565b610b6f565b6101a1610c17565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061041757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461042c90613cee565b80601f016020809104026020016040519081016040528092919081815260200182805461045890613cee565b80156104a55780601f1061047a576101008083540402835291602001916104a5565b820191906000526020600020905b81548152906001019060200180831161048857829003601f168201915b5050505050905090565b6000336104bd818585610c2f565b5060019392505050565b6000336104d5858285610de2565b6104e0858585610eb9565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104bd9082908690610534908790613d6b565b610c2f565b60606037805461042c90613cee565b600054610100900460ff16158080156105685750600054600160ff909116105b806105825750303b158015610582575060005460ff166001145b610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561067157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107156106816020840184613d83565b61068b9080613dc1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106cd925050506020850185613d83565b6106db906020810190613dc1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061116c92505050565b61074c6107256020840184613d83565b6107369060608101906040016139c6565b6107436020850185613d83565b6060013561120d565b6107856040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6107df6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816107a6579050509050818160008151811061080857610808613e2d565b60209081029190910101526108326108236040860186613e5c565b61082c90613ed6565b8261132d565b61083f6020850185614006565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e166906108a09033908790614260565b60405180910390a15050801561090d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161060a565b6109e28286868403610c2f565b506001949350505050565b6000336104bd818585610eb9565b60655460ff16610a84573373ffffffffffffffffffffffffffffffffffffffff841614610a84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d0000000000000000000000000000000000604482015260640161060a565b6000610a8f84610b6f565b9050610a9b848261120d565b610ac97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261147b565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610b289033908790879087906143a7565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610b669085611521565b95945050505050565b600080610b7a6115d6565b60408051600180825281830190925291925060009190602080830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1681600081518110610bca57610bca613e2d565b602002602001018181525050610be281836000611639565b5060208201518251610bf6906001906143eb565b81518110610c0657610c06613e2d565b602002602001015192505050919050565b6060610c2a610c258261190a565b611b2b565b905090565b73ffffffffffffffffffffffffffffffffffffffff8316610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8216610d74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610eb35781811015610ea6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060a565b610eb38484848403610c2f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8216610fff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906110f9908490613d6b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161115f91815260200190565b60405180910390a3610eb3565b600054610100900460ff16611203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161060a565b61090d8282611b6f565b73ffffffffffffffffffffffffffffffffffffffff821661128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060a565b806035600082825461129c9190613d6b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040812080548392906112d6908490613d6b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a1906113c6907f0000000000000000000000000000000000000000000000000000000000000000908790879060040161448f565b6000604051808303816000875af11580156113e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261142b9190810190614577565b905061143681611c2d565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008260088111156114e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b6000855b858110156115155763ffffffff6020820290811b199890981685891b179791506001016114ed565b50959695505050505050565b600081600881111561158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b8261159d57600091506115cf565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b6116086040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600054610c2a906116349062010000900473ffffffffffffffffffffffffffffffffffffffff16611cb8565b611ce6565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156118f2576003890198508886015180601f1a975061ffff8160081c16985050600688101561186a57876116bc5786602002840151825260208201915061187d565b60018814156116d95760208702830151825260208201915061187d565b6002881415611763578c51871061174c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161060a565b866020026020018d0151825260208201915061187d565b60038814156117ab5760006117996040805180820182526000808252602091820181905282518084019093528083529082015290565b5188015483525060209091019061187d565b60048814156117c7576117c08d8d848a611e52565b915061187d565b6060876117f5578c6040516020016117df91906145e5565b6040516020818303038152906040529050611854565b600188141561180e576118078d611fbf565b9050611854565b600288141561182a576020808e01516040516117df920161467c565b6003881415611854578c516040805160208101929092520160405160208183030381529060405290505b80511561186457611864816120fc565b5061187d565b87611879888463ffffffff8416565b9250505b60208c0151518c5111156118ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161060a565b611677565b602083830304909b529b9a5050505050505050505050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261218e60e0840181905261228261010085015261230e61012085015261242f6101408501526101608401526124d86101808401526125e06101a08401526126b46101c08401526128b16101e08401526128bc6102008401526128c76102208401526128d26102408401526128dd6102608401526129116102808401526129776102a08401526129dd6102c0840152612a116102e0840152612a45610300840152612a7a610320840152612ad5610340840152612b2b610360840152612b54610380840152612bab6103a0840152612bd86103c0840152612c2f6103e0840152612c9a610400840152612cf7610420840152612d35610440840152612d6e610460840152612da2610480840152612dd46104a0840152612e066104c0840152612e386104e0840152612e6c610500840152612ebe610520840152612ef7610540840152612fa96105608401526130d66105808401526131326105a08401526131ec6105c0840152835190850201909252919082815b83811015611b2257858181518110611ae157611ae1613e2d565b6020026020010151856028600601830181518110611b0157611b01613e2d565b67ffffffffffffffff90921660209283029190910190910152600101611ac7565b50505050919050565b60606020820182516020028101600284015b81831015611b5a5782518151178152602090920191600201611b3d565b5050825160020283525090919050565b505050565b600054610100900460ff16611c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161060a565b8151611c199060369060208501906137d3565b508051611b6a9060379060208401906137d3565b600080611c5883604051602001611c4491906146e1565b604051602081830303815290604052613268565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611cb2576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606104178260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613294565b611d186040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b611d4a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115611d7e57611d7e6139e3565b604051908082528060200260200182016040528015611da7578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611dde57611dde6139e3565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611e41578160208202602001840152815160200182019150600181019050611e1a565b505060408501525091949350505050565b600060078216600383811c16828082611e9157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611edc565b8260011415611eb557506fffffffffffffffffffffffffffffffff90506080611edc565b8260021415611ed1575067ffffffffffffffff90506040611edc565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611eff57611eff6139e3565b604051908082528060200260200182016040528015611f28578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f4f578151815260209182019101611f37565b505060608b015160808c015160209081029091010160005b610100811015611fad5760208502830182845b82811015611f96578051841c8a16825260209182019101611f7a565b505050611fa48e8e8b611639565b9b508501611f67565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161200b919061467c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526120479291602001614707565b604051602081830303815290604052905060005b8560400151518110156120f357818660400151828151811061207f5761207f613e2d565b60200260200101515160001b876040015183815181106120a1576120a1613e2d565b60200260200101516040516020016120bb9392919061472d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161205b565b50949350505050565b61218b816040516024016121109190613924565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261337c565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122759190614764565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190614764565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156123fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124219190614764565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612234565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bd919061477d565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016123e0565b60008060008467ffffffffffffffff8111156126d2576126d26139e3565b6040519080825280602002602001820160405280156126fb578160200160208202803683370190505b50905060008567ffffffffffffffff811115612719576127196139e3565b604051908082528060200260200182016040528015612742578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561279757825181526020928301920161277f565b5050602088028101602084015b818310156127bc5782518152602092830192016127a4565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612816908790879060040161479a565b600060405180830381865afa158015612833573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261287991908101906147fd565b9050846020820160208a0281015b808210156128a2578151835260209283019290910190612887565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612302828761339d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361227582612971858a61339d565b90613417565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612275826129d7858a61339d565b90613436565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612302828761344b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123028287613496565b6000602083028203805b83811015612a6f5780518015612a66578252612a6f565b50602001612a4f565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612a6f578051612b4c5760008252612a6f565b602001612b35565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612c6d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612c8c57508051602090910190612c8583826134f4565b9250612c3f565b505081526020019392505050565b6020828102820380516000928201835b8582108015612cd857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612c8c57508051602090910190612cf08382613530565b9250612caa565b6020828102820380516000928201835b8582108015612d165750826000105b15612c8c57508051602090910190612d2e838261355f565b9250612d07565b600060208302820380516000602083015b85811015612c8c5780518301915082821015612d6157600080fd5b9091508190602001612d46565b600060208302820380516000602083015b85811015612c8c578051915081612d9557600080fd5b9181900491602001612d7f565b6020828102820380516000928201835b85821015612c8c57508051602090910190612dcd81846149a3565b9250612db2565b6020828102820380516000928201835b85821015612c8c5750805182811115612dfb578092505b602082019150612de4565b6020828102820380516000928201835b85821015612c8c5750805182811015612e2d578092505b602082019150612e16565b600060208302820380516000602083015b85811015612c8c578051915081612e5f57600080fd5b9181900691602001612e49565b60006020830282038051600080602084015b86811015612eaf578315612ea7578051925082840291508284830414612ea357600080fd5b8193505b602001612e7e565b50505081526020019392505050565b600060208302820380516000602083015b85811015612c8c5780518303915082821115612eea57600080fd5b9091508190602001612ecf565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906123e090869086906004016149af565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90613082908790879087906004016149de565b602060405180830381865afa15801561309f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c39190614764565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836122758383613575565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115613160576131606139e3565b604051908082528060200260200182016040528015613189578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156131c5578151816020018601526020820191506020810190506131a3565b505051905060006131d8838389896135d4565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856132598585858561147b565b90955250949695505050505050565b606081518260405160200161327e929190614a13565b6040516020818303038152906040529050919050565b6060833b806132b35750506040805160208101909152600081526104e6565b808411156132d15750506040805160208101909152600081526104e6565b8383101561331c576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161060a565b83830384820360008282106133315782613333565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008082601214156133b25783915050610417565b82601211156133de575060128290036133cc81600a6149a3565b6133d69085614aaa565b915050610417565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161340d81600a6149a3565b6133d69085614ae7565b60008161342c670de0b6b3a764000085614aaa565b6104e69190614ae7565b6000670de0b6b3a764000061342c8385614aaa565b600081810b61345b575081610417565b60008260000b13156134835761347282600a614b22565b61347c9084614aaa565b9050610417565b60ff60008390031661340d81600a6149a3565b60008060128314156134ab5783915050610417565b82601211156134c55750601282900361340d81600a6149a3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133cc81600a6149a3565b60008282018381106135065780613528565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261353f57506000610417565b82820282848281613552576135526146b2565b0414156135065780613528565b600081831161356f5760006104e6565b50900390565b60008060015b600881116135cc57600061358f8683611521565b9050600061359d8684611521565b905060006135ab838361355f565b90506135bb856001860383613724565b9450506001909201915061357b9050565b509392505050565b835160009081908190819060015b600881116137165760009250828761361b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61361f565b5060005b60005b838110156136d45761364d8c828151811061363f5761363f613e2d565b602002602001015184611521565b95508a861161369f578861366c5761366586836137ad565b9150613696565b600189141561367f5761366586836137c3565b60028914801561368d575084155b15613696578591505b600194506136cc565b896136cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506136d4565b600101613622565b50836136fd57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61370b866001840383613724565b9550506001016135e2565b509298975050505050505050565b6000826008811115613792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b505063ffffffff602090920291821b199290921691901b1790565b60008183106137bc57816104e6565b5090919050565b6000818310156137bc57816104e6565b8280546137df90613cee565b90600052602060002090601f0160209004810192826138015760008555613847565b82601f1061381a57805160ff1916838001178555613847565b82800160010185558215613847579182015b8281111561384757825182559160200191906001019061382c565b50613853929150613857565b5090565b5b808211156138535760008155600101613858565b60006020828403121561387e57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104e657600080fd5b60005b838110156138c95781810151838201526020016138b1565b83811115610eb35750506000910152565b600081518084526138f28160208601602086016138ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104e660208301846138da565b73ffffffffffffffffffffffffffffffffffffffff8116811461218b57600080fd5b6000806040838503121561396c57600080fd5b823561397781613937565b946020939093013593505050565b60008060006060848603121561399a57600080fd5b83356139a581613937565b925060208401356139b581613937565b929592945050506040919091013590565b6000602082840312156139d857600080fd5b81356104e681613937565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613a3557613a356139e3565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a8257613a826139e3565b604052919050565b600067ffffffffffffffff821115613aa457613aa46139e3565b5060051b60200190565b600082601f830112613abf57600080fd5b81356020613ad4613acf83613a8a565b613a3b565b82815260059290921b84018101918181019086841115613af357600080fd5b8286015b84811015613b0e5780358352918301918301613af7565b509695505050505050565b60008060408385031215613b2c57600080fd5b8235613b3781613937565b9150602083013567ffffffffffffffff811115613b5357600080fd5b613b5f85828601613aae565b9150509250929050565b600060208284031215613b7b57600080fd5b813567ffffffffffffffff811115613b9257600080fd5b8201606081850312156104e657600080fd5b600080600060408486031215613bb957600080fd5b8335613bc481613937565b9250602084013567ffffffffffffffff80821115613be157600080fd5b818601915086601f830112613bf557600080fd5b813581811115613c0457600080fd5b876020828501011115613c1657600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613c3f57600080fd5b8435613c4a81613937565b935060208501359250604085013567ffffffffffffffff80821115613c6e57600080fd5b818701915087601f830112613c8257600080fd5b813581811115613c9157600080fd5b8860208260051b8501011115613ca657600080fd5b95989497505060200194505050565b60008060408385031215613cc857600080fd5b8235613cd381613937565b91506020830135613ce381613937565b809150509250929050565b600181811c90821680613d0257607f821691505b60208210811415611cb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613d7e57613d7e613d3c565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613db757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613df657600080fd5b83018035915067ffffffffffffffff821115613e1157600080fd5b602001915036819003821315613e2657600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613db757600080fd5b600067ffffffffffffffff821115613eaa57613eaa6139e3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006040808336031215613ee957600080fd5b613ef1613a12565b833567ffffffffffffffff80821115613f0957600080fd5b9085019036601f830112613f1c57600080fd5b81356020613f2c613acf83613a8a565b82815260059290921b84018101918181019036841115613f4b57600080fd5b8286015b84811015613fbf57803586811115613f675760008081fd5b870136603f820112613f795760008081fd5b84810135613f89613acf82613e90565b818152368c838501011115613f9e5760008081fd5b818c8401888301376000918101870191909152845250918301918301613f4f565b5086525087810135955082861115613fd657600080fd5b613fe236878a01613aae565b90850152509195945050505050565b8035801515811461400157600080fd5b919050565b60006020828403121561401857600080fd5b6104e682613ff1565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261405657600080fd5b830160208101925035905067ffffffffffffffff81111561407657600080fd5b803603831315613e2657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261410257600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261414057600080fd5b830160208101925035905067ffffffffffffffff81111561416057600080fd5b8060051b3603831315613e2657600080fd5b600060408301614182838461410b565b604086528281845260608701905060608260051b88010193508260005b838110156141fa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526141d88286614021565b6141e3888284614085565b97505050602092830192919091019060010161419f565b505050505061420c602084018461410b565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561424457600080fd5b60051b8082602085013760009201602001918252509392505050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015261428c84613ff1565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818536030181126142c857600080fd5b60608481015284016142da8180614021565b608060a08701526142f061012087018284614085565b9150506143006020830183614021565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614335838284614085565b92505050604082013561434781613937565b831660e0860152606082013561010086015261436660408701876140ce565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc085820301608086015261439c8184614172565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526143e1606083018486614085565b9695505050505050565b6000828210156143fd576143fd613d3c565b500390565b6000815180845260208085019450848260051b860182860160005b858110156144475783830389526144358383516138da565b9885019892509084019060010161441d565b5090979650505050505050565b600081518084526020808501945080840160005b8381101561448457815187529582019590820190600101614468565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a08651604080858801526144ca83880183614402565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a01526145058483614454565b898103848b01528a51808252878c019550908701925060005b818110156145655785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c09093019260010161451e565b50919c9b505050505050505050505050565b60006020828403121561458957600080fd5b815167ffffffffffffffff8111156145a057600080fd5b8201601f810184136145b157600080fd5b80516145bf613acf82613e90565b8181528560208385010111156145d457600080fd5b610b668260208301602086016138ae565b60208152815160208201526000602083015160a0604084015261460b60c0840182614454565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526146478383614402565b92506060860151915080858403016080860152506146658282614454565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156146a65781518552938201939082019060010161468a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008152600082516146fa8160018501602087016138ae565b9190910160010192915050565b8281526000825161471f8160208501602087016138ae565b919091016020019392505050565b6000845161473f8184602089016138ae565b820184815283516147578160208085019088016138ae565b0160200195945050505050565b60006020828403121561477657600080fd5b5051919050565b60006020828403121561478f57600080fd5b81516104e681613937565b604080825283519082018190526000906020906060840190828701845b828110156147e957815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016147b7565b505050838103828501526143e18186614454565b6000602080838503121561481057600080fd5b825167ffffffffffffffff81111561482757600080fd5b8301601f8101851361483857600080fd5b8051614846613acf82613a8a565b81815260059190911b8201830190838101908783111561486557600080fd5b928401925b8284101561439c5783518252928401929084019061486a565b600181815b808511156148dc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c2576148c2613d3c565b808516156148cf57918102915b93841c9390800290614888565b509250929050565b6000826148f357506001610417565b8161490057506000610417565b816001811461491657600281146149205761493c565b6001915050610417565b60ff84111561493157614931613d3c565b50506001821b610417565b5060208310610133831016604e8410600b841016171561495f575081810a610417565b6149698383614883565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561499b5761499b613d3c565b029392505050565b60006104e683836148e4565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006135286040830184614454565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610b666060830184614454565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251614a9c81600e8501602087016138ae565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ae257614ae2613d3c565b500290565b600082614b1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006104e660ff8416836148e456fea2646970667358221220ffd932993ed7e6c37165482a804f7fbf2a22c6683657224f4e2020666d237e8164736f6c634300080a0033"; 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..337ce2d 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", }, @@ -99,66 +105,65 @@ const _abi = [ name: "sender", type: "address", }, - { - indexed: false, - internalType: "bool", - name: "allowDelegatedClaims", - type: "bool", - }, - ], - name: "Initialize", - 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: "bool", + name: "allowDelegatedClaims", + type: "bool", }, { - internalType: "uint256[]", - name: "constants", - 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: "uint256[]", - name: "arguments", - type: "uint256[]", + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "vmStateConfig", + type: "tuple", }, ], indexed: false, - internalType: "struct State", - name: "state", + internalType: "struct EmissionsERC20Config", + name: "config", type: "tuple", }, ], - name: "Snapshot", + name: "Initialize", type: "event", }, { @@ -166,36 +171,12 @@ const _abi = [ 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", + internalType: "uint8", + name: "version", + type: "uint8", }, ], - name: "TierChange", + name: "Initialized", type: "event", }, { @@ -449,16 +430,6 @@ const _abi = [ name: "constants", type: "uint256[]", }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, ], internalType: "struct StateConfig", name: "vmStateConfig", @@ -488,6 +459,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -495,6 +479,11 @@ const _abi = [ name: "account_", type: "address", }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, ], name: "report", outputs: [ @@ -511,25 +500,75 @@ const _abi = [ inputs: [ { internalType: "address", - name: "", + 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: [], + name: "storageOpcodesRange", + outputs: [ { - internalType: "bytes", + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", name: "", - type: "bytes", + type: "tuple", }, ], - name: "setTier", - outputs: [], 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", @@ -612,7 +651,7 @@ const _abi = [ ]; const _bytecode = - "0x60a06040523480156200001157600080fd5b506002808060066007600b6200002982600462000087565b62000035919062000087565b62000041919062000087565b6200004d919062000087565b62000059919062000087565b62000065919062000087565b62000071919062000087565b6200007e90600562000087565b608052620000ae565b60008219821115620000a957634e487b7160e01b600052601160045260246000fd5b500190565b6080516149db620000d16000396000818161196c01526119a701526149db6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063814e3a8e116100b2578063a9059cbb11610081578063dd62ed3e11610066578063dd62ed3e1461026c578063e053ea31146102b2578063ea345540146102e857600080fd5b8063a9059cbb14610246578063bb1757cf1461025957600080fd5b8063814e3a8e146102035780638a200fff1461021857806395d89b411461022b578063a457c2d71461023357600080fd5b8063313ce567116100ee578063313ce56714610186578063395093511461019557806367676b11146101a857806370a08231146101cd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b6101286102fb565b6040516101359190613b67565b60405180910390f35b61015161014c366004613b9c565b61038d565b6040519015158152602001610135565b6035545b604051908152602001610135565b610151610181366004613bc8565b6103a7565b60405160128152602001610135565b6101516101a3366004613b9c565b6103cd565b6065546101519074010000000000000000000000000000000000000000900460ff1681565b6101656101db366004613c09565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b610216610211366004613f4a565b610419565b005b6102166102263660046140ad565b61061c565b61012861067e565b610151610241366004613b9c565b61068d565b610151610254366004613b9c565b610769565b610216610267366004614109565b610777565b61016561027a36600461415e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101656102c0366004613c09565b73ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101656102f6366004613c09565b61091d565b60606036805461030a90614197565b80601f016020809104026020016040519081016040528092919081815260200182805461033690614197565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b60003361039b8185856109b6565b60019150505b92915050565b6000336103b5858285610b69565b6103c0858585610c40565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061039b9082908690610414908790614214565b6109b6565b600054610100900460ff166104345760005460ff1615610438565b303b155b6104c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600054610100900460ff1615801561050857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b602080830151805191015161051d9190610ef3565b610537826020015160400151836020015160600151610f94565b61054c61054783604001516110b4565b611210565b60658054845173ffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffffffffff00000000000000000000000000000000000000000090911617740100000000000000000000000000000000000000009215159283021790556040805133815260208101929092527f274e8c1392a7530676d21ea0d455c78fd0b51f79881c266f3cf836806d261a35910160405180910390a1801561061857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b60606037805461030a90614197565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104c0565b61075e82868684036109b6565b506001949350505050565b60003361039b818585610c40565b60655474010000000000000000000000000000000000000000900460ff16610818573373ffffffffffffffffffffffffffffffffffffffff841614610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d000000000000000000000000000000000060448201526064016104c0565b60006108238461091d565b905061082f8482610f94565b61085d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084361127e565b73ffffffffffffffffffffffffffffffffffffffff85166000818152606660209081526040808320949094558351338152908101929092528183018190526008606083015260a06080830181905282015290517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c89181900360c00190a17fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f433385858560405161090f949392919061422c565b60405180910390a150505050565b60655460009081906109449073ffffffffffffffffffffffffffffffffffffffff16611324565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201529192506109839101604051602081830303815290604052826000611372565b60208101518151610996906001906142a4565b815181106109a6576109a66142bb565b6020026020010151915050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff8216610afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c3a5781811015610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104c0565b610c3a84848484036109b6565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ce3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff8216610d86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610e3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610e80908490614214565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ee691815260200190565b60405180910390a3610c3a565b600054610100900460ff16610f8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104c0565b61061882826115fb565b73ffffffffffffffffffffffffffffffffffffffff8216611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104c0565b80603560008282546110239190614214565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061105d908490614214565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6110e66040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b81515161114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f534f5552434553000000000000000000000000000000000000000000000060448201526064016104c0565b6040518060a0016040528060008152602001836040015167ffffffffffffffff81111561117e5761117e613c26565b6040519080825280602002602001820160405280156111a7578160200160208202803683370190505b5081526020018360000151815260200183602001518152602001836060015167ffffffffffffffff8111156111de576111de613c26565b604051908082528060200260200182016040528015611207578160200160208202803683370190505b50905292915050565b60008061123b8360405160200161122791906143fb565b6040516020818303038152906040526116b9565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd3382856040516112709392919061440e565b60405180910390a192915050565b60008260088111156112ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b6000855b858110156113185763ffffffff6020820290811b199890981685891b179791506001016112f0565b50959695505050505050565b6113566040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b61135f82611744565b8060200190518101906103a1919061455e565b602082015151825111156113e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016104c0565b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156115e9576002880197508784015180601e1a975080601f1a965050600587101561156857600187141561148057816080871661144b5750825b607f87168151811061145c57600080fd5b8b516020820260200183015160208202602001850152600181018d52505050611574565b60028714156114b757895180871061149757600080fd5b6020870260200182015160208202602001830152600181018b5250611574565b60038714156114d0576114cb8b8b88611772565b611574565b6004871415611501576114cb8a6040516020016114ed91906143fb565b6040516020818303038152906040526118d8565b866114cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016104c0565b6115748b8b898961196a565b60208a0151518a5111156115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016104c0565b61140e565b5050505050505050505050565b505050565b600054610100900460ff16611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104c0565b81516116a5906036906020850190613a58565b5080516115f6906037906020840190613a58565b6000806116e4836040516020016116d09190614641565b604051602081830303815290604052611a96565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661173e576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606103a18260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611ac2565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff8111156117d6576117d6613c26565b6040519080825280602002602001820160405280156117ff578160200160208202803683370190505b50905060005b828110156118565787602001518189600001510181518110611829576118296142bb565b6020026020010151828281518110611843576118436142bb565b6020908102919091010152600101611805565b5060005b6101008110156118cd5760005b838110156118ba5784828603848381518110611885576118856142bb565b6020026020010151901b901c896080015182815181106118a7576118a76142bb565b6020908102919091010152600101611867565b506118c6898988611372565b840161185a565b505050505050505050565b611967816040516024016118ec9190613b67565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611baa565b50565b7f00000000000000000000000000000000000000000000000000000000000000008210156119a5576119a0836005840383611bcb565b610c3a565b7f00000000000000000000000000000000000000000000000000000000000000008203915060018210611a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b600084806020019051810190611a4a9190614667565b90508073ffffffffffffffffffffffffffffffffffffffff168460200151856000015181518110611a7d57611a7d6142bb565b6020908102919091010152508251600101835250505050565b6060815182604051602001611aac929190614684565b6040516020818303038152906040529050919050565b6060833b80611ae15750506040805160208101909152600081526103c6565b80841115611aff5750506040805160208101909152600081526103c6565b83831015611b4a576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016104c0565b8383038482036000828210611b5f5782611b61565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6004821015611bdf576115f6838383611d31565b601d821015611c6257600b821015611bff576115f6836004840383611e47565b6016821015611c35576115f6837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5840183612175565b6115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea84018361260e565b6023821015611c98576115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe384018361287e565b6025821015611cce576115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd840183612d52565b6027821015611d04576115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb840183612f7b565b6115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9840183613175565b60048210611d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b81611dcc57438360200151846000015181518110611dbb57611dbb6142bb565b602002602001018181525050611e3c565b6001821415611df057428360200151846000015181518110611dbb57611dbb6142bb565b6002821415611e1457602083015183518151339291908110611dbb57611dbb6142bb565b602083015183518151309291908110611e2f57611e2f6142bb565b6020026020010181815250505b505080516001019052565b60078210611eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b6002821015611ffd5782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0182611f5c5783602001518160010181518110611efc57611efc6142bb565b6020026020010151611f348386602001518481518110611f1e57611f1e6142bb565b60200260200101516135a190919063ffffffff16565b0284602001518281518110611f4b57611f4b6142bb565b602002602001018181525050611fd1565b6001831415611fd15783602001518160010181518110611f7e57611f7e6142bb565b6020026020010151611fa08386602001518481518110611f1e57611f1e6142bb565b81611fad57611fad61471b565b0484602001518281518110611fc457611fc46142bb565b6020026020010181815250505b5082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018352505050565b600582101561210e5782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160028314156120745761204d8285602001518381518110611f1e57611f1e6142bb565b84602001518281518110612063576120636142bb565b602002602001018181525050610c3a565b60038314156120ad5761204d8285602001518381518110612097576120976142bb565b602002602001015161362290919063ffffffff16565b6004831415610c3a576120e682856020015183815181106120d0576120d06142bb565b602002602001015161368090919063ffffffff16565b846020015182815181106120fc576120fc6142bb565b60200260200101818152505050505050565b600582141561215057670de0b6b3a7640000836020015184600001518151811061213a5761213a6142bb565b6020908102919091010152505080516001019052565b60068214156115f65760128360200151846000015181518110611e2f57611e2f6142bb565b600b82106121df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b825160208401518051838303927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019183916000919083908110612225576122256142bb565b60200260200101519050600086141561227d575b8282101561227857602087015180516001909301928390811061225e5761225e6142bb565b6020026020010151816122719190614214565b9050612239565b6125df565b60018614156122f9575b82821080156122b557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b156122785781806001019250506122f2876020015183815181106122db576122db6142bb565b6020026020010151826136cb90919063ffffffff16565b9050612287565b6002861415612342575b82821015612278576020870151805160019093019283908110612328576123286142bb565b60200260200101518161233b91906142a4565b9050612303565b600386141561239f575b828210801561235b5750806000105b1561227857818060010192505061239887602001518381518110612381576123816142bb565b60200260200101518261370790919063ffffffff16565b905061234c565b60048614156123e8575b828210156122785760208701518051600190930192839081106123ce576123ce6142bb565b6020026020010151816123e1919061474a565b90506123a9565b6005861415612464575b828210801561242057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561227857818060010192505061245d87602001518381518110612446576124466142bb565b60200260200101518261371d90919063ffffffff16565b90506123f2565b60068614156124ad575b82821015612278576020870151805160019093019283908110612493576124936142bb565b6020026020010151816124a69190614787565b905061246e565b60078614156124f6575b828210156122785760208701518051600190930192839081106124dc576124dc6142bb565b6020026020010151816124ef919061479b565b90506124b7565b600886141561253f575b82821015612278576020870151805160019093019283908110612525576125256142bb565b60200260200101518161253891906148cf565b9050612500565b60098614156125915760005b8383101561258b576020880151805160019094019384908110612570576125706142bb565b6020026020010151905081811015612586578091505b61254b565b506125df565b600a8614156125df5760005b838310156125dd5760208801518051600190940193849081106125c2576125c26142bb565b60200260200101519050818111156125d8578091505b61259d565b505b80876020015185815181106125f6576125f66142bb565b60209081029190910101525050506001019092525050565b60078210612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b825160208085015181830201018380156126c157600181146126f85760028114612771576003811461279957600481146127c157600581146127e9576006811461283057612876565b826126cb57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082018051159052612876565b600383101561270657600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830186527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0820180518015612762576020820151825261276a565b604082015182525b5050612876565b600283101561277f57600080fd5b600183038652604082036020810151815114815250612876565b60028310156127a757600080fd5b600183038652604082036020810151815110815250612876565b60028310156127cf57600080fd5b600183038652604082036020810151815111815250612876565b838310156127f657600080fd5b831561282b576001840383038652602084028203805b8381101561276a578051612823576000825261276a565b60200161280c565b612876565b8383101561283d57600080fd5b8315612876576001840383038652602084028203805b83811015612873578051801561286a578252612873565b50602001612853565b50505b505050505050565b600682106128e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b600082612a10575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110612953576129536142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e053ea318560200151836001018151811061298f5761298f6142bb565b60200260200101516040518263ffffffff1660e01b81526004016129cf919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa1580156129ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204d91906148db565b6001831415612a6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460200151856000015181518110612a5457612a546142bb565b602090810291909101015283516001018452610c3a565b6002831415612a905760008460200151856000015181518110612a5457612a546142bb565b6003831415612b44575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01808452602084015180516000919083908110612adc57612adc6142bb565b60200260200101519050600085602001518360010181518110612b0157612b016142bb565b60200260200101519050612b15828261374c565b86602001518481518110612b2b57612b2b6142bb565b6020908102919091010152505083516001018452610c3a565b6004831415612c0c575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600f80851692600486901c909116916000919085908110612b9f57612b9f6142bb565b60200260200101519050600087602001518560010181518110612bc457612bc46142bb565b60200260200101519050612bda8285858461127e565b88602001518681518110612bf057612bf06142bb565b602090810291909101015250508551600101865250610c3a9050565b6005831415610c3a575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f8316918290030180855290600783901c906003600585901c16908360008267ffffffffffffffff811115612c7157612c71613c26565b604051908082528060200260200182016040528015612c9a578160200160208202803683370190505b50905060005b83811015612cef5789602001518381518110612cbe57612cbe6142bb565b6020026020010151828281518110612cd857612cd86142bb565b602090810291909101015260019283019201612ca0565b50600089602001518381518110612d0857612d086142bb565b60200260200101519050612d1e828288886137ab565b8a602001518881518110612d3457612d346142bb565b60209081029190910101525050875160010188525050505050505050565b60028210612dbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b81612ee25782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110612e2457612e246142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110612e6157612e616142bb565b60200260200101516040518263ffffffff1660e01b8152600401612ea1919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015612ebe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e691906148db565b60018214156115f6578251602084015180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019182908110612f2957612f296142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ebe573d6000803e3d6000fd5b60028210612fe5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810184527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01826130865783602001518181518110613049576130496142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231856020015186600001518151811061298f5761298f6142bb565b6001831415610c3a57836020015181815181106130a5576130a56142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636352211e85602001518660000151815181106130e2576130e26142bb565b60200260200101516040518263ffffffff1660e01b815260040161310891815260200190565b602060405180830381865afa158015613125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131499190614667565b73ffffffffffffffffffffffffffffffffffffffff16846020015182815181106120fc576120fc6142bb565b600282106131df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b816132e95782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9092019182908110613247576132476142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e85602001518360010181518110613282576132826142bb565b6020026020010151866020015184600201815181106132a3576132a36142bb565b60200260200101516040518363ffffffff1660e01b8152600401612ea192919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60018214156115f6576001810160008167ffffffffffffffff81111561331157613311613c26565b60405190808252806020026020018201604052801561333a578160200160208202803683370190505b50905060008267ffffffffffffffff81111561335857613358613c26565b604051908082528060200260200182016040528015613381578160200160208202803683370190505b5086518490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810189526020890151805193945091869003019160009190839081106133d1576133d16142bb565b6020026020010151905060005b8581101561348857886020015181840160010181518110613401576134016142bb565b602002602001015185828151811061341b5761341b6142bb565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528901518051600185890184010190811061345b5761345b6142bb565b6020026020010151848281518110613475576134756142bb565b60209081029190910101526001016133de565b506040517f4e1273f400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906134e090889088906004016148f4565b600060405180830381865afa1580156134fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135439190810190614961565b905060005b8681101561359557818181518110613562576135626142bb565b60200260200101518a6020015182860181518110613582576135826142bb565b6020908102919091010152600101613548565b50505050505050505050565b60008082601214156135b657839150506103a1565b82601211156135e2575060128290036135d081600a6148cf565b6135da908561474a565b9150506103a1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161361181600a6148cf565b6135da9085614787565b5092915050565b600080601283141561363757839150506103a1565b82601211156136515750601282900361361181600a6148cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016135d081600a6148cf565b600081810b6136905750816103a1565b60008260000b13156136b8576136a782600a614996565b6136b1908461474a565b90506103a1565b60ff60008390031661361181600a6148cf565b60008282018381106136dd57806136ff565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183116137175760006103c6565b50900390565b60008261372c575060006103a1565b8282028284828161373f5761373f61471b565b0414156136dd57806136ff565b60008060015b600881116137a357600061376686836138fb565b9050600061377486846138fb565b905060006137828383613707565b90506137928560018603836139a8565b945050600190920191506137529050565b509392505050565b835160009081908190819060015b600881116138ed576000925082876137f257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6137f6565b5060005b60005b838110156138ab576138248c8281518110613816576138166142bb565b6020026020010151846138fb565b95508a861161387657886138435761383c8683613a32565b915061386d565b60018914156138565761383c8683613a48565b600289148015613864575084155b1561386d578591505b600194506138a3565b896138a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506138ab565b6001016137f9565b50836138d457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6138e28660018403836139a8565b9550506001016137b9565b509298975050505050505050565b6000816008811115613969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b82613977576000915061361b565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115613a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310613a4157816103c6565b5090919050565b600081831015613a4157816103c6565b828054613a6490614197565b90600052602060002090601f016020900481019282613a865760008555613acc565b82601f10613a9f57805160ff1916838001178555613acc565b82800160010185558215613acc579182015b82811115613acc578251825591602001919060010190613ab1565b50613ad8929150613adc565b5090565b5b80821115613ad85760008155600101613add565b60005b83811015613b0c578181015183820152602001613af4565b83811115610c3a5750506000910152565b60008151808452613b35816020860160208601613af1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006103c66020830184613b1d565b73ffffffffffffffffffffffffffffffffffffffff8116811461196757600080fd5b60008060408385031215613baf57600080fd5b8235613bba81613b7a565b946020939093013593505050565b600080600060608486031215613bdd57600080fd5b8335613be881613b7a565b92506020840135613bf881613b7a565b929592945050506040919091013590565b600060208284031215613c1b57600080fd5b81356103c681613b7a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613c7857613c78613c26565b60405290565b6040516060810167ffffffffffffffff81118282101715613c7857613c78613c26565b60405160a0810167ffffffffffffffff81118282101715613c7857613c78613c26565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613d0b57613d0b613c26565b604052919050565b600067ffffffffffffffff821115613d2d57613d2d613c26565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000613d6c613d6784613d13565b613cc4565b9050828152838383011115613d8057600080fd5b828260208301376000602084830101529392505050565b600082601f830112613da857600080fd5b6103c683833560208501613d59565b600067ffffffffffffffff821115613dd157613dd1613c26565b5060051b60200190565b600082601f830112613dec57600080fd5b81356020613dfc613d6783613db7565b82815260059290921b84018101918181019086841115613e1b57600080fd5b8286015b84811015613e365780358352918301918301613e1f565b509695505050505050565b600060808284031215613e5357600080fd5b613e5b613c55565b9050813567ffffffffffffffff80821115613e7557600080fd5b818401915084601f830112613e8957600080fd5b81356020613e99613d6783613db7565b82815260059290921b84018101918181019088841115613eb857600080fd5b8286015b84811015613f0557803586811115613ed45760008081fd5b8701603f81018b13613ee65760008081fd5b613ef78b8683013560408401613d59565b845250918301918301613ebc565b5086525085810135935082841115613f1c57600080fd5b613f2887858801613ddb565b8186015250505050604082013560408201526060820135606082015292915050565b600060208284031215613f5c57600080fd5b813567ffffffffffffffff80821115613f7457600080fd5b9083019060608286031215613f8857600080fd5b613f90613c7e565b82358015158114613fa057600080fd5b8152602083013582811115613fb457600080fd5b830160808188031215613fc657600080fd5b613fce613c55565b813584811115613fdd57600080fd5b613fe989828501613d97565b825250602082013584811115613ffe57600080fd5b61400a89828501613d97565b602083015250604082013561401e81613b7a565b8060408301525060608201356060820152806020840152505060408301358281111561404957600080fd5b61405587828601613e41565b60408301525095945050505050565b60008083601f84011261407657600080fd5b50813567ffffffffffffffff81111561408e57600080fd5b6020830191508360208285010111156140a657600080fd5b9250929050565b600080600080606085870312156140c357600080fd5b84356140ce81613b7a565b935060208501359250604085013567ffffffffffffffff8111156140f157600080fd5b6140fd87828801614064565b95989497509550505050565b60008060006040848603121561411e57600080fd5b833561412981613b7a565b9250602084013567ffffffffffffffff81111561414557600080fd5b61415186828701614064565b9497909650939450505050565b6000806040838503121561417157600080fd5b823561417c81613b7a565b9150602083013561418c81613b7a565b809150509250929050565b600181811c908216806141ab57607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614227576142276141e5565b500190565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b6000828210156142b6576142b66141e5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561431a578151875295820195908201906001016142fe565b509495945050505050565b80518252600060208083015160a08286015261434460a08601826142ea565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b828110156143ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08683030184526143a8828651613b1d565b9487019493870193915060010161436e565b506060880151955088810360608a01526143d481876142ea565b95505050505050608083015184820360808601526143f282826142ea565b95945050505050565b6020815260006103c66020830184614325565b600073ffffffffffffffffffffffffffffffffffffffff8086168352808516602084015250606060408301526143f26060830184614325565b600082601f83011261445857600080fd5b81516020614468613d6783613db7565b82815260059290921b8401810191818101908684111561448757600080fd5b8286015b84811015613e36578051835291830191830161448b565b600082601f8301126144b357600080fd5b815160206144c3613d6783613db7565b82815260059290921b840181019181810190868411156144e257600080fd5b8286015b84811015613e3657805167ffffffffffffffff8111156145065760008081fd5b8701603f810189136145185760008081fd5b84810151604061452a613d6783613d13565b8281528b8284860101111561453f5760008081fd5b61454e83898301848701613af1565b86525050509183019183016144e6565b60006020828403121561457057600080fd5b815167ffffffffffffffff8082111561458857600080fd5b9083019060a0828603121561459c57600080fd5b6145a4613ca1565b825181526020830151828111156145ba57600080fd5b6145c687828601614447565b6020830152506040830151828111156145de57600080fd5b6145ea878286016144a2565b60408301525060608301518281111561460257600080fd5b61460e87828601614447565b60608301525060808301518281111561462657600080fd5b61463287828601614447565b60808301525095945050505050565b600081526000825161465a816001850160208701613af1565b9190910160010192915050565b60006020828403121561467957600080fd5b81516103c681613b7a565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161470d81600e850160208701613af1565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614782576147826141e5565b500290565b6000826147965761479661471b565b500490565b6000826147aa576147aa61471b565b500690565b600181815b8085111561480857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147ee576147ee6141e5565b808516156147fb57918102915b93841c93908002906147b4565b509250929050565b60008261481f575060016103a1565b8161482c575060006103a1565b8160018114614842576002811461484c57614868565b60019150506103a1565b60ff84111561485d5761485d6141e5565b50506001821b6103a1565b5060208310610133831016604e8410600b841016171561488b575081810a6103a1565b61489583836147af565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c7576148c76141e5565b029392505050565b60006103c68383614810565b6000602082840312156148ed57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561494357815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614911565b5050508381038285015261495781866142ea565b9695505050505050565b60006020828403121561497357600080fd5b815167ffffffffffffffff81111561498a57600080fd5b6136ff84828501614447565b60006103c660ff84168361481056fea2646970667358221220f574c9550f66f4136490d1c31398b880561e03beaa5e50c1a75bd491923224f764736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5060405162004cd738038062004cd7833981016040819052620000349162000118565b306080526001600160a01b03811660a0526200004f62000056565b506200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051614b6762000170600039600061136d0152600061139a0152614b676000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610331578063ea34554014610369578063ea7cb3701461037c57600080fd5b8063caa0eb3b146102d8578063dd62ed3e146102eb57600080fd5b8063a457c2d7116100b2578063a457c2d71461029f578063a9059cbb146102b2578063bb1757cf146102c557600080fd5b806395d89b41146102825780639a8d2ac81461028a57600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461021557806388d686041461024b57600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f36600461386c565b610384565b60405190151581526020015b60405180910390f35b6101a161041d565b6040516101909190613924565b6101846101bc366004613959565b6104af565b6035545b604051908152602001610190565b6101846101e1366004613985565b6104c7565b60405160128152602001610190565b610184610203366004613959565b6104ed565b6065546101849060ff1681565b6101c56102233660046139c6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610259366004613b19565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a1610539565b61029d610298366004613b69565b610548565b005b6101846102ad366004613959565b610911565b6101846102c0366004613959565b6109ed565b61029d6102d3366004613ba4565b6109fb565b6101c56102e6366004613c29565b610b36565b6101c56102f9366004613cb5565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c56103773660046139c6565b610b6f565b6101a1610c17565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061041757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461042c90613cee565b80601f016020809104026020016040519081016040528092919081815260200182805461045890613cee565b80156104a55780601f1061047a576101008083540402835291602001916104a5565b820191906000526020600020905b81548152906001019060200180831161048857829003601f168201915b5050505050905090565b6000336104bd818585610c2f565b5060019392505050565b6000336104d5858285610de2565b6104e0858585610eb9565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104bd9082908690610534908790613d6b565b610c2f565b60606037805461042c90613cee565b600054610100900460ff16158080156105685750600054600160ff909116105b806105825750303b158015610582575060005460ff166001145b610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561067157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107156106816020840184613d83565b61068b9080613dc1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106cd925050506020850185613d83565b6106db906020810190613dc1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061116c92505050565b61074c6107256020840184613d83565b6107369060608101906040016139c6565b6107436020850185613d83565b6060013561120d565b6107856040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6107df6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816107a6579050509050818160008151811061080857610808613e2d565b60209081029190910101526108326108236040860186613e5c565b61082c90613ed6565b8261132d565b61083f6020850185614006565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e166906108a09033908790614260565b60405180910390a15050801561090d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161060a565b6109e28286868403610c2f565b506001949350505050565b6000336104bd818585610eb9565b60655460ff16610a84573373ffffffffffffffffffffffffffffffffffffffff841614610a84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d0000000000000000000000000000000000604482015260640161060a565b6000610a8f84610b6f565b9050610a9b848261120d565b610ac97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261147b565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610b289033908790879087906143a7565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610b669085611521565b95945050505050565b600080610b7a6115d6565b60408051600180825281830190925291925060009190602080830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1681600081518110610bca57610bca613e2d565b602002602001018181525050610be281836000611639565b5060208201518251610bf6906001906143eb565b81518110610c0657610c06613e2d565b602002602001015192505050919050565b6060610c2a610c258261190a565b611b2b565b905090565b73ffffffffffffffffffffffffffffffffffffffff8316610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8216610d74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610eb35781811015610ea6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060a565b610eb38484848403610c2f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8216610fff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906110f9908490613d6b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161115f91815260200190565b60405180910390a3610eb3565b600054610100900460ff16611203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161060a565b61090d8282611b6f565b73ffffffffffffffffffffffffffffffffffffffff821661128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060a565b806035600082825461129c9190613d6b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040812080548392906112d6908490613d6b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a1906113c6907f0000000000000000000000000000000000000000000000000000000000000000908790879060040161448f565b6000604051808303816000875af11580156113e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261142b9190810190614577565b905061143681611c2d565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008260088111156114e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b6000855b858110156115155763ffffffff6020820290811b199890981685891b179791506001016114ed565b50959695505050505050565b600081600881111561158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b8261159d57600091506115cf565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b6116086040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600054610c2a906116349062010000900473ffffffffffffffffffffffffffffffffffffffff16611cb8565b611ce6565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156118f2576003890198508886015180601f1a975061ffff8160081c16985050600688101561186a57876116bc5786602002840151825260208201915061187d565b60018814156116d95760208702830151825260208201915061187d565b6002881415611763578c51871061174c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161060a565b866020026020018d0151825260208201915061187d565b60038814156117ab5760006117996040805180820182526000808252602091820181905282518084019093528083529082015290565b5188015483525060209091019061187d565b60048814156117c7576117c08d8d848a611e52565b915061187d565b6060876117f5578c6040516020016117df91906145e5565b6040516020818303038152906040529050611854565b600188141561180e576118078d611fbf565b9050611854565b600288141561182a576020808e01516040516117df920161467c565b6003881415611854578c516040805160208101929092520160405160208183030381529060405290505b80511561186457611864816120fc565b5061187d565b87611879888463ffffffff8416565b9250505b60208c0151518c5111156118ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161060a565b611677565b602083830304909b529b9a5050505050505050505050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261218e60e0840181905261228261010085015261230e61012085015261242f6101408501526101608401526124d86101808401526125e06101a08401526126b46101c08401526128b16101e08401526128bc6102008401526128c76102208401526128d26102408401526128dd6102608401526129116102808401526129776102a08401526129dd6102c0840152612a116102e0840152612a45610300840152612a7a610320840152612ad5610340840152612b2b610360840152612b54610380840152612bab6103a0840152612bd86103c0840152612c2f6103e0840152612c9a610400840152612cf7610420840152612d35610440840152612d6e610460840152612da2610480840152612dd46104a0840152612e066104c0840152612e386104e0840152612e6c610500840152612ebe610520840152612ef7610540840152612fa96105608401526130d66105808401526131326105a08401526131ec6105c0840152835190850201909252919082815b83811015611b2257858181518110611ae157611ae1613e2d565b6020026020010151856028600601830181518110611b0157611b01613e2d565b67ffffffffffffffff90921660209283029190910190910152600101611ac7565b50505050919050565b60606020820182516020028101600284015b81831015611b5a5782518151178152602090920191600201611b3d565b5050825160020283525090919050565b505050565b600054610100900460ff16611c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161060a565b8151611c199060369060208501906137d3565b508051611b6a9060379060208401906137d3565b600080611c5883604051602001611c4491906146e1565b604051602081830303815290604052613268565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611cb2576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606104178260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613294565b611d186040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b611d4a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115611d7e57611d7e6139e3565b604051908082528060200260200182016040528015611da7578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611dde57611dde6139e3565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611e41578160208202602001840152815160200182019150600181019050611e1a565b505060408501525091949350505050565b600060078216600383811c16828082611e9157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611edc565b8260011415611eb557506fffffffffffffffffffffffffffffffff90506080611edc565b8260021415611ed1575067ffffffffffffffff90506040611edc565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611eff57611eff6139e3565b604051908082528060200260200182016040528015611f28578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f4f578151815260209182019101611f37565b505060608b015160808c015160209081029091010160005b610100811015611fad5760208502830182845b82811015611f96578051841c8a16825260209182019101611f7a565b505050611fa48e8e8b611639565b9b508501611f67565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161200b919061467c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526120479291602001614707565b604051602081830303815290604052905060005b8560400151518110156120f357818660400151828151811061207f5761207f613e2d565b60200260200101515160001b876040015183815181106120a1576120a1613e2d565b60200260200101516040516020016120bb9392919061472d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161205b565b50949350505050565b61218b816040516024016121109190613924565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261337c565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122759190614764565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190614764565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156123fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124219190614764565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612234565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bd919061477d565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016123e0565b60008060008467ffffffffffffffff8111156126d2576126d26139e3565b6040519080825280602002602001820160405280156126fb578160200160208202803683370190505b50905060008567ffffffffffffffff811115612719576127196139e3565b604051908082528060200260200182016040528015612742578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561279757825181526020928301920161277f565b5050602088028101602084015b818310156127bc5782518152602092830192016127a4565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612816908790879060040161479a565b600060405180830381865afa158015612833573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261287991908101906147fd565b9050846020820160208a0281015b808210156128a2578151835260209283019290910190612887565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612302828761339d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361227582612971858a61339d565b90613417565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612275826129d7858a61339d565b90613436565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612302828761344b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123028287613496565b6000602083028203805b83811015612a6f5780518015612a66578252612a6f565b50602001612a4f565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612a6f578051612b4c5760008252612a6f565b602001612b35565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612c6d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612c8c57508051602090910190612c8583826134f4565b9250612c3f565b505081526020019392505050565b6020828102820380516000928201835b8582108015612cd857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612c8c57508051602090910190612cf08382613530565b9250612caa565b6020828102820380516000928201835b8582108015612d165750826000105b15612c8c57508051602090910190612d2e838261355f565b9250612d07565b600060208302820380516000602083015b85811015612c8c5780518301915082821015612d6157600080fd5b9091508190602001612d46565b600060208302820380516000602083015b85811015612c8c578051915081612d9557600080fd5b9181900491602001612d7f565b6020828102820380516000928201835b85821015612c8c57508051602090910190612dcd81846149a3565b9250612db2565b6020828102820380516000928201835b85821015612c8c5750805182811115612dfb578092505b602082019150612de4565b6020828102820380516000928201835b85821015612c8c5750805182811015612e2d578092505b602082019150612e16565b600060208302820380516000602083015b85811015612c8c578051915081612e5f57600080fd5b9181900691602001612e49565b60006020830282038051600080602084015b86811015612eaf578315612ea7578051925082840291508284830414612ea357600080fd5b8193505b602001612e7e565b50505081526020019392505050565b600060208302820380516000602083015b85811015612c8c5780518303915082821115612eea57600080fd5b9091508190602001612ecf565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906123e090869086906004016149af565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90613082908790879087906004016149de565b602060405180830381865afa15801561309f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c39190614764565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836122758383613575565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115613160576131606139e3565b604051908082528060200260200182016040528015613189578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156131c5578151816020018601526020820191506020810190506131a3565b505051905060006131d8838389896135d4565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856132598585858561147b565b90955250949695505050505050565b606081518260405160200161327e929190614a13565b6040516020818303038152906040529050919050565b6060833b806132b35750506040805160208101909152600081526104e6565b808411156132d15750506040805160208101909152600081526104e6565b8383101561331c576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161060a565b83830384820360008282106133315782613333565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008082601214156133b25783915050610417565b82601211156133de575060128290036133cc81600a6149a3565b6133d69085614aaa565b915050610417565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161340d81600a6149a3565b6133d69085614ae7565b60008161342c670de0b6b3a764000085614aaa565b6104e69190614ae7565b6000670de0b6b3a764000061342c8385614aaa565b600081810b61345b575081610417565b60008260000b13156134835761347282600a614b22565b61347c9084614aaa565b9050610417565b60ff60008390031661340d81600a6149a3565b60008060128314156134ab5783915050610417565b82601211156134c55750601282900361340d81600a6149a3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133cc81600a6149a3565b60008282018381106135065780613528565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261353f57506000610417565b82820282848281613552576135526146b2565b0414156135065780613528565b600081831161356f5760006104e6565b50900390565b60008060015b600881116135cc57600061358f8683611521565b9050600061359d8684611521565b905060006135ab838361355f565b90506135bb856001860383613724565b9450506001909201915061357b9050565b509392505050565b835160009081908190819060015b600881116137165760009250828761361b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61361f565b5060005b60005b838110156136d45761364d8c828151811061363f5761363f613e2d565b602002602001015184611521565b95508a861161369f578861366c5761366586836137ad565b9150613696565b600189141561367f5761366586836137c3565b60028914801561368d575084155b15613696578591505b600194506136cc565b896136cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506136d4565b600101613622565b50836136fd57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61370b866001840383613724565b9550506001016135e2565b509298975050505050505050565b6000826008811115613792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b505063ffffffff602090920291821b199290921691901b1790565b60008183106137bc57816104e6565b5090919050565b6000818310156137bc57816104e6565b8280546137df90613cee565b90600052602060002090601f0160209004810192826138015760008555613847565b82601f1061381a57805160ff1916838001178555613847565b82800160010185558215613847579182015b8281111561384757825182559160200191906001019061382c565b50613853929150613857565b5090565b5b808211156138535760008155600101613858565b60006020828403121561387e57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104e657600080fd5b60005b838110156138c95781810151838201526020016138b1565b83811115610eb35750506000910152565b600081518084526138f28160208601602086016138ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104e660208301846138da565b73ffffffffffffffffffffffffffffffffffffffff8116811461218b57600080fd5b6000806040838503121561396c57600080fd5b823561397781613937565b946020939093013593505050565b60008060006060848603121561399a57600080fd5b83356139a581613937565b925060208401356139b581613937565b929592945050506040919091013590565b6000602082840312156139d857600080fd5b81356104e681613937565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613a3557613a356139e3565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a8257613a826139e3565b604052919050565b600067ffffffffffffffff821115613aa457613aa46139e3565b5060051b60200190565b600082601f830112613abf57600080fd5b81356020613ad4613acf83613a8a565b613a3b565b82815260059290921b84018101918181019086841115613af357600080fd5b8286015b84811015613b0e5780358352918301918301613af7565b509695505050505050565b60008060408385031215613b2c57600080fd5b8235613b3781613937565b9150602083013567ffffffffffffffff811115613b5357600080fd5b613b5f85828601613aae565b9150509250929050565b600060208284031215613b7b57600080fd5b813567ffffffffffffffff811115613b9257600080fd5b8201606081850312156104e657600080fd5b600080600060408486031215613bb957600080fd5b8335613bc481613937565b9250602084013567ffffffffffffffff80821115613be157600080fd5b818601915086601f830112613bf557600080fd5b813581811115613c0457600080fd5b876020828501011115613c1657600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613c3f57600080fd5b8435613c4a81613937565b935060208501359250604085013567ffffffffffffffff80821115613c6e57600080fd5b818701915087601f830112613c8257600080fd5b813581811115613c9157600080fd5b8860208260051b8501011115613ca657600080fd5b95989497505060200194505050565b60008060408385031215613cc857600080fd5b8235613cd381613937565b91506020830135613ce381613937565b809150509250929050565b600181811c90821680613d0257607f821691505b60208210811415611cb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613d7e57613d7e613d3c565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613db757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613df657600080fd5b83018035915067ffffffffffffffff821115613e1157600080fd5b602001915036819003821315613e2657600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613db757600080fd5b600067ffffffffffffffff821115613eaa57613eaa6139e3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006040808336031215613ee957600080fd5b613ef1613a12565b833567ffffffffffffffff80821115613f0957600080fd5b9085019036601f830112613f1c57600080fd5b81356020613f2c613acf83613a8a565b82815260059290921b84018101918181019036841115613f4b57600080fd5b8286015b84811015613fbf57803586811115613f675760008081fd5b870136603f820112613f795760008081fd5b84810135613f89613acf82613e90565b818152368c838501011115613f9e5760008081fd5b818c8401888301376000918101870191909152845250918301918301613f4f565b5086525087810135955082861115613fd657600080fd5b613fe236878a01613aae565b90850152509195945050505050565b8035801515811461400157600080fd5b919050565b60006020828403121561401857600080fd5b6104e682613ff1565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261405657600080fd5b830160208101925035905067ffffffffffffffff81111561407657600080fd5b803603831315613e2657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261410257600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261414057600080fd5b830160208101925035905067ffffffffffffffff81111561416057600080fd5b8060051b3603831315613e2657600080fd5b600060408301614182838461410b565b604086528281845260608701905060608260051b88010193508260005b838110156141fa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526141d88286614021565b6141e3888284614085565b97505050602092830192919091019060010161419f565b505050505061420c602084018461410b565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561424457600080fd5b60051b8082602085013760009201602001918252509392505050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015261428c84613ff1565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818536030181126142c857600080fd5b60608481015284016142da8180614021565b608060a08701526142f061012087018284614085565b9150506143006020830183614021565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614335838284614085565b92505050604082013561434781613937565b831660e0860152606082013561010086015261436660408701876140ce565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc085820301608086015261439c8184614172565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526143e1606083018486614085565b9695505050505050565b6000828210156143fd576143fd613d3c565b500390565b6000815180845260208085019450848260051b860182860160005b858110156144475783830389526144358383516138da565b9885019892509084019060010161441d565b5090979650505050505050565b600081518084526020808501945080840160005b8381101561448457815187529582019590820190600101614468565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a08651604080858801526144ca83880183614402565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a01526145058483614454565b898103848b01528a51808252878c019550908701925060005b818110156145655785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c09093019260010161451e565b50919c9b505050505050505050505050565b60006020828403121561458957600080fd5b815167ffffffffffffffff8111156145a057600080fd5b8201601f810184136145b157600080fd5b80516145bf613acf82613e90565b8181528560208385010111156145d457600080fd5b610b668260208301602086016138ae565b60208152815160208201526000602083015160a0604084015261460b60c0840182614454565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526146478383614402565b92506060860151915080858403016080860152506146658282614454565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156146a65781518552938201939082019060010161468a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008152600082516146fa8160018501602087016138ae565b9190910160010192915050565b8281526000825161471f8160208501602087016138ae565b919091016020019392505050565b6000845161473f8184602089016138ae565b820184815283516147578160208085019088016138ae565b0160200195945050505050565b60006020828403121561477657600080fd5b5051919050565b60006020828403121561478f57600080fd5b81516104e681613937565b604080825283519082018190526000906020906060840190828701845b828110156147e957815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016147b7565b505050838103828501526143e18186614454565b6000602080838503121561481057600080fd5b825167ffffffffffffffff81111561482757600080fd5b8301601f8101851361483857600080fd5b8051614846613acf82613a8a565b81815260059190911b8201830190838101908783111561486557600080fd5b928401925b8284101561439c5783518252928401929084019061486a565b600181815b808511156148dc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c2576148c2613d3c565b808516156148cf57918102915b93841c9390800290614888565b509250929050565b6000826148f357506001610417565b8161490057506000610417565b816001811461491657600281146149205761493c565b6001915050610417565b60ff84111561493157614931613d3c565b50506001821b610417565b5060208310610133831016604e8410600b841016171561495f575081810a610417565b6149698383614883565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561499b5761499b613d3c565b029392505050565b60006104e683836148e4565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006135286040830184614454565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610b666060830184614454565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251614a9c81600e8501602087016138ae565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ae257614ae2613d3c565b500290565b600082614b1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006104e660ff8416836148e456fea2646970667358221220ffd932993ed7e6c37165482a804f7fbf2a22c6683657224f4e2020666d237e8164736f6c634300080a0033"; type EmissionsERC20ConstructorParams = | [signer?: Signer] @@ -632,14 +671,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/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/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/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/GatedNFTFactory__factory.ts b/src/typechain/factories/GatedNFTFactory__factory.ts deleted file mode 100644 index f905725..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 = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61354b80610c5e83390190565b608051610ba06100be60003960006103770152610ba06000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a4914610046578063eec513d014610083578063fc91a89714610096575b600080fd5b610059610054366004610525565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100596100913660046107c0565b61028d565b6100cf6100a436600461085c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610347565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49338b8b8b8b8b8b8b8b6040516020016102cc99989796959493929190610926565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102f79190610a8b565b6020604051808303816000875af1158015610316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033a9190610a9e565b9998505050505050505050565b600080808080808080808061035e8b8d018d610abb565b985098509850985098509850985098509850600061039b7f0000000000000000000000000000000000000000000000000000000000000000610443565b6040517f911e29e300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063911e29e390610400908d908d908d908d908d908d908d908d908d90600401610926565b600060405180830381600087803b15801561041a57600080fd5b505af115801561042e573d6000803e3d6000fd5b50929f9e505050505050505050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b6000806020838503121561053857600080fd5b823567ffffffffffffffff8082111561055057600080fd5b818501915085601f83011261056457600080fd5b81358181111561057357600080fd5b86602082850101111561058557600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156105e9576105e9610597565b60405290565b600082601f83011261060057600080fd5b813567ffffffffffffffff8082111561061b5761061b610597565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561066157610661610597565b8160405283815286602085880101111561067a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060e082840312156106ac57600080fd5b6106b46105c6565b9050813567ffffffffffffffff808211156106ce57600080fd5b6106da858386016105ef565b835260208401359150808211156106f057600080fd5b6106fc858386016105ef565b6020840152604084013591508082111561071557600080fd5b610721858386016105ef565b6040840152606084013591508082111561073a57600080fd5b610746858386016105ef565b6060840152608084013591508082111561075f57600080fd5b5061076c848285016105ef565b60808301525060a082013560a082015260c082013560c082015292915050565b73ffffffffffffffffffffffffffffffffffffffff811681146107ae57600080fd5b50565b80356003811061052057600080fd5b600080600080600080600080610100898b0312156107dd57600080fd5b883567ffffffffffffffff8111156107f457600080fd5b6108008b828c0161069a565b98505060208901356108118161078c565b9650604089013595506060890135945061082d60808a016107b1565b935060a0890135925060c08901356108448161078c565b8092505060e089013590509295985092959890939650565b60006020828403121561086e57600080fd5b81356108798161078c565b9392505050565b6000815180845260005b818110156108a65760208185018101518683018201520161088a565b818111156108b8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60038110610922577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061012073ffffffffffffffffffffffffffffffffffffffff8c1683528060208401528a5160e082850152610960610200850182610880565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0808584030161014086015261099e8383610880565b925060408d0151915080858403016101608601526109bc8383610880565b925060608d0151915080858403016101808601526109da8383610880565b925060808d0151915080858403016101a0860152506109f98282610880565b60a08d01516101c086015260c08d01516101e086015273ffffffffffffffffffffffffffffffffffffffff8c1660408601529250610a35915050565b876060830152866080830152610a4e60a08301876108eb565b8460c0830152610a7660e083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101008301529a9950505050505050505050565b6020815260006108796020830184610880565b600060208284031215610ab057600080fd5b81516108798161078c565b60008060008060008060008060006101208a8c031215610ada57600080fd5b8935610ae58161078c565b985060208a013567ffffffffffffffff811115610b0157600080fd5b610b0d8c828d0161069a565b98505060408a0135610b1e8161078c565b965060608a0135955060808a01359450610b3a60a08b016107b1565b935060c08a0135925060e08a0135610b518161078c565b809250506101008a01359050929598509295985092959856fea2646970667358221220f471f4cb7b15057db412636e1aef069502de8be49184214c1f8a73d8343a69c464736f6c634300080a0033608060405234801561001057600080fd5b5061352b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80636a627842116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461035f578063e985e9c514610372578063f2fde38b146103bb57600080fd5b806395d89b4114610331578063a22cb46514610339578063b88d4fde1461034c57600080fd5b8063715018a6116100bd578063715018a6146102f85780638da5cb5b14610300578063911e29e31461031e57600080fd5b80636a627842146102d257806370a08231146102e557600080fd5b806316f4d0221161013a5780632a55205a116101145780632a55205a1461026d57806342842e0e146102ac5780636352211e146102bf57600080fd5b806316f4d0221461022457806318160ddd1461024457806323b872dd1461025a57600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc5780630fc499f51461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a6101953660046128fe565b6103ce565b60405190151581526020015b60405180910390f35b6101b761042a565b6040516101a69190612998565b6101d76101d23660046129ab565b6104bc565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a3660046129f6565b61059b565b005b61020f61021f366004612a22565b610753565b60d1546101d79073ffffffffffffffffffffffffffffffffffffffff1681565b61024c6108f0565b6040519081526020016101a6565b61020f610268366004612a3f565b61090c565b61028061027b366004612a80565b6109ad565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a6565b61020f6102ba366004612a3f565b610a34565b6101d76102cd3660046129ab565b610a4f565b61024c6102e0366004612a22565b610b01565b61024c6102f3366004612a22565b610d12565b61020f610de0565b60975473ffffffffffffffffffffffffffffffffffffffff166101d7565b61020f61032c366004612bbd565b610e6d565b6101b76111f8565b61020f610347366004612d3c565b611207565b61020f61035a366004612d7a565b611216565b6101b761036d3660046129ab565b6112be565b61019a610380366004612dfa565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61020f6103c9366004612a22565b611354565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161480610424575061042482611484565b92915050565b60606065805461043990612e28565b80601f016020809104026020016040519081016040528092919081815260200182805461046590612e28565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105a682610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b3373ffffffffffffffffffffffffffffffffffffffff821614806106b8575073ffffffffffffffffffffffffffffffffffffffff81166000908152606a6020908152604080832033845290915290205460ff165b610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610569565b61074e8383611567565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b60d65473ffffffffffffffffffffffffffffffffffffffff163314610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f6e6c792063757272656e7420726563697069656e742063616e20757064617460448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b60d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fe8fc99c58149b88bd3261c7bfa0257cb6276c555f2afc047f7b9bcfa4b2d05e79060200160405180910390a150565b600060016108fd60c95490565b6109079190612eab565b905090565b6109163382611607565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61074e838383611777565b60d654600090819073ffffffffffffffffffffffffffffffffffffffff166109f157505060d65473ffffffffffffffffffffffffffffffffffffffff166000610a2d565b60d65460d75473ffffffffffffffffffffffffffffffffffffffff9091169061271090610a1e9086612ec2565b610a289190612eff565b915091505b9250929050565b61074e83838360405180602001604052806000815250611216565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610569565b60d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260009392610ba69291169063e053ea31906024015b602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190612f3a565b4361195a565b1015610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d354610c1a83610d12565b10610c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b6000610c8c60c95490565b905060d554811115610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f546f74616c20737570706c7920657868617573746564000000000000000000006044820152606401610569565b610d048382611994565b61042460c980546001019055565b600073ffffffffffffffffffffffffffffffffffffffff8216610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610569565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b60975473ffffffffffffffffffffffffffffffffffffffff163314610e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b610e6b60006119ae565b565b600054610100900460ff16610e885760005460ff1615610e8c565b303b155b610f18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b600054610100900460ff16158015610f5757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b73ffffffffffffffffffffffffffffffffffffffff8316610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b610fe689600001518a60200151611a25565b610fee611ac6565b610ff78a611354565b60d180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055885180518a9160ca91611051918391602090910190612837565b50602082810151805161106a9260018501920190612837565b5060408201518051611086916002840191602090910190612837565b50606082015180516110a2916003840191602090910190612837565b50608082015180516110be916004840191602090910190612837565b5060a0820151600582015560c09091015160069091015560d287905560d386905560d480548691907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561111c5761111c612f53565b021790555060d584905560d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560d782905560c9805460010190557fd85dcc7cee7af91644138b69b9dea25e7697ddbe6a27aa23720ab19a86581f40308b8b8b8b8b8b8b8b8b6040516111b59a99989796959493929190612fbd565b60405180910390a180156111ec57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50505050505050505050565b60606066805461043990612e28565b611212338383611b65565b5050565b6112203383611607565b6112ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b6112b884848484611c93565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1661134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f6e6578697374656e7420746f6b656e0000000000000000000000000000006044820152606401610569565b610424611d36565b60975473ffffffffffffffffffffffffffffffffffffffff1633146113d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b611481816119ae565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061151757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061042457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610424565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906115c182610a4f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff166116b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610569565b60006116c383610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061173257508373ffffffffffffffffffffffffffffffffffffffff1661171a846104bc565b73ffffffffffffffffffffffffffffffffffffffff16145b8061176f575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b600060d45460ff16600281111561179057611790612f53565b14156117f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5472616e73666572206e6f7420737570706f72746564000000000000000000006044820152606401610569565b600260d45460ff16600281111561181157611811612f53565b14156118dc5760d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261187492169063e053ea3190602401610b5f565b10156118dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d3546118e883610d12565b1061194f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b61074e838383611d91565b6000805b600881101561198a57828160200285901c63ffffffff161115611982579050610424565b60010161195e565b5060089392505050565b611212828260405180602001604052806000815250611ff8565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16611abc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b611212828261209b565b600054610100900460ff16611b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b612159565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611c9e848484611777565b611caa848484846121f9565b6112b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b6060611d6d60ca60cc611d476123e9565b604051602001611d59939291906131ff565b60405160208183030381529060405261249c565b604051602001611d7d91906132d0565b604051602081830303815290604052905090565b8273ffffffffffffffffffffffffffffffffffffffff16611db182610a4f565b73ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610569565b73ffffffffffffffffffffffffffffffffffffffff8216611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610569565b611f01600082611567565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290611f37908490612eab565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290611f72908490613315565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6120028383612675565b61200f60008484846121f9565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b600054610100900460ff16612132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b8151612145906065906020850190612837565b50805161074e906066906020840190612837565b600054610100900460ff166121f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b336119ae565b600073ffffffffffffffffffffffffffffffffffffffff84163b156123de576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061227090339089908890889060040161332d565b6020604051808303816000875af19250505080156122c9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526122c691810190613376565b60015b612393573d8080156122f7576040519150601f19603f3d011682016040523d82523d6000602084013e6122fc565b606091505b50805161238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061176f565b506001949350505050565b606060008060ca60040180546123fe90612e28565b905011905060008060ca600301805461241690612e28565b90501190508180156124255750805b156124555760405161243f9060ce9060cd90602001613393565b6040516020818303038152906040529250505090565b811561246d5760405161243f9060ce90602001613424565b80156124855760405161243f9060cd90602001613483565b604051806020016040528060008152509250505090565b60608151600014156124bc57505060408051602081019091526000815290565b60006040518060600160405280604081526020016134b660409139905060006003845160026124eb9190613315565b6124f59190612eff565b612500906004612ec2565b9050600061250f826020613315565b67ffffffffffffffff81111561252757612527612aa2565b6040519080825280601f01601f191660200182016040528015612551576020820181803683370190505b509050818152600183018586518101602084015b818310156125bd576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f8116850151825350600101612565565b6003895106600181146125d7576002811461262157612667565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152612667565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166126f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610569565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff161561277e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff821660009081526068602052604081208054600192906127b4908490613315565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461284390612e28565b90600052602060002090601f01602090048101928261286557600085556128ab565b82601f1061287e57805160ff19168380011785556128ab565b828001600101855582156128ab579182015b828111156128ab578251825591602001919060010190612890565b506128b79291506128bb565b5090565b5b808211156128b757600081556001016128bc565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461148157600080fd5b60006020828403121561291057600080fd5b813561291b816128d0565b9392505050565b60005b8381101561293d578181015183820152602001612925565b838111156112b85750506000910152565b60008151808452612966816020860160208601612922565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061291b602083018461294e565b6000602082840312156129bd57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461148157600080fd5b80356129f1816129c4565b919050565b60008060408385031215612a0957600080fd5b8235612a14816129c4565b946020939093013593505050565b600060208284031215612a3457600080fd5b813561291b816129c4565b600080600060608486031215612a5457600080fd5b8335612a5f816129c4565b92506020840135612a6f816129c4565b929592945050506040919091013590565b60008060408385031215612a9357600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715612af457612af4612aa2565b60405290565b600067ffffffffffffffff80841115612b1557612b15612aa2565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612b5b57612b5b612aa2565b81604052809350858152868686011115612b7457600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612b9f57600080fd5b61291b83833560208501612afa565b8035600381106129f157600080fd5b60008060008060008060008060006101208a8c031215612bdc57600080fd5b8935612be7816129c4565b985060208a013567ffffffffffffffff80821115612c0457600080fd5b908b019060e0828e031215612c1857600080fd5b612c20612ad1565b823582811115612c2f57600080fd5b612c3b8f828601612b8e565b825250602083013582811115612c5057600080fd5b612c5c8f828601612b8e565b602083015250604083013582811115612c7457600080fd5b612c808f828601612b8e565b604083015250606083013582811115612c9857600080fd5b612ca48f828601612b8e565b606083015250608083013582811115612cbc57600080fd5b612cc88f828601612b8e565b60808301525060a083013560a082015260c083013560c0820152809a50505050612cf460408b016129e6565b965060608a0135955060808a01359450612d1060a08b01612bae565b935060c08a01359250612d2560e08b016129e6565b91506101008a013590509295985092959850929598565b60008060408385031215612d4f57600080fd5b8235612d5a816129c4565b915060208301358015158114612d6f57600080fd5b809150509250929050565b60008060008060808587031215612d9057600080fd5b8435612d9b816129c4565b93506020850135612dab816129c4565b925060408501359150606085013567ffffffffffffffff811115612dce57600080fd5b8501601f81018713612ddf57600080fd5b612dee87823560208401612afa565b91505092959194509250565b60008060408385031215612e0d57600080fd5b8235612e18816129c4565b91506020830135612d6f816129c4565b600181811c90821680612e3c57607f821691505b60208210811415612e76577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ebd57612ebd612e7c565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612efa57612efa612e7c565b500290565b600082612f35577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215612f4c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110612fb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061014073ffffffffffffffffffffffffffffffffffffffff808e168452808d166020850152508060408401528a5160e08285015261300161022085018261294e565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec0808584030161016086015261303f838361294e565b925060408d01519150808584030161018086015261305d838361294e565b925060608d0151915080858403016101a086015261307b838361294e565b925060808d0151915080858403016101c08601525061309a828261294e565b60a08d01516101e086015260c08d015161020086015273ffffffffffffffffffffffffffffffffffffffff8c16606086015292506130d6915050565b8760808301528660a08301526130ef60c0830187612f82565b8460e083015261311861010083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101208301529b9a5050505050505050505050565b8054600090600181811c908083168061314857607f831692505b6020808410821415613183577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b81801561319757600181146131c6576131f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284890196506131f3565b60008881526020902060005b868110156131eb5781548b8201529085019083016131d2565b505084890196505b50505050505092915050565b7f7b226e616d65223a20220000000000000000000000000000000000000000000081526000613231600a83018661312e565b7f222c20226465736372697074696f6e223a2022000000000000000000000000008152613261601382018661312e565b90507f220000000000000000000000000000000000000000000000000000000000000081528351613299816001840160208801612922565b7f7d000000000000000000000000000000000000000000000000000000000000006001929091019182015260020195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161330881601d850160208701612922565b91909101601d0192915050565b6000821982111561332857613328612e7c565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261336c608083018461294e565b9695505050505050565b60006020828403121561338857600080fd5b815161291b816128d0565b7f2c2022696d616765223a20220000000000000000000000000000000000000000815260006133c5600c83018561312e565b7f222c2022616e696d6174696f6e5f75726c223a2022000000000000000000000081526133f5601582018561312e565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b7f2c2022696d616765223a2022000000000000000000000000000000000000000081526000613456600c83018461312e565b7f220000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f2c2022616e696d6174696f6e5f75726c223a202200000000000000000000000081526000613456601483018461312e56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220aa91fffe016684114ae588f1dc7fb76b331009e5351e3c768f70c8b2c8dce14464736f6c634300080a0033"; - -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 43c17d2..0000000 --- a/src/typechain/factories/GatedNFT__factory.ts +++ /dev/null @@ -1,734 +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: 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 = - "0x608060405234801561001057600080fd5b5061352b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80636a627842116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461035f578063e985e9c514610372578063f2fde38b146103bb57600080fd5b806395d89b4114610331578063a22cb46514610339578063b88d4fde1461034c57600080fd5b8063715018a6116100bd578063715018a6146102f85780638da5cb5b14610300578063911e29e31461031e57600080fd5b80636a627842146102d257806370a08231146102e557600080fd5b806316f4d0221161013a5780632a55205a116101145780632a55205a1461026d57806342842e0e146102ac5780636352211e146102bf57600080fd5b806316f4d0221461022457806318160ddd1461024457806323b872dd1461025a57600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc5780630fc499f51461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a6101953660046128fe565b6103ce565b60405190151581526020015b60405180910390f35b6101b761042a565b6040516101a69190612998565b6101d76101d23660046129ab565b6104bc565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a3660046129f6565b61059b565b005b61020f61021f366004612a22565b610753565b60d1546101d79073ffffffffffffffffffffffffffffffffffffffff1681565b61024c6108f0565b6040519081526020016101a6565b61020f610268366004612a3f565b61090c565b61028061027b366004612a80565b6109ad565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a6565b61020f6102ba366004612a3f565b610a34565b6101d76102cd3660046129ab565b610a4f565b61024c6102e0366004612a22565b610b01565b61024c6102f3366004612a22565b610d12565b61020f610de0565b60975473ffffffffffffffffffffffffffffffffffffffff166101d7565b61020f61032c366004612bbd565b610e6d565b6101b76111f8565b61020f610347366004612d3c565b611207565b61020f61035a366004612d7a565b611216565b6101b761036d3660046129ab565b6112be565b61019a610380366004612dfa565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61020f6103c9366004612a22565b611354565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161480610424575061042482611484565b92915050565b60606065805461043990612e28565b80601f016020809104026020016040519081016040528092919081815260200182805461046590612e28565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105a682610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b3373ffffffffffffffffffffffffffffffffffffffff821614806106b8575073ffffffffffffffffffffffffffffffffffffffff81166000908152606a6020908152604080832033845290915290205460ff165b610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610569565b61074e8383611567565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b60d65473ffffffffffffffffffffffffffffffffffffffff163314610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f6e6c792063757272656e7420726563697069656e742063616e20757064617460448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b60d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fe8fc99c58149b88bd3261c7bfa0257cb6276c555f2afc047f7b9bcfa4b2d05e79060200160405180910390a150565b600060016108fd60c95490565b6109079190612eab565b905090565b6109163382611607565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61074e838383611777565b60d654600090819073ffffffffffffffffffffffffffffffffffffffff166109f157505060d65473ffffffffffffffffffffffffffffffffffffffff166000610a2d565b60d65460d75473ffffffffffffffffffffffffffffffffffffffff9091169061271090610a1e9086612ec2565b610a289190612eff565b915091505b9250929050565b61074e83838360405180602001604052806000815250611216565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610569565b60d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260009392610ba69291169063e053ea31906024015b602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190612f3a565b4361195a565b1015610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d354610c1a83610d12565b10610c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b6000610c8c60c95490565b905060d554811115610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f546f74616c20737570706c7920657868617573746564000000000000000000006044820152606401610569565b610d048382611994565b61042460c980546001019055565b600073ffffffffffffffffffffffffffffffffffffffff8216610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610569565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b60975473ffffffffffffffffffffffffffffffffffffffff163314610e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b610e6b60006119ae565b565b600054610100900460ff16610e885760005460ff1615610e8c565b303b155b610f18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b600054610100900460ff16158015610f5757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b73ffffffffffffffffffffffffffffffffffffffff8316610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b610fe689600001518a60200151611a25565b610fee611ac6565b610ff78a611354565b60d180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055885180518a9160ca91611051918391602090910190612837565b50602082810151805161106a9260018501920190612837565b5060408201518051611086916002840191602090910190612837565b50606082015180516110a2916003840191602090910190612837565b50608082015180516110be916004840191602090910190612837565b5060a0820151600582015560c09091015160069091015560d287905560d386905560d480548691907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561111c5761111c612f53565b021790555060d584905560d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560d782905560c9805460010190557fd85dcc7cee7af91644138b69b9dea25e7697ddbe6a27aa23720ab19a86581f40308b8b8b8b8b8b8b8b8b6040516111b59a99989796959493929190612fbd565b60405180910390a180156111ec57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50505050505050505050565b60606066805461043990612e28565b611212338383611b65565b5050565b6112203383611607565b6112ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b6112b884848484611c93565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1661134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f6e6578697374656e7420746f6b656e0000000000000000000000000000006044820152606401610569565b610424611d36565b60975473ffffffffffffffffffffffffffffffffffffffff1633146113d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b611481816119ae565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061151757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061042457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610424565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906115c182610a4f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff166116b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610569565b60006116c383610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061173257508373ffffffffffffffffffffffffffffffffffffffff1661171a846104bc565b73ffffffffffffffffffffffffffffffffffffffff16145b8061176f575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b600060d45460ff16600281111561179057611790612f53565b14156117f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5472616e73666572206e6f7420737570706f72746564000000000000000000006044820152606401610569565b600260d45460ff16600281111561181157611811612f53565b14156118dc5760d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261187492169063e053ea3190602401610b5f565b10156118dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d3546118e883610d12565b1061194f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b61074e838383611d91565b6000805b600881101561198a57828160200285901c63ffffffff161115611982579050610424565b60010161195e565b5060089392505050565b611212828260405180602001604052806000815250611ff8565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16611abc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b611212828261209b565b600054610100900460ff16611b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b612159565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611c9e848484611777565b611caa848484846121f9565b6112b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b6060611d6d60ca60cc611d476123e9565b604051602001611d59939291906131ff565b60405160208183030381529060405261249c565b604051602001611d7d91906132d0565b604051602081830303815290604052905090565b8273ffffffffffffffffffffffffffffffffffffffff16611db182610a4f565b73ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610569565b73ffffffffffffffffffffffffffffffffffffffff8216611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610569565b611f01600082611567565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290611f37908490612eab565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290611f72908490613315565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6120028383612675565b61200f60008484846121f9565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b600054610100900460ff16612132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b8151612145906065906020850190612837565b50805161074e906066906020840190612837565b600054610100900460ff166121f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b336119ae565b600073ffffffffffffffffffffffffffffffffffffffff84163b156123de576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061227090339089908890889060040161332d565b6020604051808303816000875af19250505080156122c9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526122c691810190613376565b60015b612393573d8080156122f7576040519150601f19603f3d011682016040523d82523d6000602084013e6122fc565b606091505b50805161238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061176f565b506001949350505050565b606060008060ca60040180546123fe90612e28565b905011905060008060ca600301805461241690612e28565b90501190508180156124255750805b156124555760405161243f9060ce9060cd90602001613393565b6040516020818303038152906040529250505090565b811561246d5760405161243f9060ce90602001613424565b80156124855760405161243f9060cd90602001613483565b604051806020016040528060008152509250505090565b60608151600014156124bc57505060408051602081019091526000815290565b60006040518060600160405280604081526020016134b660409139905060006003845160026124eb9190613315565b6124f59190612eff565b612500906004612ec2565b9050600061250f826020613315565b67ffffffffffffffff81111561252757612527612aa2565b6040519080825280601f01601f191660200182016040528015612551576020820181803683370190505b509050818152600183018586518101602084015b818310156125bd576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f8116850151825350600101612565565b6003895106600181146125d7576002811461262157612667565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152612667565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166126f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610569565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff161561277e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff821660009081526068602052604081208054600192906127b4908490613315565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461284390612e28565b90600052602060002090601f01602090048101928261286557600085556128ab565b82601f1061287e57805160ff19168380011785556128ab565b828001600101855582156128ab579182015b828111156128ab578251825591602001919060010190612890565b506128b79291506128bb565b5090565b5b808211156128b757600081556001016128bc565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461148157600080fd5b60006020828403121561291057600080fd5b813561291b816128d0565b9392505050565b60005b8381101561293d578181015183820152602001612925565b838111156112b85750506000910152565b60008151808452612966816020860160208601612922565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061291b602083018461294e565b6000602082840312156129bd57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461148157600080fd5b80356129f1816129c4565b919050565b60008060408385031215612a0957600080fd5b8235612a14816129c4565b946020939093013593505050565b600060208284031215612a3457600080fd5b813561291b816129c4565b600080600060608486031215612a5457600080fd5b8335612a5f816129c4565b92506020840135612a6f816129c4565b929592945050506040919091013590565b60008060408385031215612a9357600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715612af457612af4612aa2565b60405290565b600067ffffffffffffffff80841115612b1557612b15612aa2565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612b5b57612b5b612aa2565b81604052809350858152868686011115612b7457600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612b9f57600080fd5b61291b83833560208501612afa565b8035600381106129f157600080fd5b60008060008060008060008060006101208a8c031215612bdc57600080fd5b8935612be7816129c4565b985060208a013567ffffffffffffffff80821115612c0457600080fd5b908b019060e0828e031215612c1857600080fd5b612c20612ad1565b823582811115612c2f57600080fd5b612c3b8f828601612b8e565b825250602083013582811115612c5057600080fd5b612c5c8f828601612b8e565b602083015250604083013582811115612c7457600080fd5b612c808f828601612b8e565b604083015250606083013582811115612c9857600080fd5b612ca48f828601612b8e565b606083015250608083013582811115612cbc57600080fd5b612cc88f828601612b8e565b60808301525060a083013560a082015260c083013560c0820152809a50505050612cf460408b016129e6565b965060608a0135955060808a01359450612d1060a08b01612bae565b935060c08a01359250612d2560e08b016129e6565b91506101008a013590509295985092959850929598565b60008060408385031215612d4f57600080fd5b8235612d5a816129c4565b915060208301358015158114612d6f57600080fd5b809150509250929050565b60008060008060808587031215612d9057600080fd5b8435612d9b816129c4565b93506020850135612dab816129c4565b925060408501359150606085013567ffffffffffffffff811115612dce57600080fd5b8501601f81018713612ddf57600080fd5b612dee87823560208401612afa565b91505092959194509250565b60008060408385031215612e0d57600080fd5b8235612e18816129c4565b91506020830135612d6f816129c4565b600181811c90821680612e3c57607f821691505b60208210811415612e76577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ebd57612ebd612e7c565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612efa57612efa612e7c565b500290565b600082612f35577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215612f4c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110612fb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061014073ffffffffffffffffffffffffffffffffffffffff808e168452808d166020850152508060408401528a5160e08285015261300161022085018261294e565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec0808584030161016086015261303f838361294e565b925060408d01519150808584030161018086015261305d838361294e565b925060608d0151915080858403016101a086015261307b838361294e565b925060808d0151915080858403016101c08601525061309a828261294e565b60a08d01516101e086015260c08d015161020086015273ffffffffffffffffffffffffffffffffffffffff8c16606086015292506130d6915050565b8760808301528660a08301526130ef60c0830187612f82565b8460e083015261311861010083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101208301529b9a5050505050505050505050565b8054600090600181811c908083168061314857607f831692505b6020808410821415613183577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b81801561319757600181146131c6576131f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284890196506131f3565b60008881526020902060005b868110156131eb5781548b8201529085019083016131d2565b505084890196505b50505050505092915050565b7f7b226e616d65223a20220000000000000000000000000000000000000000000081526000613231600a83018661312e565b7f222c20226465736372697074696f6e223a2022000000000000000000000000008152613261601382018661312e565b90507f220000000000000000000000000000000000000000000000000000000000000081528351613299816001840160208801612922565b7f7d000000000000000000000000000000000000000000000000000000000000006001929091019182015260020195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161330881601d850160208701612922565b91909101601d0192915050565b6000821982111561332857613328612e7c565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261336c608083018461294e565b9695505050505050565b60006020828403121561338857600080fd5b815161291b816128d0565b7f2c2022696d616765223a20220000000000000000000000000000000000000000815260006133c5600c83018561312e565b7f222c2022616e696d6174696f6e5f75726c223a2022000000000000000000000081526133f5601582018561312e565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b7f2c2022696d616765223a2022000000000000000000000000000000000000000081526000613456600c83018461312e565b7f220000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f2c2022616e696d6174696f6e5f75726c223a202200000000000000000000000081526000613456601483018461312e56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220aa91fffe016684114ae588f1dc7fb76b331009e5351e3c768f70c8b2c8dce14464736f6c634300080a0033"; - -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/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/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/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/IBPool__factory.ts b/src/typechain/factories/IERC20Permit__factory.ts similarity index 52% rename from src/typechain/factories/IBPool__factory.ts rename to src/typechain/factories/IERC20Permit__factory.ts index 0dc9c3c..ac8c447 100644 --- a/src/typechain/factories/IBPool__factory.ts +++ b/src/typechain/factories/IERC20Permit__factory.ts @@ -4,18 +4,31 @@ import { Contract, Signer, utils } from "ethers"; import { Provider } from "@ethersproject/providers"; -import type { IBPool, IBPoolInterface } from "../IBPool"; +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: "token", + name: "owner", type: "address", }, ], - name: "getBalance", + name: "nonces", outputs: [ { internalType: "uint256", @@ -30,67 +43,56 @@ const _abi = [ inputs: [ { internalType: "address", - name: "token", + name: "owner", type: "address", }, - ], - name: "gulp", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ { internalType: "address", - name: "tokenIn", + name: "spender", type: "address", }, { internalType: "uint256", - name: "tokenAmountIn", + name: "value", type: "uint256", }, - { - internalType: "address", - name: "tokenOut", - type: "address", - }, { internalType: "uint256", - name: "minAmountOut", + name: "deadline", type: "uint256", }, { - internalType: "uint256", - name: "maxPrice", - type: "uint256", + internalType: "uint8", + name: "v", + type: "uint8", }, - ], - name: "swapExactAmountIn", - outputs: [ { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", + internalType: "bytes32", + name: "r", + type: "bytes32", }, { - internalType: "uint256", - name: "spotPriceAfter", - type: "uint256", + internalType: "bytes32", + name: "s", + type: "bytes32", }, ], + name: "permit", + outputs: [], stateMutability: "nonpayable", type: "function", }, ]; -export class IBPool__factory { +export class IERC20Permit__factory { static readonly abi = _abi; - static createInterface(): IBPoolInterface { - return new utils.Interface(_abi) as IBPoolInterface; + static createInterface(): IERC20PermitInterface { + return new utils.Interface(_abi) as IERC20PermitInterface; } - static connect(address: string, signerOrProvider: Signer | Provider): IBPool { - return new Contract(address, _abi, signerOrProvider) as IBPool; + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC20Permit { + return new Contract(address, _abi, signerOrProvider) as IERC20Permit; } } 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/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/LibCommitmentTest__factory.ts b/src/typechain/factories/LibCommitmentTest__factory.ts new file mode 100644 index 0000000..1c17285 --- /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: "nil", + outputs: [ + { + internalType: "Commitment", + name: "nil_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610164806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632c22f45514610046578063320cbc3f1461005c57806332148d731461006f575b600080fd5b60005b6040519081526020015b60405180910390f35b61004961006a3660046100f3565b610091565b61008161007d36600461010c565b1490565b6040519015158152602001610053565b600061009c826100a2565b92915050565b6000816040516020016100b791815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b60006020828403121561010557600080fd5b5035919050565b6000806040838503121561011f57600080fd5b5050803592602090910135915056fea26469706673582212207ca21d5283ef0effa3b22f718205b48d374084150a9c706322680ec20116ce3d64736f6c634300080a0033"; + +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..f035307 --- /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 = + "0x608060405234801561001057600080fd5b5060cd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632d586d6014602d575b600080fd5b606460383660046076565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b60405190815260200160405180910390f35b60008060408385031215608857600080fd5b5050803592602090910135915056fea26469706673582212206e991384b9201b7453f2d9afa7e85bfd1f7868821cf13de494e715ff7c80a9c664736f6c634300080a0033"; + +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/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..1d69915 --- /dev/null +++ b/src/typechain/factories/OrderBookStateBuilder__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 { + 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: "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 = + "0x608060405234801561001057600080fd5b50611e4b806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d5236cd14610051578063661b810d1461006f578063aa9628a114610077578063ce19c93514610097575b600080fd5b6100596100ac565b604051610066919061163f565b60405180910390f35b6100596100c3565b61008a610085366004611997565b6100d5565b6040516100669190611ab5565b6100aa6100a5366004611b06565b6103b0565b005b60606100be6100b96107b8565b610823565b905090565b60606100be6100d06109f4565b610a4f565b606060006100e285610c21565b905060006100f38260200151610f86565b905060008060006101026100c3565b9050600061010e6100ac565b905060005b88518110156101d857866000015161ffff1689828151811061013757610137611ba1565b602002602001015160a001818152505061016c83838c8c858151811061015f5761015f611ba1565b60200260200101516103b0565b61019c89828151811061018157610181611ba1565b60200260200101516080015186610fba90919063ffffffff16565b94506101ce8982815181106101b3576101b3611ba1565b60200260200101516060015185610fba90919063ffffffff16565b9350600101610113565b506000848a60200151510167ffffffffffffffff8111156101fb576101fb611683565b604051908082528060200260200182016040528015610224578160200160208202803683370190505b50905060005b8a602001515181101561027a578a60200151818151811061024d5761024d611ba1565b602002602001015182828151811061026757610267611ba1565b602090810291909101015260010161022a565b5089515160009067ffffffffffffffff81111561029957610299611683565b6040519080825280602002602001820160405280156102cc57816020015b60608152602001906001900390816102b75790505b50905060005b8b515181101561032857610303888d6000015183815181106102f6576102f6611ba1565b6020026020010151610fd3565b82828151811061031557610315611ba1565b60209081029190910101526001016102d2565b506103a06040518060a00160405280600081526020018767ffffffffffffffff81111561035757610357611683565b604051908082528060200260200182016040528015610380578160200160208202803683370190505b5081526020018381526020018481526020018d6020015151815250611163565b9c9b505050505050505050505050565b80518251518110610422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000808060008060208602602001885101519050805193505b838510156106cb576002850194508481015180601e1a935080601f1a925050600683101561060c57826104ec5787602001515187608001510182106104dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4f4f425f434f4e5354414e5400000000000000000000000000000000000000006044820152606401610419565b60408701805160010190526106ae565b600183141561056257866040015182106104dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4f425f535441434b00000000000000000000000000000000000000000000006044820152606401610419565b600283141561057b5760408701805160010190526106ae565b60038314156105f1578660a0015182106104dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f4f425f53544f524147450000000000000000000000000000000000000000006044820152606401610419565b6004831415610607576106078a8a8a8a866112a0565b6106ae565b60008a848151811061062057610620611ba1565b60200260200101519050600581111561064557806106418463ffffffff8316565b9150505b60408801805182900390819052606089015161066091610fba565b606089015289516000908b908690811061067c5761067c611ba1565b6020026020010151905060058111156106a1578061069d8563ffffffff8316565b9150505b6040890180519091019052505b604087015160608801516106c191610fba565b606088015261043b565b606087015160ff101561073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b00000000000000000000000000000000000000000000006044820152606401610419565b8660200151876040015110156107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e4445580000000000000000000000000000006044820152606401610419565b50505050505050505050565b604080516002808252606080830184529260009291906020830190803683370190505090506001816000815181106107f2576107f2611ba1565b60200260200101818152505060018160018151811061081357610813611ba1565b6020908102919091010152919050565b60606000825190506000604051806105e00160405280836028600601018152602001600181526020016001815260200160018152602001600181526020016000815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016108a961134390565b81526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152509050604051602083020160405280925060005b828110156109ec578481815181106109b9576109b9611ba1565b60200260200101518460286006018301815181106109d9576109d9611ba1565b602090810291909101015260010161099f565b505050919050565b60408051600280825260608083018452926000929190602083019080368337019050509050600181600081518110610a2e57610a2e611ba1565b60200260200101818152505060028160018151811061081357610813611ba1565b8051606090600061134390506000604051806105e0016040528084602860060101815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160028152602001600181526020016003815260200160028152602001600281526020016002815260200160038152602001610ad96113b290565b81526020016000815260200160008152602001600081526020016000815260200160018152602001600281526020016002815260200160018152602001600181526020018381526020016003815260200160028152602001838152602001600281526020016001815260200160028152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001610b9761142790565b815260200161142d815260026020820152604001611433815260200160028152509050604051602084020160405280935060005b83811015610c1857858181518110610be557610be5611ba1565b6020026020010151856028600601830181518110610c0557610c05611ba1565b6020908102919091010152600101610bcb565b50505050919050565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff84811682528183529083902083518085019094525461ffff8116845262010000900416908201819052610f815760008273ffffffffffffffffffffffffffffffffffffffff163b11610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f53495a455f564d00000000000000000000000000000000000000000000006044820152606401610419565b60008273ffffffffffffffffffffffffffffffffffffffff1663ea7cb3706040518163ffffffff1660e01b8152600401600060405180830381865afa158015610d47573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d8d9190810190611bd0565b905060008373ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190611c47565b905061ffff801681602001511115610e73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4f425f53544f524147455f4f50434f444553000000000000000000000000006044820152606401610419565b6002825181610e8457610e84611c96565b0615610eec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f504f494e54455253000000000000000000000000000000006044820152606401610419565b6040518060400160405280826020015161ffff168152602001610f0e846114a0565b73ffffffffffffffffffffffffffffffffffffffff908116909152858116600090815260208181526040909120835181549285015190931662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090921661ffff90931692909217179055925050505b919050565b6060610fb48260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61152b565b92915050565b600081831015610fca5781610fcc565b825b9392505050565b805182516060919060011615611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4f44445f5041434b45445f5054525300000000000000000000000000000000006044820152606401610419565b60028106156110b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e4754480000000000000000000000000000006044820152606401610419565b60006002600383020467ffffffffffffffff8111156110d1576110d1611683565b6040519080825280601f01601f1916602001820160405280156110fb576020820181803683370190505b50905060056002808701908681019085880101600385015b8183101561115557825180601e1a868111156111345760020285015161ffff165b81601f1a8160081b1783511783525050600283019250600381019050611113565b509398975050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016111af9190611cc5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526111eb9291602001611cfb565b604051602081830303815290604052905060005b85604001515181101561129757818660400151828151811061122357611223611ba1565b60200260200101515160001b8760400151838151811061124557611245611ba1565b602002602001015160405160200161125f93929190611d21565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905291506001016111ff565b50949350505050565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916112ea9190610fba565b606084015260808301516112fe9082610fba565b60808401528251600783168085526001600385811c161b919060005b838110156113365761132e8a8a8a8a6103b0565b60010161131a565b5050909352505050505050565b60008082116113ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f305f4f504552414e445f4e5a4f4e0000000000000000000000000000000000006044820152606401610419565b5090565b600080821161141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f305f4f504552414e445f455243313135350000000000000000000000000000006044820152606401610419565b5060020260010190565b60020190565b60030190565b6000601f821680610fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e440000000000000000000000000000000000000000006044820152606401610419565b6000806114cb836040516020016114b79190611d58565b604051602081830303815290604052611613565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611525576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b8061154a575050604080516020810190915260008152610fcc565b80841115611568575050604080516020810190915260008152610fcc565b838310156115b3576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610419565b83830384820360008282106115c857826115ca565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6060815182604051602001611629929190611d7e565b6040516020818303038152906040529050919050565b6020808252825182820181905260009190848201906040850190845b818110156116775783518352928401929184019160010161165b565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156116d5576116d5611683565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561172257611722611683565b604052919050565b600067ffffffffffffffff82111561174457611744611683565b5060051b60200190565b600067ffffffffffffffff82111561176857611768611683565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126117a557600080fd5b813560206117ba6117b58361172a565b6116db565b82815260059290921b840181019181810190868411156117d957600080fd5b8286015b848110156117f457803583529183019183016117dd565b509695505050505050565b6000604080838503121561181257600080fd5b61181a6116b2565b9150823567ffffffffffffffff8082111561183457600080fd5b818501915085601f83011261184857600080fd5b813560206118586117b58361172a565b82815260059290921b8401810191818101908984111561187757600080fd5b8286015b848110156118eb578035868111156118935760008081fd5b8701603f81018c136118a55760008081fd5b848101356118b56117b58261174e565b8181528d8b8385010111156118ca5760008081fd5b818b840188830137600091810187019190915284525091830191830161187b565b508752508681013594508285111561190257600080fd5b61190e88868901611794565b81870152505050505092915050565b600060c0828403121561192f57600080fd5b60405160c0810181811067ffffffffffffffff8211171561195257611952611683565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b6000806000606084860312156119ac57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146119d057600080fd5b925060208481013567ffffffffffffffff808211156119ee57600080fd5b6119fa888389016117ff565b94506040870135915080821115611a1057600080fd5b508501601f81018713611a2257600080fd5b8035611a306117b58261172a565b81815260c0918202830184019184820191908a841115611a4f57600080fd5b938501935b83851015611a7557611a668b8661191d565b83529384019391850191611a54565b5080955050505050509250925092565b60005b83811015611aa0578181015183820152602001611a88565b83811115611aaf576000848401525b50505050565b6020815260008251806020840152611ad4816040850160208701611a85565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806101208587031215611b1d57600080fd5b843567ffffffffffffffff80821115611b3557600080fd5b611b4188838901611794565b95506020870135915080821115611b5757600080fd5b611b6388838901611794565b94506040870135915080821115611b7957600080fd5b50611b86878288016117ff565b925050611b96866060870161191d565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611be257600080fd5b815167ffffffffffffffff811115611bf957600080fd5b8201601f81018413611c0a57600080fd5b8051611c186117b58261174e565b818152856020838501011115611c2d57600080fd5b611c3e826020830160208601611a85565b95945050505050565b600060408284031215611c5957600080fd5b6040516040810181811067ffffffffffffffff82111715611c7c57611c7c611683565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b815160009082906020808601845b83811015611cef57815185529382019390820190600101611cd3565b50929695505050505050565b82815260008251611d13816020850160208701611a85565b919091016020019392505050565b60008451611d33818460208901611a85565b82018481528351611d4b816020808501908801611a85565b0160200195945050505050565b6000815260008251611d71816001850160208701611a85565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611e0781600e850160208701611a85565b91909101600e01939250505056fea264697066735822122049fbfc6ef96706b4fe3a9618b02581a34b2f4f93c41eb253734cb1fc970580e064736f6c634300080a0033"; + +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..2b034df --- /dev/null +++ b/src/typechain/factories/OrderBook__factory.ts @@ -0,0 +1,874 @@ +/* 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", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", + }, + { + 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", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", + }, + { + internalType: "uint256", + name: "tracking", + type: "uint256", + }, + { + internalType: "bytes", + name: "vmState", + type: "bytes", + }, + ], + indexed: false, + internalType: "struct Order", + name: "b_", + type: "tuple", + }, + { + components: [ + { + 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: "uint256", + name: "bBountyVaultId", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct ClearConfig", + name: "clearConfig", + 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: "uint256", + 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", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", + }, + { + 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", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", + }, + { + 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: "uint256", + 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: [ + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", + }, + { + 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", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", + }, + { + 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", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", + }, + { + internalType: "uint256", + name: "tracking", + type: "uint256", + }, + { + internalType: "bytes", + name: "vmState", + type: "bytes", + }, + ], + internalType: "struct Order", + name: "b_", + type: "tuple", + }, + { + components: [ + { + 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: "uint256", + name: "bBountyVaultId", + type: "uint256", + }, + ], + internalType: "struct ClearConfig", + name: "clearConfig_", + type: "tuple", + }, + ], + name: "clear", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + 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: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", + }, + { + 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: "uint256", + 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 = + "0x60c06040523480156200001157600080fd5b50604051620050bc380380620050bc83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a05161501a620000a260003960006112c2015260006112e3015261501a6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063e6b626361161005b578063e6b62636146100e7578063e87b2352146100fa578063ea7cb3701461010d578063fc4b772d1461012257600080fd5b806325311e28146100825780634f26618714610097578063e0419ae3146100aa575b600080fd5b610095610090366004613d28565b610135565b005b6100956100a5366004613d7b565b61025f565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6100956100f5366004613d7b565b6103b3565b6100956101083660046140b8565b6104ad565b61011561129c565b6040516100de91906141cd565b6100956101303660046141e0565b6112bb565b6101426020820182614215565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4f574e455200000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101ee6101e983614232565b611383565b60008181526001602052604090205490915061020a9060011490565b1561025b5760008181526001602052604080822091909155517f6c3699467706be5925b94206321bd22ef13067d7dcf1b580ffb22abd3959b3dd906102529033908590614355565b60405180910390a15b5050565b336000908152600260209081526040822090829061027f90850185614215565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081208584013582529092528082205492506102c690840135836113d2565b90506102d281836144a6565b336000908152600260209081526040822091906102f190870187614215565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085602001358152602001908152602001600020819055507f2538ccc7ad2a119a36f2e65c1e2fc908beef800cd59b5d6680db24de18e7847a338483604051610377939291906144f5565b60405180910390a16103ae33826103916020870187614215565b73ffffffffffffffffffffffffffffffffffffffff1691906113ec565b505050565b336000908152600260209081526040808320908401359290916103d890850185614215565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836020013581526020019081526020016000206000828254610436919061452d565b90915550506040517fadc7bd964a04a8a02261d33d2d09c6a7d9f539bc5eab77008e85fc6661ef12319061046d9033908490614545565b60405180910390a16104aa3330604084013561048c6020860186614215565b73ffffffffffffffffffffffffffffffffffffffff169291906114c0565b50565b60006104b884611383565b905060006104c584611383565b905083602001518360400135815181106104e1576104e161456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16856040015184602001358151811061051d5761051d61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16146105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b6020850151805184359081106105be576105be61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1684604001518460600135815181106105fa576105fa61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b60008281526001602052604090205461069c9060011490565b610702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f415f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b60008181526001602052604090205461071b9060011490565b610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f425f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6107ac6040518060800160405280600081526020016000815260200160008152602001600081525090565b6000806000807facbb15f57ab3ca81ed831c6405c26e41f3248dd68091bf194a9910873ebe679b338b8b8b6040516107e7949392919061466a565b60405180910390a16108216040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61082e8b60800151611524565b905061087261086a60405180604001604052808b81526020018d6000015173ffffffffffffffffffffffffffffffffffffffff16815250611690565b826000611713565b5080602001516001826000015103815181106108905761089061456f565b6020026020010151945080602001516002826000015103815181106108b7576108b761456f565b602002602001015192506108ce8a60800151611524565b905061090a61086a60405180604001604052808a81526020018e6000015173ffffffffffffffffffffffffffffffffffffffff16815250611690565b5080602001516001826000015103815181106109285761092861456f565b60200260200101519350806020015160028260000151038151811061094f5761094f61456f565b6020026020010151915050610a48600260008c6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c604001518b60200135815181106109bc576109bc61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c604001518b6020013581518110610a1e57610a1e61456f565b602002602001015160200151815260200190815260200160002054836113d290919063ffffffff16565b895173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040808220908c01518051939550610b1f9391929160608d0135908110610a9357610a9361456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b604001518b6060013581518110610af557610af561456f565b602002602001015160200151815260200190815260200160002054826113d290919063ffffffff16565b9050610b35610b2e82856119e6565b83906113d2565b8552610b4b610b4483866119e6565b82906113d2565b60208601528451151580610b63575060008560200151115b610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f434c4541520000000000000000000000000000000000000000000000000060448201526064016101d2565b8451610bd590856119e6565b60408601526020850151610be990846119e6565b606086015250508251159150610d5c9050578051865173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040808320908a01518051919392909190890135908110610c4457610c4461456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860400151876020013581518110610ca657610ca661456f565b60200260200101516020015181526020019081526020016000206000828254610ccf91906144a6565b9091555050606086015160011615610d0757805160008481526003602052604081208054909190610d0190849061452d565b90915550505b606086015160021615610d5c5780516000848152600460209081526040808320895173ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190610d5690849061452d565b90915550505b602081015115610eec57806020015160026000876000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760400151876060013581518110610dca57610dca61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760400151876060013581518110610e2c57610e2c61456f565b60200260200101516020015181526020019081526020016000206000828254610e5591906144a6565b9091555050606085015160011615610e94578060200151600360008481526020019081526020016000206000828254610e8e919061452d565b90915550505b606085015160021615610eec5760208082015160008481526004835260408082208a5173ffffffffffffffffffffffffffffffffffffffff168352909352918220805491929091610ee690849061452d565b90915550505b604081015115610fce57604080820151875173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529281209289015180519293928835908110610f3d57610f3d61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860200151876000013581518110610f9f57610f9f61456f565b60200260200101516020015181526020019081526020016000206000828254610fc8919061452d565b90915550505b6060810151156110cd57806060015160026000876000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876020015187604001358151811061103c5761103c61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876020015187604001358151811061109e5761109e61456f565b602002602001015160200151815260200190815260200160002060008282546110c7919061452d565b90915550505b606081015181516000916110e0916144a6565b90506000826040015183602001516110f891906144a6565b9050811561119e57336000908152600260209081526040808320908b01518051869492938b013590811061112e5761112e61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000886080013581526020019081526020016000206000828254611198919061452d565b90915550505b801561124257336000908152600260205260408082209089015180518493919060608b01359081106111d2576111d261456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860a001358152602001908152602001600020600082825461123c919061452d565b90915550505b505060408051825181526020808401519082015282820151818301526060808401519082015290517f3e673c18070310617c4b157f17e875bbc59a81b0f5107d346dfed8775de6f0f79181900360800190a1505050505050565b60606112b66112b16112ac611a05565b611aa6565b611cc7565b905090565b60006113107f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061130b8561474f565b611d06565b9050600061131d82611383565b6000818152600160205260409020549091506103ae5760008181526001602081905260409182902055517f39fe749efac6246708215e0335d6b2f4787e4d05f4fb80dd080d8f04103effa59061137690339085906148a0565b60405180910390a1505050565b60008160405160200161139691906148cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b60008183106113e157816113e3565b825b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103ae9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f18565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261151e9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161143e565b50505050565b6115566040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6115886040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156115bc576115bc613d97565b6040519080825280602002602001820160405280156115e5578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561161c5761161c613d97565b604051908082528060200260200182016040528015611645578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561167f578160208202602001840152815160200182019150600181019050611658565b505060408501525091949350505050565b60408051600280825260608083018452926020830190803683370190505090508160000151816000815181106116c8576116c861456f565b602002602001018181525050816020015173ffffffffffffffffffffffffffffffffffffffff16816001815181106117025761170261456f565b602002602001018181525050919050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156119cc576003890198508886015180601f1a975061ffff8160081c169850506006881015611944578761179657866020028401518252602082019150611957565b60018814156117b357602087028301518252602082019150611957565b600288141561183d578c518710611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016101d2565b866020026020018d01518252602082019150611957565b60038814156118855760006118736040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611957565b60048814156118a15761189a8d8d848a612024565b9150611957565b6060876118cf578c6040516020016118b99190614988565b604051602081830303815290604052905061192e565b60018814156118e8576118e18d612191565b905061192e565b6002881415611904576020808e01516040516118b99201614a1f565b600388141561192e578c516040805160208101929092520160405160208183030381529060405290505b80511561193e5761193e816122ce565b50611957565b87611953888463ffffffff8416565b9250505b60208c0151518c5111156119c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016101d2565b611751565b6020838303048c52509750505050505050505b9392505050565b6000670de0b6b3a76400006119fb8385614a84565b6113e39190614ac1565b6040805160028082526060828101909352816020015b613d1e815260200190600190039081611a1b57905050905061235d81600081518110611a4957611a4961456f565b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505061239881600181518110611a8157611a8161456f565b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505090565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261241c60e0840181905261251061010085015261259c6101208501526126bd61014085015261016084015261276661018084015261286e6101a08401526129426101c0840152612b3f6101e0840152612b4a610200840152612b55610220840152612b60610240840152612b6b610260840152612b9f610280840152612c056102a0840152612c6b6102c0840152612c9f6102e0840152612cd3610300840152612d08610320840152612d63610340840152612db9610360840152612de2610380840152612e396103a0840152612e666103c0840152612ebd6103e0840152612f28610400840152612f85610420840152612fc3610440840152612ffc6104608401526130306104808401526130626104a08401526130946104c08401526130c66104e08401526130fa61050084015261314c6105208401526131856105408401526132376105608401526133646105808401526133c06105a084015261347a6105c0840152835190850201909252919082815b83811015611cbe57858181518110611c7d57611c7d61456f565b6020026020010151856028600601830181518110611c9d57611c9d61456f565b67ffffffffffffffff90921660209283029190910190910152600101611c63565b50505050919050565b60606020820182516020028101600284015b81831015611cf65782518151178152602090920191600201611cd9565b5050825160020283525090919050565b611d4e6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081526020016060815260200160008152602001606081525090565b611d876040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b611de16040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081611da85790505090508181600081518110611e0a57611e0a61456f565b60200260200101819052506040518060a001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018560000151815260200185602001518152602001611e618660400151600001516134f6565b81526020018773ffffffffffffffffffffffffffffffffffffffff1663aa9628a1888860400151866040518463ffffffff1660e01b8152600401611ea793929190614afc565b6000604051808303816000875af1158015611ec6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f0c9190810190614be4565b90529695505050505050565b6000611f7a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166135a39092919063ffffffff16565b8051909150156103ae5780806020019051810190611f989190614c52565b6103ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d2565b600060078216600383811c1682808261206357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006120ae565b826001141561208757506fffffffffffffffffffffffffffffffff905060806120ae565b82600214156120a3575067ffffffffffffffff905060406120ae565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156120d1576120d1613d97565b6040519080825280602002602001820160405280156120fa578160200160208202803683370190505b50905060208082019083028a03815b8b821015612121578151815260209182019101612109565b505060608b015160808c015160209081029091010160005b61010081101561217f5760208502830182845b82811015612168578051841c8a1682526020918201910161214c565b5050506121768e8e8b611713565b9b508501612139565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016121dd9190614a1f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526122199291602001614c74565b604051602081830303815290604052905060005b8560400151518110156122c55781866040015182815181106122515761225161456f565b60200260200101515160001b876040015183815181106122735761227361456f565b602002602001015160405160200161228d93929190614c9a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161222d565b50949350505050565b6104aa816040516024016122e291906141cd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526135ba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600360205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051600093845260046020908152604080862073ffffffffffffffffffffffffffffffffffffffff9093168652919052909220549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156124df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125039190614cd1565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561256c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125909190614cd1565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561268b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126af9190614cd1565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016124c2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284b9190614cea565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161266e565b60008060008467ffffffffffffffff81111561296057612960613d97565b604051908082528060200260200182016040528015612989578160200160208202803683370190505b50905060008567ffffffffffffffff8111156129a7576129a7613d97565b6040519080825280602002602001820160405280156129d0578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612a25578251815260209283019201612a0d565b5050602088028101602084015b81831015612a4a578251815260209283019201612a32565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612aa49087908790600401614d07565b600060405180830381865afa158015612ac1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612b079190810190614d74565b9050846020820160208a0281015b80821015612b30578151835260209283019290910190612b15565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261259082876135db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361250382612bff858a6135db565b9061365c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361250382612c65858a6135db565b906119e6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826125908287613671565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261259082876136bc565b6000602083028203805b83811015612cfd5780518015612cf4578252612cfd565b50602001612cdd565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612cfd578051612dda5760008252612cfd565b602001612dc3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612efb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612f1a57508051602090910190612f13838261371a565b9250612ecd565b505081526020019392505050565b6020828102820380516000928201835b8582108015612f6657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612f1a57508051602090910190612f7e8382613755565b9250612f38565b6020828102820380516000928201835b8582108015612fa45750826000105b15612f1a57508051602090910190612fbc8382613784565b9250612f95565b600060208302820380516000602083015b85811015612f1a5780518301915082821015612fef57600080fd5b9091508190602001612fd4565b600060208302820380516000602083015b85811015612f1a57805191508161302357600080fd5b918190049160200161300d565b6020828102820380516000928201835b85821015612f1a5750805160209091019061305b8184614f1a565b9250613040565b6020828102820380516000928201835b85821015612f1a5750805182811115613089578092505b602082019150613072565b6020828102820380516000928201835b85821015612f1a57508051828110156130bb578092505b6020820191506130a4565b600060208302820380516000602083015b85811015612f1a5780519150816130ed57600080fd5b91819006916020016130d7565b60006020830282038051600080602084015b8681101561313d57831561313557805192508284029150828483041461313157600080fd5b8193505b60200161310c565b50505081526020019392505050565b600060208302820380516000602083015b85811015612f1a578051830391508282111561317857600080fd5b909150819060200161315d565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061266e9086908690600401614f26565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061331090879087908790600401614f55565b602060405180830381865afa15801561332d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133519190614cd1565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612503838361379a565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156133ee576133ee613d97565b604051908082528060200260200182016040528015613417578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561345357815181602001860152602082019150602081019050613431565b50505190506000613466838389896137f9565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856134e785858585613949565b90955250949695505050505050565b6000602e602f600160026003855b87518110156135985760008882815181106135215761352161456f565b60200260200101519050600060018201825181015b80821015613588578151601f1a9250898310156135525761357d565b8983141561355f57998717995b8883141561356c57998617995b858b141561357d578b519450613588565b600282019150613536565b5050600190920191506135049050565b505050505050919050565b60606135b284846000856139ef565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008082601214156135f057839150506113e6565b826012111561361c5750601282900361360a81600a614f1a565b6136149085614a84565b9150506113e6565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161364b81600a614f1a565b6136149085614ac1565b5092915050565b6000816119fb670de0b6b3a764000085614a84565b600081810b6136815750816113e6565b60008260000b13156136a95761369882600a614f8a565b6136a29084614a84565b90506113e6565b60ff60008390031661364b81600a614f1a565b60008060128314156136d157839150506113e6565b82601211156136eb5750601282900361364b81600a614f1a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161360a81600a614f1a565b600082820183811061372c57806135b2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613764575060006113e6565b8282028284828161377757613777614a55565b04141561372c57806135b2565b60008183116137945760006113e3565b50900390565b60008060015b600881116137f15760006137b48683613b85565b905060006137c28684613b85565b905060006137d08383613784565b90506137e0856001860383613c32565b945050600190920191506137a09050565b509392505050565b835160009081908190819060015b6008811161393b5760009250828761384057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613844565b5060005b60005b838110156138f9576138728c82815181106138645761386461456f565b602002602001015184613b85565b95508a86116138c457886138915761388a86836113d2565b91506138bb565b60018914156138a45761388a8683613cbb565b6002891480156138b2575084155b156138bb578591505b600194506138f1565b896138f1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506138f9565b600101613847565b508361392257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b613930866001840383613c32565b955050600101613807565b509298975050505050505050565b60008260088111156139b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b6000855b858110156139e35763ffffffff6020820290811b199890981685891b179791506001016139bb565b50959695505050505050565b606082471015613a81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101d2565b73ffffffffffffffffffffffffffffffffffffffff85163b613aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613b289190614f99565b60006040518083038185875af1925050503d8060008114613b65576040519150601f19603f3d011682016040523d82523d6000602084013e613b6a565b606091505b5091509150613b7a828286613ccb565b979650505050505050565b6000816008811115613bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b82613c015760009150613655565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115613ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156113e157816113e3565b60608315613cda5750816119df565b825115613cea5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d291906141cd565b613d26614fb5565b565b600060208284031215613d3a57600080fd5b813567ffffffffffffffff811115613d5157600080fd5b820160a081850312156119df57600080fd5b600060608284031215613d7557600080fd5b50919050565b600060608284031215613d8d57600080fd5b6113e38383613d63565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613de957613de9613d97565b60405290565b60405160a0810167ffffffffffffffff81118282101715613de957613de9613d97565b6040516060810167ffffffffffffffff81118282101715613de957613de9613d97565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613e7c57613e7c613d97565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146104aa57600080fd5b8035613eb181613e84565b919050565b600067ffffffffffffffff821115613ed057613ed0613d97565b5060051b60200190565b600082601f830112613eeb57600080fd5b81356020613f00613efb83613eb6565b613e35565b82815260069290921b84018101918181019086841115613f1f57600080fd5b8286015b84811015613f675760408189031215613f3c5760008081fd5b613f44613dc6565b8135613f4f81613e84565b81528185013585820152835291830191604001613f23565b509695505050505050565b600067ffffffffffffffff821115613f8c57613f8c613d97565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613fc957600080fd5b8135613fd7613efb82613f72565b818152846020838601011115613fec57600080fd5b816020850160208301376000918101602001919091529392505050565b600060a0828403121561401b57600080fd5b614023613def565b905061402e82613ea6565b8152602082013567ffffffffffffffff8082111561404b57600080fd5b61405785838601613eda565b6020840152604084013591508082111561407057600080fd5b61407c85838601613eda565b604084015260608401356060840152608084013591508082111561409f57600080fd5b506140ac84828501613fb8565b60808301525092915050565b60008060008385036101008112156140cf57600080fd5b843567ffffffffffffffff808211156140e757600080fd5b6140f388838901614009565b9550602087013591508082111561410957600080fd5b5061411687828801614009565b93505060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561414957600080fd5b506040840190509250925092565b60005b8381101561417257818101518382015260200161415a565b8381111561151e5750506000910152565b6000815180845261419b816020860160208601614157565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006113e36020830184614183565b6000602082840312156141f257600080fd5b813567ffffffffffffffff81111561420957600080fd5b6135b284828501613d63565b60006020828403121561422757600080fd5b81356119df81613e84565b60006113e63683614009565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261427357600080fd5b830160208101925035905067ffffffffffffffff81111561429357600080fd5b8060061b36038313156142a557600080fd5b9250929050565b8183526000602080850194508260005b858110156143015781356142cf81613e84565b73ffffffffffffffffffffffffffffffffffffffff1687528183013583880152604096870196909101906001016142bc565b509495945050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152833561438381613e84565b166040830152614396602084018461423e565b60a060608501526143ab60e0850182846142ac565b9150506143bb604085018561423e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808685030160808701526143f18483856142ac565b9350606087013560a0870152608087013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe187360301831261443457600080fd5b918601918235915067ffffffffffffffff82111561445157600080fd5b81360387131561446057600080fd5b8584030160c0860152613b7a83826020850161430c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156144b8576144b8614477565b500390565b80356144c881613e84565b73ffffffffffffffffffffffffffffffffffffffff16825260208181013590830152604090810135910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260a0810161451f60208301856144bd565b826080830152949350505050565b6000821982111561454057614540614477565b500190565b73ffffffffffffffffffffffffffffffffffffffff83168152608081016119df60208301846144bd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020808501945080840160005b83811015614301578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016145b2565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160a0602085015261462460a085018261459e565b90506040830151848203604086015261463d828261459e565b91505060608301516060850152608083015184820360808601526146618282614183565b95945050505050565b600061012073ffffffffffffffffffffffffffffffffffffffff8716835280602084015261469a818401876145ef565b905082810360408401526146ae81866145ef565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b600082601f83011261470557600080fd5b81356020614715613efb83613eb6565b82815260059290921b8401810191818101908684111561473457600080fd5b8286015b84811015613f675780358352918301918301614738565b60006060823603121561476157600080fd5b614769613e12565b823567ffffffffffffffff8082111561478157600080fd5b61478d36838701613eda565b83526020915081850135818111156147a457600080fd5b6147b036828801613eda565b83850152506040850135818111156147c757600080fd5b850160403682900312156147da57600080fd5b6147e2613dc6565b8135838111156147f157600080fd5b820136601f82011261480257600080fd5b8035614810613efb82613eb6565b81815260059190911b8201860190868101903683111561482f57600080fd5b8784015b838110156148675780358881111561484b5760008081fd5b614859368b83890101613fb8565b845250918801918801614833565b508452505050818401358381111561487e57600080fd5b61488a368285016146f4565b9482019490945260408501525091949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006135b260408301846145ef565b6020815260006113e360208301846145ef565b600081518084526020808501945080840160005b83811015614301578151875295820195908201906001016148f6565b600082825180855260208086019550808260051b84010181860160005b8481101561497b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952614969838351614183565b9884019892509083019060010161492f565b5090979650505050505050565b60208152815160208201526000602083015160a060408401526149ae60c08401826148e2565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526149ea8383614912565b9250606086015191508085840301608086015250614a0882826148e2565b915050608084015160a08401528091505092915050565b815160009082906020808601845b83811015614a4957815185529382019390820190600101614a2d565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614abc57614abc614477565b500290565b600082614af7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a0865160408085880152614b3783880183614912565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a0152614b7284836148e2565b898103848b01528a51808252878c019550908701925060005b81811015614bd25785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c090930192600101614b8b565b50919c9b505050505050505050505050565b600060208284031215614bf657600080fd5b815167ffffffffffffffff811115614c0d57600080fd5b8201601f81018413614c1e57600080fd5b8051614c2c613efb82613f72565b818152856020838501011115614c4157600080fd5b614661826020830160208601614157565b600060208284031215614c6457600080fd5b815180151581146119df57600080fd5b82815260008251614c8c816020850160208701614157565b919091016020019392505050565b60008451614cac818460208901614157565b82018481528351614cc4816020808501908801614157565b0160200195945050505050565b600060208284031215614ce357600080fd5b5051919050565b600060208284031215614cfc57600080fd5b81516119df81613e84565b604080825283519082018190526000906020906060840190828701845b82811015614d5657815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614d24565b50505083810382850152614d6a81866148e2565b9695505050505050565b60006020808385031215614d8757600080fd5b825167ffffffffffffffff811115614d9e57600080fd5b8301601f81018513614daf57600080fd5b8051614dbd613efb82613eb6565b81815260059190911b82018301908381019087831115614ddc57600080fd5b928401925b82841015613b7a57835182529284019290840190614de1565b600181815b80851115614e5357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614e3957614e39614477565b80851615614e4657918102915b93841c9390800290614dff565b509250929050565b600082614e6a575060016113e6565b81614e77575060006113e6565b8160018114614e8d5760028114614e9757614eb3565b60019150506113e6565b60ff841115614ea857614ea8614477565b50506001821b6113e6565b5060208310610133831016604e8410600b8410161715614ed6575081810a6113e6565b614ee08383614dfa565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614f1257614f12614477565b029392505050565b60006113e38383614e5b565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006135b260408301846148e2565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061466160608301846148e2565b60006113e360ff841683614e5b565b60008251614fab818460208701614157565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea2646970667358221220c1d9279524d39e815ff5a69888b6e40e849ab5157442ba3ceaabeb3d6fa4ec2364736f6c634300080a0033"; + +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 deleted file mode 100644 index 7d69092..0000000 --- a/src/typechain/factories/OwnableUpgradeable__factory.ts +++ /dev/null @@ -1,78 +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: 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/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/PhasedScheduleTest__factory.ts b/src/typechain/factories/PhasedScheduleTest__factory.ts index f2bba9c..0de1e67 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"; + "0x608060405234801561001057600080fd5b5061001961001e565b610194565b600054600163ffffffff909116106100385761003861017e565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915261008960008260086100cd565b50604080513381526000602082018190528183015290517fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39181900360600190a150565b6001830191839082156101595791602002820160005b8382111561012757835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026100e3565b80156101575782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610127565b505b50610165929150610169565b5090565b5b80821115610165576000815560010161016a565b634e487b7160e01b600052600160045260246000fd5b61074e806101a36000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635d521c10116100505780635d521c101461009a57806393c96557146100ad578063e2c45a40146100d557600080fd5b8063055ad42e1461006c5780631cf355e814610087575b600080fd5b6100746100df565b6040519081526020015b60405180910390f35b6100746100953660046105af565b610149565b6100746100a83660046105af565b610188565b6100c06100bb366004610639565b6101d5565b60405163ffffffff909116815260200161007e565b6100dd610205565b005b60408051610100810191829052600091610144919083906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116100fd579050505050505042610188565b905090565b600080821161015957600061017b565b82610165600184610681565b6008811061017557610175610698565b60200201515b63ffffffff169392505050565b60005b60088110156101cf578281600881106101a6576101a6610698565b602002015163ffffffff168210156101bd576101cf565b806101c7816106c7565b91505061018b565b92915050565b600081600881106101e557600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b600061020f6100df565b905061021a81610244565b61022e610228826001610700565b426102be565b61024161023c826001610700565b610244565b50565b808061024e6100df565b146102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b80421115610328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016102b1565b63ffffffff8110610395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016102b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201806103c16100df565b14610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016102b1565b6000816008811061043b5761043b610698565b60088104919091015460079091166004026101000a900463ffffffff908116146104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016102b1565b81600082600881106104d5576104d5610698565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d333848460405161055a9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146105aa57600080fd5b919050565b60008061012083850312156105c357600080fd5b83601f8401126105d257600080fd5b60405161010080820182811067ffffffffffffffff821117156105f7576105f7610567565b6040528401818682111561060a57600080fd5b855b8281101561062b5761061d81610596565b82526020918201910161060c565b509196903595509350505050565b60006020828403121561064b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561069357610693610652565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156106f9576106f9610652565b5060010190565b6000821982111561071357610713610652565b50019056fea26469706673582212205a781da37236a1b50056073b30f46103781d9087b3280d753cae8fb4327b631c64736f6c634300080a0033"; 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/RainVM__factory.ts b/src/typechain/factories/RainVM__factory.ts new file mode 100644 index 0000000..2d22479 --- /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: "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", + }, +]; + +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/RandomTest__factory.ts b/src/typechain/factories/RandomTest__factory.ts new file mode 100644 index 0000000..1db61b2 --- /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 = + "0x608060405234801561001057600080fd5b506108e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806361d4ba9b1161005057806361d4ba9b146100b25780638f1ea97f146100c5578063bffa7fe8146100d857600080fd5b80631715b9ee1461006c57806329fa6d0214610092575b600080fd5b61007f61007a36600461069b565b61011d565b6040519081526020015b60405180910390f35b6100a56100a03660046106c7565b610132565b6040516100899190610719565b61007f6100c03660046106c7565b610194565b61007f6100d336600461076a565b6101af565b6000546100f89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610089565b600061012a8484846101fa565b949350505050565b606061013e83836103bc565b9050610149816104b6565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905592915050565b600260015560008281526020829052604081205b9392505050565b600180556000805473ffffffffffffffffffffffffffffffffffffffff166101d78184610541565b915060006101e6846001610783565b90506101f28282610541565b505050919050565b600082821061026a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4d41585f4e00000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60ff8311156102d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4d41585f4d4158000000000000000000000000000000000000000000000000006044820152606401610261565b60008367ffffffffffffffff8111156102f0576102f06107c2565b6040519080825280601f01601f19166020018201604052801561031a576020820181803683370190505b509050610337565b8082015160ff16806103315750815b92915050565b846000526020810160018201600186035b858111156103955761035a8183610322565b60206000908120908190526001830190068401537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610348565b5060206000908120908190526103b19060018701900682610322565b979650505050505050565b60608160020267ffffffffffffffff8111156103da576103da6107c2565b6040519080825280601f01601f191660200182016040528015610404576020820181803683370190505b50905082600052600281017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ffff600185035b80156104ac576002810284018051838116806104515750825b60206000208060005260018501810690506002810288018051878116806104755750825b948916909417909452509085161790527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610438565b5050505092915050565b6000806104e1836040516020016104cd91906107f1565b60405160208183030381529060405261056b565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661053b576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b600080826002029050600061055a858384600201610597565b6002015161ffff1695945050505050565b6060815182604051602001610581929190610817565b6040516020818303038152906040529050919050565b606061012a846105a8856001610783565b6105b3856001610783565b6060833b806105d25750506040805160208101909152600081526101a8565b808411156105f05750506040805160208101909152600081526101a8565b8383101561063b576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610261565b83830384820360008282106106505782610652565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6000806000606084860312156106b057600080fd5b505081359360208301359350604090920135919050565b600080604083850312156106da57600080fd5b50508035926020909101359150565b60005b838110156107045781810151838201526020016106ec565b83811115610713576000848401525b50505050565b60208152600082518060208401526107388160408501602087016106e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561077c57600080fd5b5035919050565b600082198211156107bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081526000825161080a8160018501602087016106e9565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516108a081600e8501602087016106e9565b91909101600e01939250505056fea2646970667358221220893685f6df8d6e94b160beea64ac68419db7a3c23c4a13cee395378d2b3e414364736f6c634300080a0033"; + +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/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..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", @@ -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: "context_", + 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: [ { @@ -75,9 +133,9 @@ const _abi = [ type: "uint256", }, { - internalType: "bytes", - name: "data_", - type: "bytes", + internalType: "uint256[]", + name: "context_", + type: "uint256[]", }, ], name: "setTier", @@ -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"; + "0x608060405234801561001057600080fd5b506109b2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80637877520411610076578063c29df2461161005b578063c29df2461461016d578063caa0eb3b14610180578063f0ef511b1461019357600080fd5b8063787752041461014757806388d686041461015a57600080fd5b80632633d728116100a75780632633d7281461010c5780633907cb4214610121578063696dd6c01461013457600080fd5b806301ffc9a7146100c357806318cc4ccb146100eb575b600080fd5b6100d66100d136600461070d565b6101a6565b60405190151581526020015b60405180910390f35b6100fe6100f936600461074f565b61023f565b6040519081526020016100e2565b61011f61011a3660046107f0565b610254565b005b6100fe61012f36600461084a565b61035f565b6100fe61014236600461087c565b610376565b6100fe61015536600461087c565b610389565b6100fe61016836600461089e565b610395565b6100fe61017b36600461084a565b610410565b6100fe61018e3660046107f0565b61041e565b6100fe6101a136600461087c565b610434565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061023957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061024c848484610440565b949350505050565b600083116102c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006102d0858484610395565b905060006102de82426104c9565b90506102ec828287426104f6565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f52b8983f2abd24802238c48c935834c5b55bf103d696008c516012af2e50e4279061034f903390899085908a908a908a906108f1565b60405180910390a1505050505050565b600061036d858585856104f6565b95945050505050565b600061038283836104c9565b9392505050565b60006103828383610516565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120546103e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61024c565b50505073ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061036d858585856105ba565b600061036d61042e868585610395565b85610660565b60006103828383610660565b60008260088111156104ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ba565b505063ffffffff602090920291821b199290921691901b1790565b60005b600881101561023957818160200284901c63ffffffff1611156104ee57610239565b6001016104cc565b60008383106105105761050b858585856105ba565b61036d565b61036d85845b6000816008811115610584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020840290811c901b841791505b5092915050565b6000826008811115610628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ba565b6000855b858110156106545763ffffffff6020820290811b199890981685891b1797915060010161062c565b50959695505050505050565b60008160088111156106ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ba565b826106dc57600091506105b3565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60006020828403121561071f57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461038257600080fd5b60008060006060848603121561076457600080fd5b505081359360208301359350604090920135919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461079f57600080fd5b919050565b60008083601f8401126107b657600080fd5b50813567ffffffffffffffff8111156107ce57600080fd5b6020830191508360208260051b85010111156107e957600080fd5b9250929050565b6000806000806060858703121561080657600080fd5b61080f8561077b565b935060208501359250604085013567ffffffffffffffff81111561083257600080fd5b61083e878288016107a4565b95989497509550505050565b6000806000806080858703121561086057600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561088f57600080fd5b50508035926020909101359150565b6000806000604084860312156108b357600080fd5b6108bc8461077b565b9250602084013567ffffffffffffffff8111156108d857600080fd5b6108e4868287016107a4565b9497909650939450505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a08301527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561095c57600080fd5b8260051b808560c08501376000920160c00191825250969550505050505056fea2646970667358221220f9d0e6978ca41e36586cb37fd0cd6c6704d83f6283f812ee63b207649dd3ecea64736f6c634300080a0033"; type ReadWriteTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts b/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts index 2e749d0..ff546c4 100644 --- a/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts +++ b/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts @@ -473,7 +473,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611991806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637e56cda8116100765780639bfeb1191161005b5780639bfeb11914610175578063d9caed12146101c5578063fa5839ab146101d857600080fd5b80637e56cda81461014f5780638340f5491461016257600080fd5b8063248a8572146100a85780634facc0b4146100bd5780635fc85b7d146100e257806370a9eeee146100f5575b600080fd5b6100bb6100b63660046115ce565b610231565b005b6100d06100cb366004611614565b6104c0565b60405190815260200160405180910390f35b6100bb6100f0366004611655565b610503565b6100d06101033660046116a0565b73ffffffffffffffffffffffffffffffffffffffff9384166000908152600560209081526040808320958716835294815284822093909516815291845282822090825290925290205490565b6100bb61015d366004611614565b6105cd565b6100bb610170366004611614565b6107a2565b6100d0610183366004611655565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209486168352938152838220929094168152925290205490565b6100bb6101d3366004611614565b6107d5565b6100d06101e63660046116f1565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168352948152848220938252928352838120919094168452905290205490565b600161023c85610afc565b600281111561024d5761024d611744565b146102b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008111610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260056020908152604080832093871683529281528282203383528152828220858352905290812080548392906103779084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352928152828220858352905290812080548392906103c89084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906104199084906117a2565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b69050338561044b81610ca0565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a16104ba73ffffffffffffffffffffffffffffffffffffffff84163383610e1b565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526006602090815260408083209386168352928152828220848352905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f33838661057381610ca0565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a16104ba84848484610eef565b60008111610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b600061064284610afc565b600281111561065357610653611744565b146106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526004602090815260408083209386168352928152828220338352905290812080548392906107069084906117b9565b909155506000905061071784610ca0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a16104ba73ffffffffffffffffffffffffffffffffffffffff841633308561123f565b6107ae83833384610eef565b6107d073ffffffffffffffffffffffffffffffffffffffff831633308461123f565b505050565b60026107e084610afc565b60028111156107f1576107f1611744565b14610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260066020908152604080832094871680845294825280832086845282528083205493835260038252808320948352938152838220858352815283822033835290529182205490916108c586610ca0565b73ffffffffffffffffffffffffffffffffffffffff87811660009081526003602090815260408083208a8516845282528083208984528252808320338085529252808320889055517f70a0823100000000000000000000000000000000000000000000000000000000815260048101919091529293509186918416906370a0823190602401602060405180830381865afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b91906117d1565b61099585876117a2565b61099f91906117ea565b6109a99190611827565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b1683529281528282208983529052908120805492935083929091906109fa9084906117a2565b909155505080610a66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f57495448445241570000000000000000000000000000000000000060448201526064016102b0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a1610af373ffffffffffffffffffffffffffffffffffffffff87163383610e1b565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610b3857610b38611744565b1115610b445792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb59190611862565b90506002816003811115610bcb57610bcb611744565b1415610c265750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610c3a57610c3a611744565b1415610c965750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610e155760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d409190611883565b905073ffffffffffffffffffffffffffffffffffffffff8116610dbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261129d565b6000610efa85610afc565b6002811115610f0b57610f0b611744565b11610f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e470000000000000000000000000000000000000000000000000060448201526064016102b0565b60008111610fdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b6000610fe785610ca0565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611036573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105a91906117d1565b9050600081116110c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c5900000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526005602090815260408083208985168452825280832093881683529281528282208483529052908120805485929061111c9084906117b9565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260066020908152604080832093891683529281528282208483529052908120805485929061116d9084906117b9565b909155505073ffffffffffffffffffffffffffffffffffffffff80871660009081526007602090815260408083209389168352928152828220848352905290812080548592906111be9084906117b9565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104ba9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610e6d565b60006112ff826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166113a99092919063ffffffff16565b8051909150156107d0578080602001905181019061131d91906118a0565b6107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102b0565b60606113b884846000856113c0565b949350505050565b606082471015611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102b0565b73ffffffffffffffffffffffffffffffffffffffff85163b6114d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114f991906118ee565b60006040518083038185875af1925050503d8060008114611536576040519150601f19603f3d011682016040523d82523d6000602084013e61153b565b606091505b509150915061154b828286611556565b979650505050505050565b606083156115655750816104fc565b8251156115755782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b0919061190a565b73ffffffffffffffffffffffffffffffffffffffff811681146115cb57600080fd5b50565b600080600080608085870312156115e457600080fd5b84356115ef816115a9565b935060208501356115ff816115a9565b93969395505050506040820135916060013590565b60008060006060848603121561162957600080fd5b8335611634816115a9565b92506020840135611644816115a9565b929592945050506040919091013590565b60008060006060848603121561166a57600080fd5b8335611675816115a9565b92506020840135611685816115a9565b91506040840135611695816115a9565b809150509250925092565b600080600080608085870312156116b657600080fd5b84356116c1816115a9565b935060208501356116d1816115a9565b925060408501356116e1816115a9565b9396929550929360600135925050565b6000806000806080858703121561170757600080fd5b8435611712816115a9565b93506020850135611722816115a9565b9250604085013591506060850135611739816115a9565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b6000602082840312156117e357600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561182257611822611773565b500290565b60008261185d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561187457600080fd5b8151600481106104fc57600080fd5b60006020828403121561189557600080fd5b81516104fc816115a9565b6000602082840312156118b257600080fd5b815180151581146104fc57600080fd5b60005b838110156118dd5781810151838201526020016118c5565b838111156104ba5750506000910152565b600082516119008184602087016118c2565b9190910192915050565b60208152600082518060208401526119298160408501602087016118c2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220ea9bda1a00aea5de2ce4ce1a69094213e2613c37ad0c1db4e4d88f42867ea0a464736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50611966806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637e56cda8116100765780639bfeb1191161005b5780639bfeb11914610175578063d9caed12146101c5578063fa5839ab146101d857600080fd5b80637e56cda81461014f5780638340f5491461016257600080fd5b8063248a8572146100a85780634facc0b4146100bd5780635fc85b7d146100e257806370a9eeee146100f5575b600080fd5b6100bb6100b63660046115a3565b610231565b005b6100d06100cb3660046115e9565b6104c0565b60405190815260200160405180910390f35b6100bb6100f036600461162a565b610503565b6100d0610103366004611675565b73ffffffffffffffffffffffffffffffffffffffff9384166000908152600560209081526040808320958716835294815284822093909516815291845282822090825290925290205490565b6100bb61015d3660046115e9565b6105cd565b6100bb6101703660046115e9565b6107a2565b6100d061018336600461162a565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209486168352938152838220929094168152925290205490565b6100bb6101d33660046115e9565b6107d5565b6100d06101e63660046116c6565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168352948152848220938252928352838120919094168452905290205490565b600161023c85610ad1565b600281111561024d5761024d611719565b146102b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008111610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352928152828220338352815282822085835290529081208054839290610377908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352928152828220858352905290812080548392906103c8908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff8085166000908152600760209081526040808320938716835292815282822085835290529081208054839290610419908490611777565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b69050338561044b81610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a16104ba73ffffffffffffffffffffffffffffffffffffffff84163383610df0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526006602090815260408083209386168352928152828220848352905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f33838661057381610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a16104ba84848484610ec4565b60008111610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b600061064284610ad1565b600281111561065357610653611719565b146106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061070690849061178e565b909155506000905061071784610c75565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a16104ba73ffffffffffffffffffffffffffffffffffffffff8416333085611214565b6107ae83833384610ec4565b6107d073ffffffffffffffffffffffffffffffffffffffff8316333084611214565b505050565b60026107e084610ad1565b60028111156107f1576107f1611719565b14610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600660209081526040808320948716808452948252808320868452825280832054938352600382528083209483529381528382208583528152838220338352905291822080549082905590916108ca86610c75565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906117a6565b61096a8587611777565b61097491906117bf565b61097e91906117fc565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b1683529281528282208983529052908120805492935083929091906109cf908490611777565b909155505080610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f57495448445241570000000000000000000000000000000000000060448201526064016102b0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a1610ac873ffffffffffffffffffffffffffffffffffffffff87163383610df0565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610b0d57610b0d611719565b1115610b195792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611837565b90506002816003811115610ba057610ba0611719565b1415610bfb5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610c0f57610c0f611719565b1415610c6b5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610dea5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d159190611858565b905073ffffffffffffffffffffffffffffffffffffffff8116610d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611272565b6000610ecf85610ad1565b6002811115610ee057610ee0611719565b11610f47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e470000000000000000000000000000000000000000000000000060448201526064016102b0565b60008111610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b6000610fbc85610c75565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f91906117a6565b90506000811161109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c5900000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600560209081526040808320898516845282528083209388168352928152828220848352905290812080548592906110f190849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260066020908152604080832093891683529281528282208483529052908120805485929061114290849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260076020908152604080832093891683529281528282208483529052908120805485929061119390849061178e565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104ba9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610e42565b60006112d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661137e9092919063ffffffff16565b8051909150156107d057808060200190518101906112f29190611875565b6107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102b0565b606061138d8484600085611395565b949350505050565b606082471015611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102b0565b73ffffffffffffffffffffffffffffffffffffffff85163b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ce91906118c3565b60006040518083038185875af1925050503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152b565b979650505050505050565b6060831561153a5750816104fc565b82511561154a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b091906118df565b73ffffffffffffffffffffffffffffffffffffffff811681146115a057600080fd5b50565b600080600080608085870312156115b957600080fd5b84356115c48161157e565b935060208501356115d48161157e565b93969395505050506040820135916060013590565b6000806000606084860312156115fe57600080fd5b83356116098161157e565b925060208401356116198161157e565b929592945050506040919091013590565b60008060006060848603121561163f57600080fd5b833561164a8161157e565b9250602084013561165a8161157e565b9150604084013561166a8161157e565b809150509250925092565b6000806000806080858703121561168b57600080fd5b84356116968161157e565b935060208501356116a68161157e565b925060408501356116b68161157e565b9396929550929360600135925050565b600080600080608085870312156116dc57600080fd5b84356116e78161157e565b935060208501356116f78161157e565b925060408501359150606085013561170e8161157e565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561178957611789611748565b500390565b600082198211156117a1576117a1611748565b500190565b6000602082840312156117b857600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117f7576117f7611748565b500290565b600082611832577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561184957600080fd5b8151600481106104fc57600080fd5b60006020828403121561186a57600080fd5b81516104fc8161157e565b60006020828403121561188757600080fd5b815180151581146104fc57600080fd5b60005b838110156118b257818101518382015260200161189a565b838111156104ba5750506000910152565b600082516118d5818460208701611897565b9190910192915050565b60208152600082518060208401526118fe816040850160208701611897565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122065d29449f5b19a418b3e039054621045490dcffafb80f72622c5d647c0ba00ae64736f6c634300080a0033"; type RedeemableERC20ClaimEscrowWrapperConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts b/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts index e8cc1a7..87fc265 100644 --- a/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts +++ b/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts @@ -347,7 +347,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611748806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637e56cda8116100505780637e56cda8146100945780638340f549146100a7578063d9caed12146100ba57600080fd5b8063248a85721461006c5780635fc85b7d14610081575b600080fd5b61007f61007a366004611429565b6100cd565b005b61007f61008f36600461146f565b61035c565b61007f6100a23660046114ba565b610426565b61007f6100b53660046114ba565b6105fb565b61007f6100c83660046114ba565b61062e565b60016100d885610955565b60028111156100e9576100e96114fb565b14610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e54000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352928152828220338352815282822085835290529081208054839290610213908490611559565b909155505073ffffffffffffffffffffffffffffffffffffffff8085166000908152600660209081526040808320938716835292815282822085835290529081208054839290610264908490611559565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906102b5908490611559565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b6905033856102e781610af9565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a161035673ffffffffffffffffffffffffffffffffffffffff84163383610c74565b50505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f3383866103cc81610af9565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a161035684848484610d48565b60008111610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b600061049b84610955565b60028111156104ac576104ac6114fb565b14610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061055f908490611570565b909155506000905061057084610af9565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a161035673ffffffffffffffffffffffffffffffffffffffff8416333085611098565b61060783833384610d48565b61062973ffffffffffffffffffffffffffffffffffffffff8316333084611098565b505050565b600261063984610955565b600281111561064a5761064a6114fb565b146106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f53554343455353000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600660209081526040808320948716808452948252808320868452825280832054938352600382528083209483529381528382208583528152838220338352905291822054909161071e86610af9565b73ffffffffffffffffffffffffffffffffffffffff87811660009081526003602090815260408083208a8516845282528083208984528252808320338085529252808320889055517f70a0823100000000000000000000000000000000000000000000000000000000815260048101919091529293509186918416906370a0823190602401602060405180830381865afa1580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190611588565b6107ee8587611559565b6107f891906115a1565b61080291906115de565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b168352928152828220898352905290812080549293508392909190610853908490611559565b9091555050806108bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f574954484452415700000000000000000000000000000000000000604482015260640161014c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a161094c73ffffffffffffffffffffffffffffffffffffffff87163383610c74565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610991576109916114fb565b111561099d5792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0e9190611619565b90506002816003811115610a2457610a246114fb565b1415610a7f5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610a9357610a936114fb565b1415610aef5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610c6e5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b99919061163a565b905073ffffffffffffffffffffffffffffffffffffffff8116610c18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106299084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110f6565b6000610d5385610955565b6002811115610d6457610d646114fb565b11610dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e4700000000000000000000000000000000000000000000000000604482015260640161014c565b60008111610e35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b6000610e4085610af9565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb39190611588565b905060008111610f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c59000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260056020908152604080832089851684528252808320938816835292815282822084835290529081208054859290610f75908490611570565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938916835292815282822084835290529081208054859290610fc6908490611570565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600760209081526040808320938916835292815282822084835290529081208054859290611017908490611570565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103569085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610cc6565b6000611158826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112029092919063ffffffff16565b80519091501561062957808060200190518101906111769190611657565b610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161014c565b6060611211848460008561121b565b90505b9392505050565b6060824710156112ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161014c565b73ffffffffffffffffffffffffffffffffffffffff85163b61132b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014c565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161135491906116a5565b60006040518083038185875af1925050503d8060008114611391576040519150601f19603f3d011682016040523d82523d6000602084013e611396565b606091505b50915091506113a68282866113b1565b979650505050505050565b606083156113c0575081611214565b8251156113d05782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c91906116c1565b73ffffffffffffffffffffffffffffffffffffffff8116811461142657600080fd5b50565b6000806000806080858703121561143f57600080fd5b843561144a81611404565b9350602085013561145a81611404565b93969395505050506040820135916060013590565b60008060006060848603121561148457600080fd5b833561148f81611404565b9250602084013561149f81611404565b915060408401356114af81611404565b809150509250925092565b6000806000606084860312156114cf57600080fd5b83356114da81611404565b925060208401356114ea81611404565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561156b5761156b61152a565b500390565b600082198211156115835761158361152a565b500190565b60006020828403121561159a57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115d9576115d961152a565b500290565b600082611614577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561162b57600080fd5b81516004811061121457600080fd5b60006020828403121561164c57600080fd5b815161121481611404565b60006020828403121561166957600080fd5b8151801515811461121457600080fd5b60005b8381101561169457818101518382015260200161167c565b838111156103565750506000910152565b600082516116b7818460208701611679565b9190910192915050565b60208152600082518060208401526116e0816040850160208701611679565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220ec4442479dfe0c9bff5bf592c824cdede3c2d2a242c92ab92b5b8c3cd21ae9a864736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061171d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637e56cda8116100505780637e56cda8146100945780638340f549146100a7578063d9caed12146100ba57600080fd5b8063248a85721461006c5780635fc85b7d14610081575b600080fd5b61007f61007a3660046113fe565b6100cd565b005b61007f61008f366004611444565b61035c565b61007f6100a236600461148f565b610426565b61007f6100b536600461148f565b6105fb565b61007f6100c836600461148f565b61062e565b60016100d88561092a565b60028111156100e9576100e96114d0565b14610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e54000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600560209081526040808320938716835292815282822033835281528282208583529052908120805483929061021390849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260066020908152604080832093871683529281528282208583529052908120805483929061026490849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906102b590849061152e565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b6905033856102e781610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a161035673ffffffffffffffffffffffffffffffffffffffff84163383610c49565b50505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f3383866103cc81610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a161035684848484610d1d565b60008111610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b600061049b8461092a565b60028111156104ac576104ac6114d0565b14610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061055f908490611545565b909155506000905061057084610ace565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a161035673ffffffffffffffffffffffffffffffffffffffff841633308561106d565b61060783833384610d1d565b61062973ffffffffffffffffffffffffffffffffffffffff831633308461106d565b505050565b60026106398461092a565b600281111561064a5761064a6114d0565b146106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f53554343455353000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482528083208684528252808320549383526003825280832094835293815283822085835281528382203383529052918220805490829055909161072386610ace565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b9919061155d565b6107c3858761152e565b6107cd9190611576565b6107d791906115b3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b16835292815282822089835290529081208054929350839290919061082890849061152e565b909155505080610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f574954484452415700000000000000000000000000000000000000604482015260640161014c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a161092173ffffffffffffffffffffffffffffffffffffffff87163383610c49565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610966576109666114d0565b11156109725792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906115ee565b905060028160038111156109f9576109f96114d0565b1415610a545750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610a6857610a686114d0565b1415610ac45750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610c435760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e919061160f565b905073ffffffffffffffffffffffffffffffffffffffff8116610bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106299084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110cb565b6000610d288561092a565b6002811115610d3957610d396114d0565b11610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e4700000000000000000000000000000000000000000000000000604482015260640161014c565b60008111610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b6000610e1585610ace565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e88919061155d565b905060008111610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c59000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260056020908152604080832089851684528252808320938816835292815282822084835290529081208054859290610f4a908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938916835292815282822084835290529081208054859290610f9b908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600760209081526040808320938916835292815282822084835290529081208054859290610fec908490611545565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103569085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610c9b565b600061112d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111d79092919063ffffffff16565b805190915015610629578080602001905181019061114b919061162c565b610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161014c565b60606111e684846000856111f0565b90505b9392505050565b606082471015611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161014c565b73ffffffffffffffffffffffffffffffffffffffff85163b611300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014c565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611329919061167a565b60006040518083038185875af1925050503d8060008114611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b509150915061137b828286611386565b979650505050505050565b606083156113955750816111e9565b8251156113a55782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9190611696565b73ffffffffffffffffffffffffffffffffffffffff811681146113fb57600080fd5b50565b6000806000806080858703121561141457600080fd5b843561141f816113d9565b9350602085013561142f816113d9565b93969395505050506040820135916060013590565b60008060006060848603121561145957600080fd5b8335611464816113d9565b92506020840135611474816113d9565b91506040840135611484816113d9565b809150509250925092565b6000806000606084860312156114a457600080fd5b83356114af816113d9565b925060208401356114bf816113d9565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611540576115406114ff565b500390565b60008219821115611558576115586114ff565b500190565b60006020828403121561156f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115ae576115ae6114ff565b500290565b6000826115e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561160057600080fd5b8151600481106111e957600080fd5b60006020828403121561162157600080fd5b81516111e9816113d9565b60006020828403121561163e57600080fd5b815180151581146111e957600080fd5b60005b83811015611669578181015183820152602001611651565b838111156103565750506000910152565b6000825161168c81846020870161164e565b9190910192915050565b60208152600082518060208401526116b581604085016020870161164e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e7d8f72cc3e17d819737c9cceac9c46c913b593d0818f62d2ef6b1f62bd5708f64736f6c634300080a0033"; type RedeemableERC20ClaimEscrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20Factory__factory.ts b/src/typechain/factories/RedeemableERC20Factory__factory.ts index 2e45b75..c33fbbb 100644 --- a/src/typechain/factories/RedeemableERC20Factory__factory.ts +++ b/src/typechain/factories/RedeemableERC20Factory__factory.ts @@ -174,7 +174,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61357a80610cf983390190565b608051610c356100c4600039600081816093015261037a0152610c356000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063c2bc3f31146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105f4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106c5565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610892565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108a5565b92915050565b600080610371838501856109e8565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f8246df0100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690638246df01906103f3908590600401610b06565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b820160a081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b803561050b816105c4565b60006020828403121561060657600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064657600080fd5b830160208101925035905067ffffffffffffffff81111561066657600080fd5b80360383131561067557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106d6816105c4565b73ffffffffffffffffffffffffffffffffffffffff8082166020850152602085013591507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301821261072a57600080fd5b60a060408501529084019061073f8280610611565b608060c08701526107556101408701828461067c565b9150506107656020840184610611565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408784030160e088015261079a83828461067c565b9250505060408301356107ac816105c4565b821661010086015260608301356101208601526107cb604087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660608701529250606086013560808601526107ff608087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660a087015292505b95945050505050565b6000815180845260005b8181101561084d57602081850181015186830182015201610831565b8181111561085f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610827565b6000602082840312156108b757600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610914576109146108c2565b60405290565b6040516080810167ffffffffffffffff81118282101715610914576109146108c2565b600082601f83011261094e57600080fd5b813567ffffffffffffffff80821115610969576109696108c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156109af576109af6108c2565b816040528381528660208588010111156109c857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156109fa57600080fd5b813567ffffffffffffffff80821115610a1257600080fd5b9083019060a08286031215610a2657600080fd5b610a2e6108f1565b8235610a39816105c4565b8152602083013582811115610a4d57600080fd5b830160808188031215610a5f57600080fd5b610a6761091a565b813584811115610a7657600080fd5b610a828982850161093d565b825250602082013584811115610a9757600080fd5b610aa38982850161093d565b60208301525060408201359350610ab9846105c4565b836040820152606082013560608201528060208401525050610add604084016105e9565b604082015260608301356060820152610af8608084016105e9565b608082015295945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152610b4d610140860182610827565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152610b888282610827565b91505082604083015116610100860152606082015161012086015260408601519250610bcc606086018473ffffffffffffffffffffffffffffffffffffffff169052565b606086015160808601526080860151925061081e60a086018473ffffffffffffffffffffffffffffffffffffffff16905256fea2646970667358221220d3af1f2e9d8b3b7f1c160ad9f5f16a0f1bc68ef872fb57f01b4b0a787f4f2d1a64736f6c634300080a0033608060405234801561001057600080fd5b5061355a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806379cc6790116100f9578063b7a3c82811610097578063e384346311610071578063e384346314610458578063e7ae91fe14610493578063f1ebd5dd146104a6578063f677de96146104af57600080fd5b8063b7a3c828146103ec578063b8ffd02c146103ff578063dd62ed3e1461041257600080fd5b806395d89b41116100d357806395d89b41146103965780639923c94b1461039e578063a457c2d7146103c6578063a9059cbb146103d957600080fd5b806379cc67901461035d5780638246df01146103705780638b24259b1461038357600080fd5b8063313ce56711610166578063395093511161014057806339509351146102ee57806342966c6814610301578063634991af1461031457806370a082311461032757600080fd5b8063313ce567146102915780633833be62146102a0578063392243e1146102b357600080fd5b8063095ea7b3116101a2578063095ea7b31461020e57806316f4d0221461023157806318160ddd1461027657806323b872dd1461027e57600080fd5b8063038ef03e146101c9578063055ad42e146101de57806306fdde03146101f9575b600080fd5b6101dc6101d7366004612d90565b6104c2565b005b6101e6610514565b6040519081526020015b60405180910390f35b61020161057f565b6040516101f09190612dd7565b61022161021c366004612e28565b610611565b60405190151581526020016101f0565b609c546102519073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f0565b6036546101e6565b61022161028c366004612e52565b61062b565b604051601281526020016101f0565b6101dc6102ae366004612d90565b610651565b6102216102c1366004612d90565b73ffffffffffffffffffffffffffffffffffffffff166000908152609b6020526040902054600116151590565b6102216102fc366004612e28565b61073b565b6101dc61030f366004612e8e565b610787565b6101e6610322366004612eea565b610794565b6101e6610335366004612d90565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101dc61036b366004612e28565b6107e8565b6101dc61037e366004612f74565b610801565b6101dc610391366004612d90565b610db4565b610201610f3c565b6103b16103ac366004612e8e565b610f4b565b60405163ffffffff90911681526020016101f0565b6102216103d4366004612e28565b610f7b565b6102216103e7366004612e28565b611057565b6101dc6103fa366004612e8e565b611065565b6101e661040d366004612eea565b611090565b6101e6610420366004612faf565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610221610466366004612d90565b73ffffffffffffffffffffffffffffffffffffffff166000908152609b6020526040902054600216151590565b6101dc6104a1366004612d90565b6110cf565b6101e6609d5481565b6101dc6104bd366004612fe2565b6111b4565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161057a91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610533579050505050505043610794565b905090565b60606037805461058e9061305d565b80601f01602080910402602001604051908101604052809291908181526020018280546105ba9061305d565b80156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b5050505050905090565b60003361061f818585611264565b60019150505b92915050565b600033610639858285611418565b6106448585856114e9565b60019150505b9392505050565b609a5473ffffffffffffffffffffffffffffffffffffffff1633146106d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000818152609b6020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b6479101610509565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061061f90829086906107829087906130e0565b611264565b61079133826117a7565b50565b6000805b60088110156107de578381600881106107b3576107b36130f8565b602002015163ffffffff168310156107cc579050610625565b806107d681613127565b915050610798565b5060089392505050565b6107f3823383611418565b6107fd82826117a7565b5050565b600054610100900460ff1661081c5760005460ff1615610820565b303b155b6108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ce565b600054610100900460ff161580156108eb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6108f361199d565b6109036060830160408401612d90565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109ec6109586020840184613160565b610962908061319e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109a4925050506020850185613160565b6109b290602081019061319e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a4792505050565b610a626040518060400160405280848060200190610a0a9190613160565b610a1b906060810190604001612d90565b73ffffffffffffffffffffffffffffffffffffffff168152602090810190610a4590860186612d90565b73ffffffffffffffffffffffffffffffffffffffff169052611ae8565b670de0b6b3a7640000610a786020840184613160565b606001351015610ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ce565b6060820135609d55610afc60a0830160808401612d90565b609e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556000808052609b602081815260037f10afac9233b4ccc54d6404ffc1cf3b47515a2b8edbf675d15eddce05a027dcbd5560019290610b8190860186613160565b610b92906060810190604001612d90565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609e541615610bf357609e5473ffffffffffffffffffffffffffffffffffffffff166000908152609b60205260409020600190555b610c006020830183613160565b610c11906060810190604001612d90565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610c8d610c666020840184613160565b610c77906060810190604001612d90565b610c846020850185613160565b60600135611ca6565b610c9d6101d76020840184612d90565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610cce9291906132b7565b60405180910390a1610ce66060830160408401612d90565b6040517fe053ea3100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063e053ea3190602401602060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190613419565b50610d82600143611dd2565b80156107fd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b600180610dbf610514565b14610e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ce565b609a5473ffffffffffffffffffffffffffffffffffffffff163314610ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ce565b610eb2600243611dd2565b609e5473ffffffffffffffffffffffffffffffffffffffff166000610ef98473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f365773ffffffffffffffffffffffffffffffffffffffff8216610f2b57610f2684826117a7565b610f36565b610f368483836114e9565b50505050565b60606038805461058e9061305d565b60018160088110610f5b57600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ce565b61104c8286868403611264565b506001949350505050565b60003361061f8185856114e9565b6098546099546107919173ffffffffffffffffffffffffffffffffffffffff9182169116308461207b565b60008082116110a05760006110c2565b826110ac600184613432565b600881106110bc576110bc6130f8565b60200201515b63ffffffff169392505050565b609a5473ffffffffffffffffffffffffffffffffffffffff163314611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ce565b73ffffffffffffffffffffffffffffffffffffffff81166000818152609b6020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade99101610509565b6002806111bf610514565b14611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ce565b610f36848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250612157915050565b73ffffffffffffffffffffffffffffffffffffffff8316611306576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff82166113a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f3657818110156114dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ce565b610f368484848403611264565b73ffffffffffffffffffffffffffffffffffffffff831661158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff821661162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b61163a8383836124fc565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156116f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906117349084906130e0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161179a91815260200190565b60405180910390a3610f36565b73ffffffffffffffffffffffffffffffffffffffff821661184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b611856826000836124fc565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603460205260409020548181101561190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260408120838303905560368054849290611948908490613432565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161140b565b505050565b6001805463ffffffff16106119b4576119b4613449565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a056001826008612c42565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d390606001610509565b600054610100900460ff16611ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ce565b6107fd82826127f2565b805173ffffffffffffffffffffffffffffffffffffffff163b611b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f454f415f53454e4445520000000000000000000000000000000000000000000060448201526064016106ce565b602081015173ffffffffffffffffffffffffffffffffffffffff16611be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5a45524f5f544f4b454e0000000000000000000000000000000000000000000060448201526064016106ce565b60995473ffffffffffffffffffffffffffffffffffffffff1615611c0e57611c0e613449565b80516098805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556020808501516099805491909516921682179093556040805133815293840192909252908201527fe67a5c2dcf68e8fac05314f53ecd2ff0b403ed683c4bfdad15eaec7a8a63f55590606001610509565b73ffffffffffffffffffffffffffffffffffffffff8216611d23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ce565b611d2f600083836124fc565b8060366000828254611d4191906130e0565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611d7b9084906130e0565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80431115611e3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f50415354000000000000000000000000000000000060448201526064016106ce565b63ffffffff8110611ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a4544000000000000000060448201526064016106ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611ed5610514565b14611f3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ce565b60018160088110611f4f57611f4f6130f8565b60088104919091015460079091166004026101000a900463ffffffff90811614611fd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f53455400000000000000000000000000000000000060448201526064016106ce565b8160018260088110611fe957611fe96130f8565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d333848460405161206e9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610f369085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526128b0565b815160008167ffffffffffffffff81111561217457612174612ea7565b60405190808252806020026020018201604052801561219d578160200160208202803683370190505b5090506000821161220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ce565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227b9190613419565b90506000805b8481101561246e57828688838151811061229d5761229d6130f8565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123379190613419565b6123419190613478565b61234b91906134b5565b9150600082116123b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ce565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106123eb576123eb6130f8565b60200260200101518885604051612436949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a181848281518110612451576124516130f8565b60209081029190910101528061246681613127565b915050612281565b5061247933866117a7565b60005b848110156124f3576124e13385838151811061249a5761249a6130f8565b60200260200101518984815181106124b4576124b46130f8565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166129bc9092919063ffffffff16565b806124eb81613127565b91505061247c565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561257c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ce565b6000811180156125e6575073ffffffffffffffffffffffffffffffffffffffff83166000908152609b60205260409020546002161515806125e4575073ffffffffffffffffffffffffffffffffffffffff82166000908152609b602052604090205460011615155b155b156119985760016125f5610514565b1461265c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ce565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609b60205260409020546001166126eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ce565b609d54609c546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261278a92169063e053ea3190602401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127849190613419565b43612a12565b1015611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ce565b600054610100900460ff16612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ce565b815161289c906037906020850190612cde565b508051611998906038906020840190612cde565b6000612912826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a429092919063ffffffff16565b805190915015611998578080602001905181019061293091906134f0565b611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ce565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526119989084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016120d5565b6000805b60088110156107de57828160200285901c63ffffffff161115612a3a579050610625565b600101612a16565b6060612a518484600085612a59565b949350505050565b606082471015612aeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff85163b612b69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ce565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b929190613512565b60006040518083038185875af1925050503d8060008114612bcf576040519150601f19603f3d011682016040523d82523d6000602084013e612bd4565b606091505b5091509150612be4828286612bef565b979650505050505050565b60608315612bfe57508161064a565b825115612c0e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce9190612dd7565b600183019183908215612cce5791602002820160005b83821115612c9c57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612c58565b8015612ccc5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612c9c565b505b50612cda929150612d52565b5090565b828054612cea9061305d565b90600052602060002090601f016020900481019282612d0c5760008555612cce565b82601f10612d2557805160ff1916838001178555612cce565b82800160010185558215612cce579182015b82811115612cce578251825591602001919060010190612d37565b5b80821115612cda5760008155600101612d53565b803573ffffffffffffffffffffffffffffffffffffffff81168114612d8b57600080fd5b919050565b600060208284031215612da257600080fd5b61064a82612d67565b60005b83811015612dc6578181015183820152602001612dae565b83811115610f365750506000910152565b6020815260008251806020840152612df6816040850160208701612dab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612e3b57600080fd5b612e4483612d67565b946020939093013593505050565b600080600060608486031215612e6757600080fd5b612e7084612d67565b9250612e7e60208501612d67565b9150604084013590509250925092565b600060208284031215612ea057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612d8b57600080fd5b6000806101208385031215612efe57600080fd5b83601f840112612f0d57600080fd5b60405161010080820182811067ffffffffffffffff82111715612f3257612f32612ea7565b60405284018186821115612f4557600080fd5b855b82811015612f6657612f5881612ed6565b825260209182019101612f47565b509196903595509350505050565b600060208284031215612f8657600080fd5b813567ffffffffffffffff811115612f9d57600080fd5b820160a0818503121561064a57600080fd5b60008060408385031215612fc257600080fd5b612fcb83612d67565b9150612fd960208401612d67565b90509250929050565b600080600060408486031215612ff757600080fd5b833567ffffffffffffffff8082111561300f57600080fd5b818601915086601f83011261302357600080fd5b81358181111561303257600080fd5b8760208260051b850101111561304757600080fd5b6020928301989097509590910135949350505050565b600181811c9082168061307157607f821691505b602082108114156130ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156130f3576130f36130b1565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613159576131596130b1565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261319457600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131d357600080fd5b83018035915067ffffffffffffffff8211156131ee57600080fd5b60200191503681900382131561320357600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261323f57600080fd5b830160208101925035905067ffffffffffffffff81111561325f57600080fd5b80360383131561320357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806132e485612d67565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261331f57600080fd5b60a060608501528401613332818061320a565b608060e08701526133486101608701828461326e565b915050613358602083018361320a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208784030161010088015261338e83828461326e565b925050508261339f60408401612d67565b1661012086015260608201356101408601526133bd60408701612d67565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526133f160808701612d67565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b60006020828403121561342b57600080fd5b5051919050565b600082821015613444576134446130b1565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134b0576134b06130b1565b500290565b6000826134eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561350257600080fd5b8151801515811461064a57600080fd5b60008251613194818460208701612dab56fea26469706673582212200e98bd243707999fddbe3a723adfa0bc42f752b4d0730f086841614ced18857c64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b6135ba80610ba983390190565b608051610ae56100c4600039600081816093015261030d0152610ae56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063c2bc3f31146100b5578063fc91a897146100c8575b600080fd5b61006461005f3660046105f0565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610698565b6102bd565b6101016100d63660046107b6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610195836102ed565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b60006102e7826040516020016102d3919061084d565b604051602081830303815290604052610111565b92915050565b60008082806020019051810190610304919061099f565b905060006103317f00000000000000000000000000000000000000000000000000000000000000006103c0565b6040517f8246df0100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690638246df019061038690859060040161084d565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156104f4576104f46104a2565b60405290565b6040516080810167ffffffffffffffff811182821017156104f4576104f46104a2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610564576105646104a2565b604052919050565b600067ffffffffffffffff821115610586576105866104a2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006105c56105c08461056c565b61051d565b90508281528383830111156105d957600080fd5b828260208301376000602084830101529392505050565b60006020828403121561060257600080fd5b813567ffffffffffffffff81111561061957600080fd5b8201601f8101841361062a57600080fd5b610639848235602084016105b2565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461066357600080fd5b50565b803561049d81610641565b600082601f83011261068257600080fd5b610691838335602085016105b2565b9392505050565b6000602082840312156106aa57600080fd5b813567ffffffffffffffff808211156106c257600080fd5b9083019060a082860312156106d657600080fd5b6106de6104d1565b82356106e981610641565b81526020830135828111156106fd57600080fd5b83016080818803121561070f57600080fd5b6107176104fa565b81358481111561072657600080fd5b61073289828501610671565b82525060208201358481111561074757600080fd5b61075389828501610671565b6020830152506040820135935061076984610641565b83604082015260608201356060820152806020840152505061078d60408401610666565b6040820152606083013560608201526107a860808401610666565b608082015295945050505050565b6000602082840312156107c857600080fd5b813561069181610641565b60005b838110156107ee5781810151838201526020016107d6565b838111156107fd576000848401525b50505050565b6000815180845261081b8160208601602086016107d3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152610894610140860182610803565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e08701526108cf8282610803565b91505082604083015116610100860152606082015161012086015260408601519250610913606086018473ffffffffffffffffffffffffffffffffffffffff169052565b606086015160808601526080860151925061094660a086018473ffffffffffffffffffffffffffffffffffffffff169052565b95945050505050565b805161049d81610641565b600082601f83011261096b57600080fd5b81516109796105c08261056c565b81815284602083860101111561098e57600080fd5b6106398260208301602087016107d3565b6000602082840312156109b157600080fd5b815167ffffffffffffffff808211156109c957600080fd5b9083019060a082860312156109dd57600080fd5b6109e56104d1565b82516109f081610641565b8152602083015182811115610a0457600080fd5b830160808188031215610a1657600080fd5b610a1e6104fa565b815184811115610a2d57600080fd5b610a398982850161095a565b825250602082015184811115610a4e57600080fd5b610a5a8982850161095a565b60208301525060408201519350610a7084610641565b836040820152606082015160608201528060208401525050610a946040840161094f565b6040820152606083015160608201526107a86080840161094f56fea2646970667358221220135ab90ce785e379f052722d03b06c2538202df2901fcdcfd394e1fa430270e664736f6c634300080a003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6134c680620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612c98565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612cdf565b610216610211366004612d30565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612d9d565b61060d565b610216610294366004612e27565b61064c565b604051601281526020016101e5565b6101d16102b6366004612c98565b610672565b6102166102c9366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612d30565b61075c565b6101d1610317366004612e63565b6107a8565b6101db61032a366004612d9d565b6107b5565b6101db61033d366004612c98565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612d30565b6107fc565b6101d1610386366004612e7c565b610815565b6101d1610399366004612c98565b610dbe565b6103b16103ac366004612e63565b610f46565b60405163ffffffff90911681526020016101e5565b6101f6610f76565b6102166103dc366004612d30565b610f85565b6102166103ef366004612d30565b611061565b6101db610402366004612eb7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612c98565b61106f565b6101db609b5481565b6101d161049f366004612eea565b611154565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090612f65565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612f65565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611204565b60019150505b92915050565b600080821161061d57600061063f565b82610629600184612fe8565b6008811061063957610639612fff565b60200201515b63ffffffff169392505050565b60003361065a8582856113b8565b610665858585611489565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a390879061302e565b611204565b6107b23382611747565b50565b60005b6008811015610607578281600881106107d3576107d3612fff565b602002015163ffffffff168210156107ea57610607565b806107f481613046565b9150506107b8565b6108078233836113b8565b6108118282611747565b5050565b600054610100900460ff16158080156108355750600054600160ff909116105b8061084f5750303b15801561084f575060005460ff166001145b6108db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561093957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61094161193d565b6109516060830160408401612c98565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109cf6109a96060840160408501612c98565b7f42766d3f000000000000000000000000000000000000000000000000000000006119e7565b610a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b610ad9610a45602084018461307f565b610a4f90806130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9192505050602085018561307f565b610a9f9060208101906130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0392505050565b670de0b6b3a7640000610aef602084018461307f565b606001351015610b5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610b7360a0830160808401612c98565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610bf89086018661307f565b610c09906060810190604001612c98565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610c6a57609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610c77602083018361307f565b610c88906060810190604001612c98565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610d04610cdd602084018461307f565b610cee906060810190604001612c98565b610cfb602085018561307f565b60600135611aa4565b610d146101cc6020840184612c98565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610d459291906131d6565b60405180910390a1610d58600142611bd0565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610dc96104f6565b14610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610ebc600242611bd0565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610f038473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f405773ffffffffffffffffffffffffffffffffffffffff8216610f3557610f308482611747565b610f40565b610f40848383611489565b50505050565b60018160088110610f5657600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090612f65565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b6110568286868403611204565b506001949350505050565b600033610601818585611489565b60985473ffffffffffffffffffffffffffffffffffffffff1633146110f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061115f6104f6565b146111c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610f40848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611e79915050565b73ffffffffffffffffffffffffffffffffffffffff83166112a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f40578181101561147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610f408484848403611204565b73ffffffffffffffffffffffffffffffffffffffff831661152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166115cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6115da83838361221e565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604090205481811015611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906116d490849061302e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161173a91815260200190565b60405180910390a3610f40565b73ffffffffffffffffffffffffffffffffffffffff82166117ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6117f68260008361221e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604081208383039055603680548492906118e8908490612fe8565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016113ab565b505050565b6001805463ffffffff161061195457611954613338565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526119a56001826008612b4a565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b60006119f283612526565b801561066b575061066b838361258a565b600054610100900460ff16611a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b61081182826126c6565b73ffffffffffffffffffffffffffffffffffffffff8216611b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611b2d6000838361221e565b8060366000828254611b3f919061302e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611b7990849061302e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611c3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611cd36104f6565b14611d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611d4d57611d4d612fff565b60088104919091015460079091166004026101000a900463ffffffff90811614611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611de757611de7612fff565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611e6c9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611e9657611e96612d5a565b604051908082528060200260200182016040528015611ebf578160200160208202803683370190505b50905060008211611f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9d9190613367565b90506000805b84811015612190578286888381518110611fbf57611fbf612fff565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190613367565b6120639190613380565b61206d91906133bd565b9150600082116120d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc3388838151811061210d5761210d612fff565b60200260200101518885604051612158949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061217357612173612fff565b60209081029190910101528061218881613046565b915050611fa3565b5061219b3386611747565b60005b8481101561221557612203338583815181106121bc576121bc612fff565b60200260200101518984815181106121d6576121d6612fff565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166127849092919063ffffffff16565b8061220d81613046565b91505061219e565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561229e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b600081118015612308575073ffffffffffffffffffffffffffffffffffffffff8316600090815260996020526040902054600216151580612306575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156119385760016123176104f6565b1461237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526099602052604090205460011661240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526124be9173ffffffffffffffffffffffffffffffffffffffff16906388d6860490612477908790602481016133f8565b602060405180830381865afa158015612494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b89190613367565b42612811565b1015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b6000612552827f01ffc9a70000000000000000000000000000000000000000000000000000000061258a565b80156106075750612583827fffffffff0000000000000000000000000000000000000000000000000000000061258a565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061264490869061345c565b6000604051808303818686fa925050503d8060008114612680576040519150601f19603f3d011682016040523d82523d6000602084013e612685565b606091505b50915091506020815110156126a05760009350505050610607565b8180156126bc5750808060200190518101906126bc919061346e565b9695505050505050565b600054610100900460ff1661275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612770906037906020850190612be6565b508051611938906038906020840190612be6565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261193890849061283e565b60005b600881101561060757818160200284901c63ffffffff16111561283657610607565b600101612814565b60006128a0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661294a9092919063ffffffff16565b80519091501561193857808060200190518101906128be919061346e565b611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b60606129598484600085612961565b949350505050565b6060824710156129f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a9a919061345c565b60006040518083038185875af1925050503d8060008114612ad7576040519150601f19603f3d011682016040523d82523d6000602084013e612adc565b606091505b5091509150612aec828286612af7565b979650505050505050565b60608315612b0657508161066b565b825115612b165782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612cdf565b600183019183908215612bd65791602002820160005b83821115612ba457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612b60565b8015612bd45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612ba4565b505b50612be2929150612c5a565b5090565b828054612bf290612f65565b90600052602060002090601f016020900481019282612c145760008555612bd6565b82601f10612c2d57805160ff1916838001178555612bd6565b82800160010185558215612bd6579182015b82811115612bd6578251825591602001919060010190612c3f565b5b80821115612be25760008155600101612c5b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c9357600080fd5b919050565b600060208284031215612caa57600080fd5b61066b82612c6f565b60005b83811015612cce578181015183820152602001612cb6565b83811115610f405750506000910152565b6020815260008251806020840152612cfe816040850160208701612cb3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c6f565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612c9357600080fd5b6000806101208385031215612db157600080fd5b83601f840112612dc057600080fd5b60405161010080820182811067ffffffffffffffff82111715612de557612de5612d5a565b60405284018186821115612df857600080fd5b855b82811015612e1957612e0b81612d89565b825260209182019101612dfa565b509196903595509350505050565b600080600060608486031215612e3c57600080fd5b612e4584612c6f565b9250612e5360208501612c6f565b9150604084013590509250925092565b600060208284031215612e7557600080fd5b5035919050565b600060208284031215612e8e57600080fd5b813567ffffffffffffffff811115612ea557600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612eca57600080fd5b612ed383612c6f565b9150612ee160208401612c6f565b90509250929050565b600080600060408486031215612eff57600080fd5b833567ffffffffffffffff80821115612f1757600080fd5b818601915086601f830112612f2b57600080fd5b813581811115612f3a57600080fd5b8760208260051b8501011115612f4f57600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612f7957607f821691505b60208210811415612fb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ffa57612ffa612fb9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561304157613041612fb9565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307857613078612fb9565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818336030181126130b357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f257600080fd5b83018035915067ffffffffffffffff82111561310d57600080fd5b60200191503681900382131561312257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261315e57600080fd5b830160208101925035905067ffffffffffffffff81111561317e57600080fd5b80360383131561312257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061320385612c6f565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261323e57600080fd5b60a0606085015284016132518180613129565b608060e08701526132676101608701828461318d565b9150506132776020830183613129565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20878403016101008801526132ad83828461318d565b92505050826132be60408401612c6f565b1661012086015260608201356101408601526132dc60408701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a086015261331060808701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561337957600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133b8576133b8612fb9565b500290565b6000826133f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b8181101561344f57845183529383019391830191600101613433565b5090979650505050505050565b600082516130b3818460208701612cb3565b60006020828403121561348057600080fd5b8151801515811461066b57600080fdfea26469706673582212206b517c174e419bcd9f5a231fc3eb47575a121188038bb57619af044725c2830964736f6c634300080a0033"; type RedeemableERC20FactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts index f6c62ad..e22713b 100644 --- a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts +++ b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts @@ -389,7 +389,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea2646970667358221220d8968a69930ba2a7d576b7133a47edb206e252bc4533b8973ee5968b734f0b6d64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea2646970667358221220a118c2604dd777a5b228bab4e969b0fe7e700cf70be47e3b455db52178d1323564736f6c634300080a0033"; type RedeemableERC20ReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20__factory.ts b/src/typechain/factories/RedeemableERC20__factory.ts index 62a6a7f..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: [ @@ -34,31 +39,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 +107,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: [ @@ -145,7 +138,7 @@ const _abi = [ { indexed: false, internalType: "uint256", - name: "scheduledBlock", + name: "scheduledTime", type: "uint256", }, ], @@ -332,30 +325,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: [ { @@ -393,7 +362,7 @@ const _abi = [ outputs: [ { internalType: "uint256", - name: "", + name: "phase_", type: "uint256", }, ], @@ -643,20 +612,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", }, ], @@ -671,7 +640,7 @@ const _abi = [ type: "uint256", }, ], - name: "phaseBlocks", + name: "phaseTimes", outputs: [ { internalType: "uint32", @@ -682,19 +651,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "uint256", - name: "amount_", - type: "uint256", - }, - ], - name: "pullERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -731,7 +687,7 @@ const _abi = [ name: "tier", outputs: [ { - internalType: "contract ITier", + internalType: "contract ITierV2", name: "", type: "address", }, @@ -739,6 +695,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", @@ -808,7 +788,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061355a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806379cc6790116100f9578063b7a3c82811610097578063e384346311610071578063e384346314610458578063e7ae91fe14610493578063f1ebd5dd146104a6578063f677de96146104af57600080fd5b8063b7a3c828146103ec578063b8ffd02c146103ff578063dd62ed3e1461041257600080fd5b806395d89b41116100d357806395d89b41146103965780639923c94b1461039e578063a457c2d7146103c6578063a9059cbb146103d957600080fd5b806379cc67901461035d5780638246df01146103705780638b24259b1461038357600080fd5b8063313ce56711610166578063395093511161014057806339509351146102ee57806342966c6814610301578063634991af1461031457806370a082311461032757600080fd5b8063313ce567146102915780633833be62146102a0578063392243e1146102b357600080fd5b8063095ea7b3116101a2578063095ea7b31461020e57806316f4d0221461023157806318160ddd1461027657806323b872dd1461027e57600080fd5b8063038ef03e146101c9578063055ad42e146101de57806306fdde03146101f9575b600080fd5b6101dc6101d7366004612d90565b6104c2565b005b6101e6610514565b6040519081526020015b60405180910390f35b61020161057f565b6040516101f09190612dd7565b61022161021c366004612e28565b610611565b60405190151581526020016101f0565b609c546102519073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f0565b6036546101e6565b61022161028c366004612e52565b61062b565b604051601281526020016101f0565b6101dc6102ae366004612d90565b610651565b6102216102c1366004612d90565b73ffffffffffffffffffffffffffffffffffffffff166000908152609b6020526040902054600116151590565b6102216102fc366004612e28565b61073b565b6101dc61030f366004612e8e565b610787565b6101e6610322366004612eea565b610794565b6101e6610335366004612d90565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101dc61036b366004612e28565b6107e8565b6101dc61037e366004612f74565b610801565b6101dc610391366004612d90565b610db4565b610201610f3c565b6103b16103ac366004612e8e565b610f4b565b60405163ffffffff90911681526020016101f0565b6102216103d4366004612e28565b610f7b565b6102216103e7366004612e28565b611057565b6101dc6103fa366004612e8e565b611065565b6101e661040d366004612eea565b611090565b6101e6610420366004612faf565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610221610466366004612d90565b73ffffffffffffffffffffffffffffffffffffffff166000908152609b6020526040902054600216151590565b6101dc6104a1366004612d90565b6110cf565b6101e6609d5481565b6101dc6104bd366004612fe2565b6111b4565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161057a91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610533579050505050505043610794565b905090565b60606037805461058e9061305d565b80601f01602080910402602001604051908101604052809291908181526020018280546105ba9061305d565b80156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b5050505050905090565b60003361061f818585611264565b60019150505b92915050565b600033610639858285611418565b6106448585856114e9565b60019150505b9392505050565b609a5473ffffffffffffffffffffffffffffffffffffffff1633146106d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000818152609b6020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b6479101610509565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061061f90829086906107829087906130e0565b611264565b61079133826117a7565b50565b6000805b60088110156107de578381600881106107b3576107b36130f8565b602002015163ffffffff168310156107cc579050610625565b806107d681613127565b915050610798565b5060089392505050565b6107f3823383611418565b6107fd82826117a7565b5050565b600054610100900460ff1661081c5760005460ff1615610820565b303b155b6108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ce565b600054610100900460ff161580156108eb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6108f361199d565b6109036060830160408401612d90565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109ec6109586020840184613160565b610962908061319e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109a4925050506020850185613160565b6109b290602081019061319e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a4792505050565b610a626040518060400160405280848060200190610a0a9190613160565b610a1b906060810190604001612d90565b73ffffffffffffffffffffffffffffffffffffffff168152602090810190610a4590860186612d90565b73ffffffffffffffffffffffffffffffffffffffff169052611ae8565b670de0b6b3a7640000610a786020840184613160565b606001351015610ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ce565b6060820135609d55610afc60a0830160808401612d90565b609e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556000808052609b602081815260037f10afac9233b4ccc54d6404ffc1cf3b47515a2b8edbf675d15eddce05a027dcbd5560019290610b8190860186613160565b610b92906060810190604001612d90565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609e541615610bf357609e5473ffffffffffffffffffffffffffffffffffffffff166000908152609b60205260409020600190555b610c006020830183613160565b610c11906060810190604001612d90565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610c8d610c666020840184613160565b610c77906060810190604001612d90565b610c846020850185613160565b60600135611ca6565b610c9d6101d76020840184612d90565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610cce9291906132b7565b60405180910390a1610ce66060830160408401612d90565b6040517fe053ea3100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063e053ea3190602401602060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190613419565b50610d82600143611dd2565b80156107fd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b600180610dbf610514565b14610e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ce565b609a5473ffffffffffffffffffffffffffffffffffffffff163314610ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ce565b610eb2600243611dd2565b609e5473ffffffffffffffffffffffffffffffffffffffff166000610ef98473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f365773ffffffffffffffffffffffffffffffffffffffff8216610f2b57610f2684826117a7565b610f36565b610f368483836114e9565b50505050565b60606038805461058e9061305d565b60018160088110610f5b57600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ce565b61104c8286868403611264565b506001949350505050565b60003361061f8185856114e9565b6098546099546107919173ffffffffffffffffffffffffffffffffffffffff9182169116308461207b565b60008082116110a05760006110c2565b826110ac600184613432565b600881106110bc576110bc6130f8565b60200201515b63ffffffff169392505050565b609a5473ffffffffffffffffffffffffffffffffffffffff163314611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ce565b73ffffffffffffffffffffffffffffffffffffffff81166000818152609b6020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade99101610509565b6002806111bf610514565b14611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ce565b610f36848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250612157915050565b73ffffffffffffffffffffffffffffffffffffffff8316611306576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff82166113a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f3657818110156114dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ce565b610f368484848403611264565b73ffffffffffffffffffffffffffffffffffffffff831661158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff821661162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b61163a8383836124fc565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156116f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906117349084906130e0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161179a91815260200190565b60405180910390a3610f36565b73ffffffffffffffffffffffffffffffffffffffff821661184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b611856826000836124fc565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603460205260409020548181101561190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260408120838303905560368054849290611948908490613432565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161140b565b505050565b6001805463ffffffff16106119b4576119b4613449565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a056001826008612c42565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d390606001610509565b600054610100900460ff16611ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ce565b6107fd82826127f2565b805173ffffffffffffffffffffffffffffffffffffffff163b611b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f454f415f53454e4445520000000000000000000000000000000000000000000060448201526064016106ce565b602081015173ffffffffffffffffffffffffffffffffffffffff16611be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5a45524f5f544f4b454e0000000000000000000000000000000000000000000060448201526064016106ce565b60995473ffffffffffffffffffffffffffffffffffffffff1615611c0e57611c0e613449565b80516098805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556020808501516099805491909516921682179093556040805133815293840192909252908201527fe67a5c2dcf68e8fac05314f53ecd2ff0b403ed683c4bfdad15eaec7a8a63f55590606001610509565b73ffffffffffffffffffffffffffffffffffffffff8216611d23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ce565b611d2f600083836124fc565b8060366000828254611d4191906130e0565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611d7b9084906130e0565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80431115611e3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f50415354000000000000000000000000000000000060448201526064016106ce565b63ffffffff8110611ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a4544000000000000000060448201526064016106ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611ed5610514565b14611f3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ce565b60018160088110611f4f57611f4f6130f8565b60088104919091015460079091166004026101000a900463ffffffff90811614611fd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f53455400000000000000000000000000000000000060448201526064016106ce565b8160018260088110611fe957611fe96130f8565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d333848460405161206e9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610f369085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526128b0565b815160008167ffffffffffffffff81111561217457612174612ea7565b60405190808252806020026020018201604052801561219d578160200160208202803683370190505b5090506000821161220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ce565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227b9190613419565b90506000805b8481101561246e57828688838151811061229d5761229d6130f8565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123379190613419565b6123419190613478565b61234b91906134b5565b9150600082116123b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ce565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106123eb576123eb6130f8565b60200260200101518885604051612436949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a181848281518110612451576124516130f8565b60209081029190910101528061246681613127565b915050612281565b5061247933866117a7565b60005b848110156124f3576124e13385838151811061249a5761249a6130f8565b60200260200101518984815181106124b4576124b46130f8565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166129bc9092919063ffffffff16565b806124eb81613127565b91505061247c565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561257c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ce565b6000811180156125e6575073ffffffffffffffffffffffffffffffffffffffff83166000908152609b60205260409020546002161515806125e4575073ffffffffffffffffffffffffffffffffffffffff82166000908152609b602052604090205460011615155b155b156119985760016125f5610514565b1461265c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ce565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609b60205260409020546001166126eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ce565b609d54609c546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261278a92169063e053ea3190602401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127849190613419565b43612a12565b1015611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ce565b600054610100900460ff16612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ce565b815161289c906037906020850190612cde565b508051611998906038906020840190612cde565b6000612912826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a429092919063ffffffff16565b805190915015611998578080602001905181019061293091906134f0565b611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ce565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526119989084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016120d5565b6000805b60088110156107de57828160200285901c63ffffffff161115612a3a579050610625565b600101612a16565b6060612a518484600085612a59565b949350505050565b606082471015612aeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff85163b612b69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ce565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b929190613512565b60006040518083038185875af1925050503d8060008114612bcf576040519150601f19603f3d011682016040523d82523d6000602084013e612bd4565b606091505b5091509150612be4828286612bef565b979650505050505050565b60608315612bfe57508161064a565b825115612c0e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce9190612dd7565b600183019183908215612cce5791602002820160005b83821115612c9c57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612c58565b8015612ccc5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612c9c565b505b50612cda929150612d52565b5090565b828054612cea9061305d565b90600052602060002090601f016020900481019282612d0c5760008555612cce565b82601f10612d2557805160ff1916838001178555612cce565b82800160010185558215612cce579182015b82811115612cce578251825591602001919060010190612d37565b5b80821115612cda5760008155600101612d53565b803573ffffffffffffffffffffffffffffffffffffffff81168114612d8b57600080fd5b919050565b600060208284031215612da257600080fd5b61064a82612d67565b60005b83811015612dc6578181015183820152602001612dae565b83811115610f365750506000910152565b6020815260008251806020840152612df6816040850160208701612dab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612e3b57600080fd5b612e4483612d67565b946020939093013593505050565b600080600060608486031215612e6757600080fd5b612e7084612d67565b9250612e7e60208501612d67565b9150604084013590509250925092565b600060208284031215612ea057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612d8b57600080fd5b6000806101208385031215612efe57600080fd5b83601f840112612f0d57600080fd5b60405161010080820182811067ffffffffffffffff82111715612f3257612f32612ea7565b60405284018186821115612f4557600080fd5b855b82811015612f6657612f5881612ed6565b825260209182019101612f47565b509196903595509350505050565b600060208284031215612f8657600080fd5b813567ffffffffffffffff811115612f9d57600080fd5b820160a0818503121561064a57600080fd5b60008060408385031215612fc257600080fd5b612fcb83612d67565b9150612fd960208401612d67565b90509250929050565b600080600060408486031215612ff757600080fd5b833567ffffffffffffffff8082111561300f57600080fd5b818601915086601f83011261302357600080fd5b81358181111561303257600080fd5b8760208260051b850101111561304757600080fd5b6020928301989097509590910135949350505050565b600181811c9082168061307157607f821691505b602082108114156130ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156130f3576130f36130b1565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613159576131596130b1565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261319457600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131d357600080fd5b83018035915067ffffffffffffffff8211156131ee57600080fd5b60200191503681900382131561320357600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261323f57600080fd5b830160208101925035905067ffffffffffffffff81111561325f57600080fd5b80360383131561320357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806132e485612d67565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261331f57600080fd5b60a060608501528401613332818061320a565b608060e08701526133486101608701828461326e565b915050613358602083018361320a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208784030161010088015261338e83828461326e565b925050508261339f60408401612d67565b1661012086015260608201356101408601526133bd60408701612d67565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526133f160808701612d67565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b60006020828403121561342b57600080fd5b5051919050565b600082821015613444576134446130b1565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134b0576134b06130b1565b500290565b6000826134eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561350257600080fd5b8151801515811461064a57600080fd5b60008251613194818460208701612dab56fea26469706673582212200e98bd243707999fddbe3a723adfa0bc42f752b4d0730f086841614ced18857c64736f6c634300080a0033"; + "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/ReserveNFT__factory.ts b/src/typechain/factories/ReserveNFT__factory.ts deleted file mode 100644 index 4290335..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 = - "0x60806040523480156200001157600080fd5b5060408051808201825260128152712727a710232aa723a4a12622902a27a5a2a760711b60208083019182528351808501909452600384526213919560ea1b90840152815191929162000067916000916200008c565b5080516200007d9060019060208401906200008c565b5050612710600855506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b611a73806200017f6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635bb9058b116100b2578063a22cb46511610081578063c87b56dd11610066578063c87b56dd146102e9578063d5abeb011461032f578063e985e9c51461033857600080fd5b8063a22cb465146102c3578063b88d4fde146102d657600080fd5b80635bb9058b146102385780636352211e1461029557806370a08231146102a857806395d89b41146102bb57600080fd5b806318160ddd1161010957806340c10f19116100ee57806340c10f19146101ef57806342842e0e1461020257806348422faa1461021557600080fd5b806318160ddd146101c557806323b872dd146101dc57600080fd5b806301ffc9a71461013b57806306fdde0314610163578063081812fc14610178578063095ea7b3146101b0575b600080fd5b61014e6101493660046115ef565b610381565b60405190151581526020015b60405180910390f35b61016b610466565b60405161015a919061167e565b61018b610186366004611691565b6104f8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101c36101be3660046116d3565b6105d7565b005b6101ce60075481565b60405190815260200161015a565b6101c36101ea3660046116fd565b610764565b6101c36101fd3660046116d3565b610805565b6101c36102103660046116fd565b6108bc565b61014e610223366004611739565b60066020526000908152604090205460ff1681565b6101c3610246366004611739565b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61018b6102a3366004611691565b6108d7565b6101ce6102b6366004611739565b610989565b61016b610a57565b6101c36102d1366004611754565b610a66565b6101c36102e43660046117bf565b610a75565b61016b6102f7366004611691565b5060408051808201909152600381527f5552490000000000000000000000000000000000000000000000000000000000602082015290565b6101ce60085481565b61014e6103463660046118b9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061041457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061046057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008054610475906118ec565b80601f01602080910402602001604051908101604052809291908181526020018280546104a1906118ec565b80156104ee5780601f106104c3576101008083540402835291602001916104ee565b820191906000526020600020905b8154815290600101906020018083116104d157829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105e2826108d7565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b3373ffffffffffffffffffffffffffffffffffffffff821614806106c957506106c98133610346565b610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105a5565b61075f8383610b1d565b505050565b61076e3382610bbd565b6107fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105a5565b61075f838383610d2d565b60085481600754610816919061196f565b111561087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d6178206c696d697420726561636865642e000000000000000000000000000060448201526064016105a5565b60005b8181101561075f576007805490600061089983611987565b91905055506108aa83600754610f9f565b6108b581600161196f565b9050610881565b61075f83838360405180602001604052806000815250610a75565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016105a5565b600073ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016105a5565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b606060018054610475906118ec565b610a7133838361116d565b5050565b610a7f3383610bbd565b610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105a5565b610b178484848461129b565b50505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610b77826108d7565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016105a5565b6000610c79836108d7565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610ce857508373ffffffffffffffffffffffffffffffffffffffff16610cd0846104f8565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d25575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d4d826108d7565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610e9d83838361133e565b610ea8600082610b1d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610ede9084906119c0565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610f1990849061196f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105a5565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105a5565b6110b46000838361133e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906110ea90849061196f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6112a6848484610d2d565b6112b2848484846113ce565b610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604090205460ff161561075f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b600073ffffffffffffffffffffffffffffffffffffffff84163b156115b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906114459033908990889088906004016119d7565b6020604051808303816000875af192505050801561149e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261149b91810190611a20565b60015b611568573d8080156114cc576040519150601f19603f3d011682016040523d82523d6000602084013e6114d1565b606091505b508051611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105a5565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d25565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146115ec57600080fd5b50565b60006020828403121561160157600080fd5b813561160c816115be565b9392505050565b6000815180845260005b818110156116395760208185018101518683018201520161161d565b8181111561164b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061160c6020830184611613565b6000602082840312156116a357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ce57600080fd5b919050565b600080604083850312156116e657600080fd5b6116ef836116aa565b946020939093013593505050565b60008060006060848603121561171257600080fd5b61171b846116aa565b9250611729602085016116aa565b9150604084013590509250925092565b60006020828403121561174b57600080fd5b61160c826116aa565b6000806040838503121561176757600080fd5b611770836116aa565b91506020830135801515811461178557600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156117d557600080fd5b6117de856116aa565b93506117ec602086016116aa565b925060408501359150606085013567ffffffffffffffff8082111561181057600080fd5b818701915087601f83011261182457600080fd5b81358181111561183657611836611790565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561187c5761187c611790565b816040528281528a602084870101111561189557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118cc57600080fd5b6118d5836116aa565b91506118e3602084016116aa565b90509250929050565b600181811c9082168061190057607f821691505b6020821081141561193a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561198257611982611940565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119b9576119b9611940565b5060010190565b6000828210156119d2576119d2611940565b500390565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611a166080830184611613565b9695505050505050565b600060208284031215611a3257600080fd5b815161160c816115be56fea2646970667358221220d18dd12224c5bc38a86b79657a1181502ce2bafcb6b3190037a498f6eefc511b64736f6c634300080a0033"; - -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/ReserveToken18__factory.ts b/src/typechain/factories/ReserveToken18__factory.ts new file mode 100644 index 0000000..4073792 --- /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 = + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360126009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165601281565b60405160128152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860126009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea26469706673582212203656c03e32dc69221137deb40d7d9bf5095856a3588b30dcc0d385c3f38689f864736f6c634300080a0033"; + +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..416f2bc 100644 --- a/src/typechain/factories/ReserveTokenERC1155__factory.ts +++ b/src/typechain/factories/ReserveTokenERC1155__factory.ts @@ -421,7 +421,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040805160208101909152600081526200002c8162000071565b50600060038190556200006b9033906200004960066009620004a1565b6200005690600a620005bb565b6040805160208101909152600081526200008a565b620007e2565b805162000086906002906020840190620003e5565b5050565b6001600160a01b038416620000f05760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084015b60405180910390fd5b3362000116816000876200010488620001aa565b6200010f88620001aa565b5050505050565b6000848152602081815260408083206001600160a01b03891684529091528120805485929062000148908490620004a1565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46200010f8160008787878762000200565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110620001e757620001e7620005d0565b602090810291909101015292915050565b505050505050565b6200021f846001600160a01b0316620003d660201b620009761760201c565b15620001f85760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906200025b908990899088908890889060040162000636565b6020604051808303816000875af192505050801562000299575060408051601f3d908101601f1916820190925262000296918101906200067d565b60015b6200035a57620002a8620006a9565b806308c379a01415620002e95750620002c062000701565b80620002cd5750620002eb565b8060405162461bcd60e51b8152600401620000e7919062000790565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401620000e7565b6001600160e01b0319811663f23a6e6160e01b14620003cd5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401620000e7565b50505050505050565b6001600160a01b03163b151590565b828054620003f390620007a5565b90600052602060002090601f01602090048101928262000417576000855562000462565b82601f106200043257805160ff191683800117855562000462565b8280016001018555821562000462579182015b828111156200046257825182559160200191906001019062000445565b506200047092915062000474565b5090565b5b8082111562000470576000815560010162000475565b634e487b7160e01b600052601160045260246000fd5b60008219821115620004b757620004b76200048b565b500190565b600181815b80851115620004fd578160001904821115620004e157620004e16200048b565b80851615620004ef57918102915b93841c9390800290620004c1565b509250929050565b6000826200051657506001620005b5565b816200052557506000620005b5565b81600181146200053e5760028114620005495762000569565b6001915050620005b5565b60ff8411156200055d576200055d6200048b565b50506001821b620005b5565b5060208310610133831016604e8410600b84101617156200058e575081810a620005b5565b6200059a8383620004bc565b8060001904821115620005b157620005b16200048b565b0290505b92915050565b6000620005c9838362000505565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156200060e57602081850181015186830182015201620005f0565b8181111562000621576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906200067290830184620005e6565b979650505050505050565b6000602082840312156200069057600080fd5b81516001600160e01b031981168114620005c957600080fd5b600060033d1115620006c35760046000803e5060005160e01c5b90565b601f8201601f191681016001600160401b0381118282101715620006fa57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015620007105790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156200074057505050505090565b8285019150815181811115620007595750505050505090565b843d8701016020828501011115620007745750505050505090565b6200078560208286010187620006c6565b509095945050505050565b602081526000620005c96020830184620005e6565b600181811c90821680620007ba57607f821691505b60208210811415620007dc57634e487b7160e01b600052602260045260246000fd5b50919050565b6125a980620007f26000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806374f104791161008c578063a22cb46511610066578063a22cb465146101c0578063e985e9c5146101d3578063f242432a1461021c578063f5298aca1461022f57600080fd5b806374f10479146101a7578063902d55a5146101af5780639f181b5e146101b757600080fd5b80632e0f2625116100c85780632e0f2625146101575780632eb2c2d61461015f5780634e1273f4146101745780636b20c4541461019457600080fd5b8062fdd58e146100ee57806301ffc9a7146101145780630e89341c14610137575b600080fd5b6101016100fc366004611b85565b610242565b6040519081526020015b60405180910390f35b610127610122366004611be0565b610322565b604051901515815260200161010b565b61014a610145366004611c04565b610405565b60405161010b9190611c88565b610101600681565b61017261016d366004611e3c565b610499565b005b610187610182366004611ee6565b610562565b60405161010b9190611fec565b6101726101a2366004611fff565b6106ba565b61017261077f565b6101016107cb565b61010160035481565b6101726101ce366004612073565b6107e5565b6101276101e13660046120af565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61017261022a3660046120e2565b6107f4565b61017261023d366004612147565b6108b6565b600073ffffffffffffffffffffffffffffffffffffffff83166102ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806103b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061031c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461031c565b6060600280546104149061217a565b80601f01602080910402602001604051908101604052809291908181526020018280546104409061217a565b801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104c257506104c285336101e1565b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f766564000000000000000000000000000060648201526084016102e3565b61055b8585858585610992565b5050505050565b606081518351146105f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016102e3565b6000835167ffffffffffffffff81111561061157610611611c9b565b60405190808252806020026020018201604052801561063a578160200160208202803683370190505b50905060005b84518110156106b25761068585828151811061065e5761065e6121ce565b6020026020010151858381518110610678576106786121ce565b6020026020010151610242565b828281518110610697576106976121ce565b60209081029190910101526106ab8161222c565b9050610640565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff83163314806106e357506106e383336101e1565b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61077a838383610ccc565b505050565b6003805490600061078f8361222c565b91905055506107c933600354600660096107a99190612265565b6107b490600a61239d565b60405180602001604052806000815250610fe5565b565b6107d760066009612265565b6107e290600a61239d565b81565b6107f033838361114c565b5050565b73ffffffffffffffffffffffffffffffffffffffff851633148061081d575061081d85336101e1565b6108a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61055b85858585856112a0565b73ffffffffffffffffffffffffffffffffffffffff83163314806108df57506108df83336101e1565b61096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61077a8383836114d1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b8151835114610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff8416610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360005b8451811015610c37576000858281518110610ae757610ae76121ce565b602002602001015190506000858381518110610b0557610b056121ce565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290610c1c908490612265565b9250508190555050505080610c309061222c565b9050610aca565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610cae9291906123a9565b60405180910390a4610cc48187878787876116d9565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b8051825114610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b604080516020810190915260009081905233905b8351811015610f5f576000848281518110610e3157610e316121ce565b602002602001015190506000848381518110610e4f57610e4f6121ce565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8c168352909352919091205490915081811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60009283526020838152604080852073ffffffffffffffffffffffffffffffffffffffff8b1686529091529092209103905580610f578161222c565b915050610e14565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051610fd79291906123a9565b60405180910390a450505050565b73ffffffffffffffffffffffffffffffffffffffff8416611088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b336110a28160008761109988611964565b61055b88611964565b60008481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080548592906110df908490612265565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff80881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461055b816000878787876119af565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611208576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8416611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3361135381878761109988611964565b60008481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8a16845290915290205483811015611411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008581526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b811685529252808320878503905590881682528120805486929061145b908490612265565b9091555050604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114c88288888888886119af565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b336115a48185600061158587611964565b61158e87611964565b5050604080516020810190915260009052505050565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290205482811015611661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60008481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c819061175090899089908890889088906004016123d7565b6020604051808303816000875af19250505080156117a9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117a691810190612442565b60015b611893576117b561245f565b806308c379a0141561180957506117ca61247b565b806117d5575061180b565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e39190611c88565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016102e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146114c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061199e5761199e6121ce565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190611a269089908990889088908890600401612523565b6020604051808303816000875af1925050508015611a7f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a7c91810190612442565b60015b611a8b576117b561245f565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146114c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b803573ffffffffffffffffffffffffffffffffffffffff81168114611b8057600080fd5b919050565b60008060408385031215611b9857600080fd5b611ba183611b5c565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611bdd57600080fd5b50565b600060208284031215611bf257600080fd5b8135611bfd81611baf565b9392505050565b600060208284031215611c1657600080fd5b5035919050565b6000815180845260005b81811015611c4357602081850181015186830182015201611c27565b81811115611c55576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611bfd6020830184611c1d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715611d0e57611d0e611c9b565b6040525050565b600067ffffffffffffffff821115611d2f57611d2f611c9b565b5060051b60200190565b600082601f830112611d4a57600080fd5b81356020611d5782611d15565b604051611d648282611cca565b83815260059390931b8501820192828101915086841115611d8457600080fd5b8286015b84811015611d9f5780358352918301918301611d88565b509695505050505050565b600082601f830112611dbb57600080fd5b813567ffffffffffffffff811115611dd557611dd5611c9b565b604051611e0a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182611cca565b818152846020838601011115611e1f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e5457600080fd5b611e5d86611b5c565b9450611e6b60208701611b5c565b9350604086013567ffffffffffffffff80821115611e8857600080fd5b611e9489838a01611d39565b94506060880135915080821115611eaa57600080fd5b611eb689838a01611d39565b93506080880135915080821115611ecc57600080fd5b50611ed988828901611daa565b9150509295509295909350565b60008060408385031215611ef957600080fd5b823567ffffffffffffffff80821115611f1157600080fd5b818501915085601f830112611f2557600080fd5b81356020611f3282611d15565b604051611f3f8282611cca565b83815260059390931b8501820192828101915089841115611f5f57600080fd5b948201945b83861015611f8457611f7586611b5c565b82529482019490820190611f64565b96505086013592505080821115611f9a57600080fd5b50611fa785828601611d39565b9150509250929050565b600081518084526020808501945080840160005b83811015611fe157815187529582019590820190600101611fc5565b509495945050505050565b602081526000611bfd6020830184611fb1565b60008060006060848603121561201457600080fd5b61201d84611b5c565b9250602084013567ffffffffffffffff8082111561203a57600080fd5b61204687838801611d39565b9350604086013591508082111561205c57600080fd5b5061206986828701611d39565b9150509250925092565b6000806040838503121561208657600080fd5b61208f83611b5c565b9150602083013580151581146120a457600080fd5b809150509250929050565b600080604083850312156120c257600080fd5b6120cb83611b5c565b91506120d960208401611b5c565b90509250929050565b600080600080600060a086880312156120fa57600080fd5b61210386611b5c565b945061211160208701611b5c565b93506040860135925060608601359150608086013567ffffffffffffffff81111561213b57600080fd5b611ed988828901611daa565b60008060006060848603121561215c57600080fd5b61216584611b5c565b95602085013595506040909401359392505050565b600181811c9082168061218e57607f821691505b602082108114156121c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561225e5761225e6121fd565b5060010190565b60008219821115612278576122786121fd565b500190565b600181815b808511156122d657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156122bc576122bc6121fd565b808516156122c957918102915b93841c9390800290612282565b509250929050565b6000826122ed5750600161031c565b816122fa5750600061031c565b8160018114612310576002811461231a57612336565b600191505061031c565b60ff84111561232b5761232b6121fd565b50506001821b61031c565b5060208310610133831016604e8410600b8410161715612359575081810a61031c565b612363838361227d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612395576123956121fd565b029392505050565b6000611bfd83836122de565b6040815260006123bc6040830185611fb1565b82810360208401526123ce8185611fb1565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261241060a0830186611fb1565b82810360608401526124228186611fb1565b905082810360808401526124368185611c1d565b98975050505050505050565b60006020828403121561245457600080fd5b8151611bfd81611baf565b600060033d11156124785760046000803e5060005160e01c5b90565b600060443d10156124895790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156124d757505050505090565b82850191508151818111156124ef5750505050505090565b843d87010160208285010111156125095750505050505090565b61251860208286010187611cca565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261256860a0830184611c1d565b97965050505050505056fea26469706673582212200f405c2e8ebaee4d9d4f638138a9039998b1a0913d669b0811f8637e85d18cbc64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b506040805160208101909152600081526200002c8162000071565b50600060038190556200006b90339062000049600660096200049a565b6200005690600a620005b4565b6040805160208101909152600081526200008a565b620007db565b805162000086906002906020840190620003de565b5050565b6001600160a01b038416620000f05760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084015b60405180910390fd5b336000620000fe85620001ac565b905060006200010d85620001ac565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290620001419084906200049a565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4620001a38360008989898962000202565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110620001e957620001e9620005c9565b602090810291909101015292915050565b505050505050565b62000221846001600160a01b0316620003cf60201b620009761760201c565b15620001fa5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906200025d90899089908890889088906004016200062f565b6020604051808303816000875af19250505080156200029b575060408051601f3d908101601f19168201909252620002989181019062000676565b60015b6200035c57620002aa620006a2565b806308c379a01415620002eb5750620002c2620006fa565b80620002cf5750620002ed565b8060405162461bcd60e51b8152600401620000e7919062000789565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401620000e7565b6001600160e01b0319811663f23a6e6160e01b14620001a35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401620000e7565b6001600160a01b03163b151590565b828054620003ec906200079e565b90600052602060002090601f0160209004810192826200041057600085556200045b565b82601f106200042b57805160ff19168380011785556200045b565b828001600101855582156200045b579182015b828111156200045b5782518255916020019190600101906200043e565b50620004699291506200046d565b5090565b5b808211156200046957600081556001016200046e565b634e487b7160e01b600052601160045260246000fd5b60008219821115620004b057620004b062000484565b500190565b600181815b80851115620004f6578160001904821115620004da57620004da62000484565b80851615620004e857918102915b93841c9390800290620004ba565b509250929050565b6000826200050f57506001620005ae565b816200051e57506000620005ae565b8160018114620005375760028114620005425762000562565b6001915050620005ae565b60ff84111562000556576200055662000484565b50506001821b620005ae565b5060208310610133831016604e8410600b841016171562000587575081810a620005ae565b620005938383620004b5565b8060001904821115620005aa57620005aa62000484565b0290505b92915050565b6000620005c28383620004fe565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156200060757602081850181015186830182015201620005e9565b818111156200061a576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906200066b90830184620005df565b979650505050505050565b6000602082840312156200068957600080fd5b81516001600160e01b031981168114620005c257600080fd5b600060033d1115620006bc5760046000803e5060005160e01c5b90565b601f8201601f191681016001600160401b0381118282101715620006f357634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015620007095790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156200073957505050505090565b8285019150815181811115620007525750505050505090565b843d87010160208285010111156200076d5750505050505090565b6200077e60208286010187620006bf565b509095945050505050565b602081526000620005c26020830184620005df565b600181811c90821680620007b357607f821691505b60208210811415620007d557634e487b7160e01b600052602260045260246000fd5b50919050565b6125d180620007eb6000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806374f104791161008c578063a22cb46511610066578063a22cb465146101c0578063e985e9c5146101d3578063f242432a1461021c578063f5298aca1461022f57600080fd5b806374f10479146101a7578063902d55a5146101af5780639f181b5e146101b757600080fd5b80632e0f2625116100c85780632e0f2625146101575780632eb2c2d61461015f5780634e1273f4146101745780636b20c4541461019457600080fd5b8062fdd58e146100ee57806301ffc9a7146101145780630e89341c14610137575b600080fd5b6101016100fc366004611bad565b610242565b6040519081526020015b60405180910390f35b610127610122366004611c08565b610322565b604051901515815260200161010b565b61014a610145366004611c2c565b610405565b60405161010b9190611cb0565b610101600681565b61017261016d366004611e64565b610499565b005b610187610182366004611f0e565b610562565b60405161010b9190612014565b6101726101a2366004612027565b6106ba565b61017261077f565b6101016107cb565b61010160035481565b6101726101ce36600461209b565b6107e5565b6101276101e13660046120d7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61017261022a36600461210a565b6107f4565b61017261023d36600461216f565b6108b6565b600073ffffffffffffffffffffffffffffffffffffffff83166102ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806103b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061031c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461031c565b606060028054610414906121a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610440906121a2565b801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104c257506104c285336101e1565b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61055b8585858585610992565b5050505050565b606081518351146105f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016102e3565b6000835167ffffffffffffffff81111561061157610611611cc3565b60405190808252806020026020018201604052801561063a578160200160208202803683370190505b50905060005b84518110156106b25761068585828151811061065e5761065e6121f6565b6020026020010151858381518110610678576106786121f6565b6020026020010151610242565b828281518110610697576106976121f6565b60209081029190910101526106ab81612254565b9050610640565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff83163314806106e357506106e383336101e1565b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61077a838383610ccc565b505050565b6003805490600061078f83612254565b91905055506107c933600354600660096107a9919061228d565b6107b490600a6123c5565b60405180602001604052806000815250610ff4565b565b6107d76006600961228d565b6107e290600a6123c5565b81565b6107f0338383611165565b5050565b73ffffffffffffffffffffffffffffffffffffffff851633148061081d575061081d85336101e1565b6108a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61055b85858585856112b9565b73ffffffffffffffffffffffffffffffffffffffff83163314806108df57506108df83336101e1565b61096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61077a8383836114f7565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b8151835114610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff8416610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360005b8451811015610c37576000858281518110610ae757610ae76121f6565b602002602001015190506000858381518110610b0557610b056121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290610c1c90849061228d565b9250508190555050505080610c3090612254565b9050610aca565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610cae9291906123d1565b60405180910390a4610cc4818787878787611701565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b8051825114610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b604080516020810190915260009081905233905b8351811015610f5f576000848281518110610e3157610e316121f6565b602002602001015190506000848381518110610e4f57610e4f6121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8c168352909352919091205490915081811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60009283526020838152604080852073ffffffffffffffffffffffffffffffffffffffff8b1686529091529092209103905580610f5781612254565b915050610e14565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051610fd79291906123d1565b60405180910390a460408051602081019091526000905250505050565b73ffffffffffffffffffffffffffffffffffffffff8416611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006110a38561198c565b905060006110b08561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152812080548792906110ef90849061228d565b9091555050604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461115c836000898989896119d7565b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff841661135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006113688561198c565b905060006113758561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a1682528120805488929061147f90849061228d565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114ec848a8a8a8a8a6119d7565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831661159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006115a68461198c565b905060006115b38461198c565b604080516020808201835260009182905288825281815282822073ffffffffffffffffffffffffffffffffffffffff8b168352905220549091508481101561167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261115c565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c819061177890899089908890889088906004016123ff565b6020604051808303816000875af19250505080156117d1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ce9181019061246a565b60015b6118bb576117dd612487565b806308c379a0141561183157506117f26124a3565b806117fd5750611833565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e39190611cb0565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016102e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119c6576119c66121f6565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190611a4e908990899088908890889060040161254b565b6020604051808303816000875af1925050508015611aa7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa49181019061246a565b60015b611ab3576117dd612487565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ba857600080fd5b919050565b60008060408385031215611bc057600080fd5b611bc983611b84565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c0557600080fd5b50565b600060208284031215611c1a57600080fd5b8135611c2581611bd7565b9392505050565b600060208284031215611c3e57600080fd5b5035919050565b6000815180845260005b81811015611c6b57602081850181015186830182015201611c4f565b81811115611c7d576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c256020830184611c45565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715611d3657611d36611cc3565b6040525050565b600067ffffffffffffffff821115611d5757611d57611cc3565b5060051b60200190565b600082601f830112611d7257600080fd5b81356020611d7f82611d3d565b604051611d8c8282611cf2565b83815260059390931b8501820192828101915086841115611dac57600080fd5b8286015b84811015611dc75780358352918301918301611db0565b509695505050505050565b600082601f830112611de357600080fd5b813567ffffffffffffffff811115611dfd57611dfd611cc3565b604051611e3260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182611cf2565b818152846020838601011115611e4757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e7c57600080fd5b611e8586611b84565b9450611e9360208701611b84565b9350604086013567ffffffffffffffff80821115611eb057600080fd5b611ebc89838a01611d61565b94506060880135915080821115611ed257600080fd5b611ede89838a01611d61565b93506080880135915080821115611ef457600080fd5b50611f0188828901611dd2565b9150509295509295909350565b60008060408385031215611f2157600080fd5b823567ffffffffffffffff80821115611f3957600080fd5b818501915085601f830112611f4d57600080fd5b81356020611f5a82611d3d565b604051611f678282611cf2565b83815260059390931b8501820192828101915089841115611f8757600080fd5b948201945b83861015611fac57611f9d86611b84565b82529482019490820190611f8c565b96505086013592505080821115611fc257600080fd5b50611fcf85828601611d61565b9150509250929050565b600081518084526020808501945080840160005b8381101561200957815187529582019590820190600101611fed565b509495945050505050565b602081526000611c256020830184611fd9565b60008060006060848603121561203c57600080fd5b61204584611b84565b9250602084013567ffffffffffffffff8082111561206257600080fd5b61206e87838801611d61565b9350604086013591508082111561208457600080fd5b5061209186828701611d61565b9150509250925092565b600080604083850312156120ae57600080fd5b6120b783611b84565b9150602083013580151581146120cc57600080fd5b809150509250929050565b600080604083850312156120ea57600080fd5b6120f383611b84565b915061210160208401611b84565b90509250929050565b600080600080600060a0868803121561212257600080fd5b61212b86611b84565b945061213960208701611b84565b93506040860135925060608601359150608086013567ffffffffffffffff81111561216357600080fd5b611f0188828901611dd2565b60008060006060848603121561218457600080fd5b61218d84611b84565b95602085013595506040909401359392505050565b600181811c908216806121b657607f821691505b602082108114156121f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561228657612286612225565b5060010190565b600082198211156122a0576122a0612225565b500190565b600181815b808511156122fe57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156122e4576122e4612225565b808516156122f157918102915b93841c93908002906122aa565b509250929050565b6000826123155750600161031c565b816123225750600061031c565b816001811461233857600281146123425761235e565b600191505061031c565b60ff84111561235357612353612225565b50506001821b61031c565b5060208310610133831016604e8410600b8410161715612381575081810a61031c565b61238b83836122a5565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156123bd576123bd612225565b029392505050565b6000611c258383612306565b6040815260006123e46040830185611fd9565b82810360208401526123f68185611fd9565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261243860a0830186611fd9565b828103606084015261244a8186611fd9565b9050828103608084015261245e8185611c45565b98975050505050505050565b60006020828403121561247c57600080fd5b8151611c2581611bd7565b600060033d11156124a05760046000803e5060005160e01c5b90565b600060443d10156124b15790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156124ff57505050505090565b82850191508151818111156125175750505050505090565b843d87010160208285010111156125315750505050505090565b61254060208286010187611cf2565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261259060a0830184611c45565b97965050505050505056fea264697066735822122016db6d4cb7213a3f2f49f20fb4a5e63c755871b7fd2f84a9fc2a8871771fb81d64736f6c634300080a0033"; type ReserveTokenERC1155ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts b/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts new file mode 100644 index 0000000..4bb2df7 --- /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 = + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b90840152815191929162000062916003916200030f565b508051620000789060049060208401906200030f565b505050620000a33360066009620000909190620003cb565b6200009d90600a620004e5565b620000a9565b62000567565b6001600160a01b038216620001045760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b62000112600083836200019f565b8060026000828254620001269190620003cb565b90915550506001600160a01b0382166000908152602081905260408120805483929062000155908490620003cb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b7838383620001db60201b620005491760201c565b6001600160a01b038316620001e057620001d1826200020b565b620001db62000243565b505050565b6001600160a01b038216620001fa57620001d1836200020b565b62000205836200020b565b620001db825b6001600160a01b0381166000908152600560209081526040808320918390529091205462000240919062000255565b62000255565b50565b6200025360066200023a60025490565b565b600062000261620002a4565b9050806200026f84620002c2565b1015620001db578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b6000620002bd60086200030b60201b6200054e1760201c565b905090565b8054600090620002d457506000919050565b81548290620002e690600190620004fa565b81548110620002f957620002f962000514565b90600052602060002001549050919050565b5490565b8280546200031d906200052a565b90600052602060002090601f0160209004810192826200034157600085556200038c565b82601f106200035c57805160ff19168380011785556200038c565b828001600101855582156200038c579182015b828111156200038c5782518255916020019190600101906200036f565b506200039a9291506200039e565b5090565b5b808211156200039a57600081556001016200039f565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003e157620003e1620003b5565b500190565b600181815b80851115620004275781600019048211156200040b576200040b620003b5565b808516156200041957918102915b93841c9390800290620003eb565b509250929050565b6000826200044057506001620004df565b816200044f57506000620004df565b8160018114620004685760028114620004735762000493565b6001915050620004df565b60ff841115620004875762000487620003b5565b50506001821b620004df565b5060208310610133831016604e8410600b8410161715620004b8575081810a620004df565b620004c48383620003e6565b8060001904821115620004db57620004db620003b5565b0290505b92915050565b6000620004f383836200042f565b9392505050565b6000828210156200050f576200050f620003b5565b500390565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200053f57607f821691505b602082108114156200056157634e487b7160e01b600052602260045260246000fd5b50919050565b61123e80620005776000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063981b24d011610066578063981b24d0146101f8578063a457c2d71461020b578063a9059cbb1461021e578063dd62ed3e1461023157600080fd5b806370a08231146101a8578063902d55a5146101de57806395d89b41146101e65780639711715a146101ee57600080fd5b80632e0f2625116100d35780632e0f26251461016b578063313ce5671461017357806339509351146101825780634ee2cd7e1461019557600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610277565b60405161011a9190610e64565b60405180910390f35b610136610131366004610efb565b610309565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610f25565b610323565b61014a600681565b6040516006815260200161011a565b610136610190366004610efb565b610347565b61014a6101a3366004610efb565b610393565b61014a6101b6366004610f61565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61014a610406565b61010d610420565b6101f661042f565b005b61014a610206366004610f7c565b61043a565b610136610219366004610efb565b610465565b61013661022c366004610efb565b61053b565b61014a61023f366004610f95565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461028690610fc8565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290610fc8565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b600033610317818585610552565b60019150505b92915050565b600033610331858285610705565b61033c8585856107dc565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610317908290869061038e90879061104b565b610552565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560205260408120819081906103c7908590610a9a565b91509150816103fb5773ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020546103fd565b805b95945050505050565b6104126006600961104b565b61041d90600a61117b565b81565b60606004805461028690610fc8565b610437610bd2565b50565b600080600061044a846006610a9a565b915091508161045b5760025461045d565b805b949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561052e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61033c8286868403610552565b6000336103178185856107dc565b505050565b5490565b73ffffffffffffffffffffffffffffffffffffffff83166105f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d657818110156107c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610525565b6107d68484848403610552565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610525565b61092d838383610c2c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a2790849061104b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8d91815260200190565b60405180910390a36107d6565b60008060008411610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433230536e617073686f743a2069642069732030000000000000000000006044820152606401610525565b610b0f610c8e565b841115610b78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e742069640000006044820152606401610525565b6000610b848486610c9e565b8454909150811415610b9d576000809250925050610bcb565b6001846001018281548110610bb457610bb4611187565b90600052602060002001549250925050610bcb565b505b9250929050565b6000610be2600880546001019055565b6000610bec610c8e565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051610c1f91815260200190565b60405180910390a1919050565b73ffffffffffffffffffffffffffffffffffffffff8316610c5857610c5082610d61565b610549610da0565b73ffffffffffffffffffffffffffffffffffffffff8216610c7c57610c5083610d61565b610c8583610d61565b61054982610d61565b6000610c9960085490565b905090565b8154600090610caf5750600061031d565b82546000905b80821015610d0b576000610cc98383610db0565b905084868281548110610cde57610cde611187565b90600052602060002001541115610cf757809150610d05565b610d0281600161104b565b92505b50610cb5565b600082118015610d4057508385610d236001856111b6565b81548110610d3357610d33611187565b9060005260206000200154145b15610d5957610d506001836111b6565b9250505061031d565b50905061031d565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832091839052909120546104379190610dd2565b610dd2565b610dae6006610d9b60025490565b565b6000610dbf60028484186111cd565b610dcb9084841661104b565b9392505050565b6000610ddc610c8e565b905080610de884610e1c565b1015610549578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b8054600090610e2d57506000919050565b81548290610e3d906001906111b6565b81548110610e4d57610e4d611187565b90600052602060002001549050919050565b919050565b600060208083528351808285015260005b81811015610e9157858101830151858201604001528201610e75565b81811115610ea3576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5f57600080fd5b60008060408385031215610f0e57600080fd5b610f1783610ed7565b946020939093013593505050565b600080600060608486031215610f3a57600080fd5b610f4384610ed7565b9250610f5160208501610ed7565b9150604084013590509250925092565b600060208284031215610f7357600080fd5b610dcb82610ed7565b600060208284031215610f8e57600080fd5b5035919050565b60008060408385031215610fa857600080fd5b610fb183610ed7565b9150610fbf60208401610ed7565b90509250929050565b600181811c90821680610fdc57607f821691505b60208210811415611016577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561105e5761105e61101c565b500190565b600181815b80851115610bc957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156110a2576110a261101c565b808516156110af57918102915b93841c9390800290611068565b6000826110cb5750600161031d565b816110d85750600061031d565b81600181146110ee57600281146110f857611114565b600191505061031d565b60ff8411156111095761110961101c565b50506001821b61031d565b5060208310610133831016604e8410600b8410161715611137575081810a61031d565b6111418383611063565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111735761117361101c565b029392505050565b6000610dcb83836110bc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156111c8576111c861101c565b500390565b600082611203577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220abad01b71ee3a5759eec18fe5a53aa7cb6b904eb0be68279ab829b705911f80764736f6c634300080a0033"; + +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/ReserveTokenERC721__factory.ts b/src/typechain/factories/ReserveTokenERC721__factory.ts index 5dd9454..f53f287 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 = - "0x60806040523480156200001157600080fd5b50604080518082018252600881526715195cdd0813919560c21b6020808301918252835180850190945260048452631513919560e21b9084015281519192916200005e91600091620001dd565b50805162000074906001906020840190620001dd565b5050600060068190556200008b9150339062000091565b620002e7565b6001600160a01b038216620000ed5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b6000818152600260205260409020546001600160a01b031615620001545760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620000e4565b6001600160a01b03821660009081526003602052604081208054600192906200017f90849062000283565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054620001eb90620002aa565b90600052602060002090601f0160209004810192826200020f57600085556200025a565b82601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b60008219821115620002a557634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002bf57607f821691505b60208210811415620002e157634e487b7160e01b600052602260045260246000fd5b50919050565b611cc280620002f76000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610215578063b88d4fde14610228578063c87b56dd1461023b578063e985e9c51461024e57600080fd5b806370a08231146101db57806374f10479146101fc57806395d89b41146102045780639f181b5e1461020c57600080fd5b806323b872dd116100d357806323b872dd1461018f57806342842e0e146101a257806342966c68146101b55780636352211e146101c857600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610142578063095ea7b31461017a575b600080fd5b610118610113366004611785565b610297565b60405190151581526020015b60405180910390f35b61013561037c565b6040516101249190611818565b61015561015036600461182b565b61040e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018d61018836600461186d565b6104ed565b005b61018d61019d366004611897565b61067a565b61018d6101b0366004611897565b61071c565b61018d6101c336600461182b565b610737565b6101556101d636600461182b565b6107d8565b6101ee6101e93660046118d3565b61088a565b604051908152602001610124565b61018d610958565b61013561097b565b6101ee60065481565b61018d6102233660046118ee565b61098a565b61018d610236366004611959565b610999565b61013561024936600461182b565b610a41565b61011861025c366004611a53565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061032a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061037657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461038b90611a86565b80601f01602080910402602001604051908101604052809291908181526020018280546103b790611a86565b80156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166104c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104f8826107d8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016104bb565b3373ffffffffffffffffffffffffffffffffffffffff821614806105df57506105df813361025c565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016104bb565b6106758383610b5e565b505050565b610685335b82610bfe565b610711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016104bb565b610675838383610d6e565b61067583838360405180602001604052806000815250610999565b6107403361067f565b6107cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f7665640000000000000000000000000000000060648201526084016104bb565b6107d581610fd5565b50565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016104bb565b600073ffffffffffffffffffffffffffffffffffffffff821661092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016104bb565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6006805490600061096883611b09565b9190505550610979336006546110a2565b565b60606001805461038b90611a86565b610995338383611264565b5050565b6109a33383610bfe565b610a2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016104bb565b610a3b84848484611392565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016104bb565b6000610b0c60408051602081019091526000815290565b90506000815111610b2c5760405180602001604052806000815250610b57565b80610b3684611435565b604051602001610b47929190611b42565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610bb8826107d8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016104bb565b6000610cba836107d8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610d2957508373ffffffffffffffffffffffffffffffffffffffff16610d118461040e565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d66575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d8e826107d8565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104bb565b73ffffffffffffffffffffffffffffffffffffffff8216610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bb565b610ede600082610b5e565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610f14908490611b71565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610f4f908490611b88565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610fe0826107d8565b9050610fed600083610b5e565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120805460019290611023908490611b71565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b73ffffffffffffffffffffffffffffffffffffffff821661111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104bb565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156111ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016104bb565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906111e1908490611b88565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104bb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61139d848484610d6e565b6113a984848484611567565b610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104bb565b60608161147557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561149f578061148981611b09565b91506114989050600a83611bcf565b9150611479565b60008167ffffffffffffffff8111156114ba576114ba61192a565b6040519080825280601f01601f1916602001820160405280156114e4576020820181803683370190505b5090505b8415610d66576114f9600183611b71565b9150611506600a86611be3565b611511906030611b88565b60f81b81838151811061152657611526611bf7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611560600a86611bcf565b94506114e8565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561174c576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906115de903390899088908890600401611c26565b6020604051808303816000875af1925050508015611637575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163491810190611c6f565b60015b611701573d808015611665576040519150601f19603f3d011682016040523d82523d6000602084013e61166a565b606091505b5080516116f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104bb565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d66565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146107d557600080fd5b60006020828403121561179757600080fd5b8135610b5781611757565b60005b838110156117bd5781810151838201526020016117a5565b83811115610a3b5750506000910152565b600081518084526117e68160208601602086016117a2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610b5760208301846117ce565b60006020828403121561183d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461186857600080fd5b919050565b6000806040838503121561188057600080fd5b61188983611844565b946020939093013593505050565b6000806000606084860312156118ac57600080fd5b6118b584611844565b92506118c360208501611844565b9150604084013590509250925092565b6000602082840312156118e557600080fd5b610b5782611844565b6000806040838503121561190157600080fd5b61190a83611844565b91506020830135801515811461191f57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561196f57600080fd5b61197885611844565b935061198660208601611844565b925060408501359150606085013567ffffffffffffffff808211156119aa57600080fd5b818701915087601f8301126119be57600080fd5b8135818111156119d0576119d061192a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611a1657611a1661192a565b816040528281528a6020848701011115611a2f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611a6657600080fd5b611a6f83611844565b9150611a7d60208401611844565b90509250929050565b600181811c90821680611a9a57607f821691505b60208210811415611ad4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b3b57611b3b611ada565b5060010190565b60008351611b548184602088016117a2565b835190830190611b688183602088016117a2565b01949350505050565b600082821015611b8357611b83611ada565b500390565b60008219821115611b9b57611b9b611ada565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611bde57611bde611ba0565b500490565b600082611bf257611bf2611ba0565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611c6560808301846117ce565b9695505050505050565b600060208284031215611c8157600080fd5b8151610b578161175756fea264697066735822122055d90dccd489b7631316a6f0f4a24325133426dfd967486cd7d2dfaea606058764736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600881526715195cdd0813919560c21b6020808301918252835180850190945260048452631513919560e21b9084015281519192916200005e91600091620001dd565b50805162000074906001906020840190620001dd565b5050600060068190556200008b9150339062000091565b620002e7565b6001600160a01b038216620000ed5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b6000818152600260205260409020546001600160a01b031615620001545760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620000e4565b6001600160a01b03821660009081526003602052604081208054600192906200017f90849062000283565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054620001eb90620002aa565b90600052602060002090601f0160209004810192826200020f57600085556200025a565b82601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b60008219821115620002a557634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002bf57607f821691505b60208210811415620002e157634e487b7160e01b600052602260045260246000fd5b50919050565b611b2880620002f76000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610215578063b88d4fde14610228578063c87b56dd1461023b578063e985e9c51461024e57600080fd5b806370a08231146101db57806374f10479146101fc57806395d89b41146102045780639f181b5e1461020c57600080fd5b806323b872dd116100d357806323b872dd1461018f57806342842e0e146101a257806342966c68146101b55780636352211e146101c857600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610142578063095ea7b31461017a575b600080fd5b6101186101133660046115eb565b610297565b60405190151581526020015b60405180910390f35b61013561037c565b604051610124919061167e565b610155610150366004611691565b61040e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018d6101883660046116d3565b610442565b005b61018d61019d3660046116fd565b6105d4565b61018d6101b03660046116fd565b610676565b61018d6101c3366004611691565b610691565b6101556101d6366004611691565b610732565b6101ee6101e9366004611739565b6107be565b604051908152602001610124565b61018d61088c565b6101356108af565b6101ee60065481565b61018d610223366004611754565b6108be565b61018d6102363660046117bf565b6108cd565b610135610249366004611691565b610975565b61011861025c3660046118b9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061032a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061037657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461038b906118ec565b80601f01602080910402602001604051908101604052809291908181526020018280546103b7906118ec565b80156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b5050505050905090565b6000610419826109e9565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061044d82610732565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806105395750610539813361025c565b6105c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610507565b6105cf8383610a74565b505050565b6105df335b82610b14565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b6105cf838383610bd4565b6105cf838383604051806020016040528060008152506108cd565b61069a336105d9565b610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b61072f81610e3b565b50565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610507565b600073ffffffffffffffffffffffffffffffffffffffff8216610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610507565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6006805490600061089c8361196f565b91905055506108ad33600654610f08565b565b60606001805461038b906118ec565b6108c93383836110ca565b5050565b6108d73383610b14565b610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b61096f848484846111f8565b50505050565b6060610980826109e9565b600061099760408051602081019091526000815290565b905060008151116109b757604051806020016040528060008152506109e2565b806109c18461129b565b6040516020016109d29291906119a8565b6040516020818303038152906040525b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1661072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610507565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610ace82610732565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610b2083610732565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b8e575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610bcc57508373ffffffffffffffffffffffffffffffffffffffff16610bb48461040e565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610bf482610732565b73ffffffffffffffffffffffffffffffffffffffff1614610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff8216610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610507565b610d44600082610a74565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610d7a9084906119d7565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610db59084906119ee565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610e4682610732565b9050610e53600083610a74565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120805460019290610e899084906119d7565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b73ffffffffffffffffffffffffffffffffffffffff8216610f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610507565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906110479084906119ee565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611203848484610bd4565b61120f848484846113cd565b61096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610507565b6060816112db57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561130557806112ef8161196f565b91506112fe9050600a83611a35565b91506112df565b60008167ffffffffffffffff81111561132057611320611790565b6040519080825280601f01601f19166020018201604052801561134a576020820181803683370190505b5090505b8415610bcc5761135f6001836119d7565b915061136c600a86611a49565b6113779060306119ee565b60f81b81838151811061138c5761138c611a5d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506113c6600a86611a35565b945061134e565b600073ffffffffffffffffffffffffffffffffffffffff84163b156115b2576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611444903390899088908890600401611a8c565b6020604051808303816000875af192505050801561149d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261149a91810190611ad5565b60015b611567573d8080156114cb576040519150601f19603f3d011682016040523d82523d6000602084013e6114d0565b606091505b50805161155f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610507565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610bcc565b506001949350505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461072f57600080fd5b6000602082840312156115fd57600080fd5b81356109e2816115bd565b60005b8381101561162357818101518382015260200161160b565b8381111561096f5750506000910152565b6000815180845261164c816020860160208601611608565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109e26020830184611634565b6000602082840312156116a357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ce57600080fd5b919050565b600080604083850312156116e657600080fd5b6116ef836116aa565b946020939093013593505050565b60008060006060848603121561171257600080fd5b61171b846116aa565b9250611729602085016116aa565b9150604084013590509250925092565b60006020828403121561174b57600080fd5b6109e2826116aa565b6000806040838503121561176757600080fd5b611770836116aa565b91506020830135801515811461178557600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156117d557600080fd5b6117de856116aa565b93506117ec602086016116aa565b925060408501359150606085013567ffffffffffffffff8082111561181057600080fd5b818701915087601f83011261182457600080fd5b81358181111561183657611836611790565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561187c5761187c611790565b816040528281528a602084870101111561189557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118cc57600080fd5b6118d5836116aa565b91506118e3602084016116aa565b90509250929050565b600181811c9082168061190057607f821691505b6020821081141561193a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119a1576119a1611940565b5060010190565b600083516119ba818460208801611608565b8351908301906119ce818360208801611608565b01949350505050565b6000828210156119e9576119e9611940565b500390565b60008219821115611a0157611a01611940565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611a4457611a44611a06565b500490565b600082611a5857611a58611a06565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611acb6080830184611634565b9695505050505050565b600060208284031215611ae757600080fd5b81516109e2816115bd56fea2646970667358221220689a7e0759debf8cccfd8fb43341171d5e48769f027676884ea1ca7c3f41d9c764736f6c634300080a0033"; type ReserveTokenERC721ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenTest__factory.ts b/src/typechain/factories/ReserveTokenTest__factory.ts index 02b4717..384853b 100644 --- a/src/typechain/factories/ReserveTokenTest__factory.ts +++ b/src/typechain/factories/ReserveTokenTest__factory.ts @@ -352,7 +352,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000209565b5080516200007890600490602084019062000209565b505050620000a033633b9aca00670de0b6b3a76400006200009a9190620002c5565b620000a6565b6200033f565b6001600160a01b038216620001025760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b62000110600083836200019d565b8060026000828254620001249190620002e7565b90915550506001600160a01b0382166000908152602081905260408120805483929062000153908490620002e7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382161580620001cd57506001600160a01b03821660009081526005602052604090205460ff16155b620002045760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000f9565b505050565b828054620002179062000302565b90600052602060002090601f0160209004810192826200023b576000855562000286565b82601f106200025657805160ff191683800117855562000286565b8280016001018555821562000286579182015b828111156200028657825182559160200191906001019062000269565b506200029492915062000298565b5090565b5b8082111562000294576000815560010162000299565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620002e257620002e2620002af565b500290565b60008219821115620002fd57620002fd620002af565b500190565b600181811c908216806200031757607f821691505b602082108114156200033957634e487b7160e01b600052602260045260246000fd5b50919050565b610f7c806200034f6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610268578063ca7df92c1461027b578063dd62ed3e14610286578063ea49e9a2146102cc57600080fd5b806370a082311461020f57806370f0c3511461024557806395d89b411461024d578063a457c2d71461025557600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a57806348422faa1461018d5780635bb9058b146101b057600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610326565b60405161011a9190610d3d565b60405180910390f35b610136610131366004610dd9565b6103b8565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610e03565b6103d0565b6040516012815260200161011a565b610136610188366004610dd9565b6103f4565b61013661019b366004610e3f565b60056020526000908152604090205460ff1681565b61020d6101be366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b005b61014a61021d366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61020d610440565b61010d61045c565b610136610263366004610dd9565b61046b565b610136610276366004610dd9565b610541565b61014a633b9aca0081565b61014a610294366004610e61565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61020d6102da366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606003805461033590610e94565b80601f016020809104026020016040519081016040528092919081815260200182805461036190610e94565b80156103ae5780601f10610383576101008083540402835291602001916103ae565b820191906000526020600020905b81548152906001019060200180831161039157829003601f168201915b5050505050905090565b6000336103c681858561054f565b5060019392505050565b6000336103de858285610703565b6103e98585856107da565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103c6908290869061043b908790610f17565b61054f565b3360008181526020819052604090205461045a9190610a98565b565b60606004805461033590610e94565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103e9828686840361054f565b6000336103c68185856107da565b73ffffffffffffffffffffffffffffffffffffffff83166105f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d457818110156107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052b565b6107d4848484840361054f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052b565b61092b838383610c8e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a25908490610f17565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8b91815260200190565b60405180910390a36107d4565b73ffffffffffffffffffffffffffffffffffffffff8216610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b610b4782600083610c8e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610bfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c39908490610f2f565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016106f6565b505050565b73ffffffffffffffffffffffffffffffffffffffff82161580610cd7575073ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff16155b610c89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e0000000000000000000000000000000000000000000000000000604482015260640161052b565b600060208083528351808285015260005b81811015610d6a57858101830151858201604001528201610d4e565b81811115610d7c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dd457600080fd5b919050565b60008060408385031215610dec57600080fd5b610df583610db0565b946020939093013593505050565b600080600060608486031215610e1857600080fd5b610e2184610db0565b9250610e2f60208501610db0565b9150604084013590509250925092565b600060208284031215610e5157600080fd5b610e5a82610db0565b9392505050565b60008060408385031215610e7457600080fd5b610e7d83610db0565b9150610e8b60208401610db0565b90509250929050565b600181811c90821680610ea857607f821691505b60208210811415610ee2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f2a57610f2a610ee8565b500190565b600082821015610f4157610f41610ee8565b50039056fea26469706673582212203f44813dfbbfe04da8f1afa9d236bf2b6aae3de068900007926a1fe23e4779df64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000209565b5080516200007890600490602084019062000209565b505050620000a033633b9aca00670de0b6b3a76400006200009a9190620002c5565b620000a6565b6200033f565b6001600160a01b038216620001025760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b62000110600083836200019d565b8060026000828254620001249190620002e7565b90915550506001600160a01b0382166000908152602081905260408120805483929062000153908490620002e7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382161580620001cd57506001600160a01b03821660009081526005602052604090205460ff16155b620002045760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000f9565b505050565b828054620002179062000302565b90600052602060002090601f0160209004810192826200023b576000855562000286565b82601f106200025657805160ff191683800117855562000286565b8280016001018555821562000286579182015b828111156200028657825182559160200191906001019062000269565b506200029492915062000298565b5090565b5b8082111562000294576000815560010162000299565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620002e257620002e2620002af565b500290565b60008219821115620002fd57620002fd620002af565b500190565b600181811c908216806200031757607f821691505b602082108114156200033957634e487b7160e01b600052602260045260246000fd5b50919050565b610f7c806200034f6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610268578063ca7df92c1461027b578063dd62ed3e14610286578063ea49e9a2146102cc57600080fd5b806370a082311461020f57806370f0c3511461024557806395d89b411461024d578063a457c2d71461025557600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a57806348422faa1461018d5780635bb9058b146101b057600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610326565b60405161011a9190610d3d565b60405180910390f35b610136610131366004610dd9565b6103b8565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610e03565b6103d0565b6040516012815260200161011a565b610136610188366004610dd9565b6103f4565b61013661019b366004610e3f565b60056020526000908152604090205460ff1681565b61020d6101be366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b005b61014a61021d366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61020d610440565b61010d61045c565b610136610263366004610dd9565b61046b565b610136610276366004610dd9565b610541565b61014a633b9aca0081565b61014a610294366004610e61565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61020d6102da366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606003805461033590610e94565b80601f016020809104026020016040519081016040528092919081815260200182805461036190610e94565b80156103ae5780601f10610383576101008083540402835291602001916103ae565b820191906000526020600020905b81548152906001019060200180831161039157829003601f168201915b5050505050905090565b6000336103c681858561054f565b5060019392505050565b6000336103de858285610703565b6103e98585856107da565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103c6908290869061043b908790610f17565b61054f565b3360008181526020819052604090205461045a9190610a98565b565b60606004805461033590610e94565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103e9828686840361054f565b6000336103c68185856107da565b73ffffffffffffffffffffffffffffffffffffffff83166105f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d457818110156107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052b565b6107d4848484840361054f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052b565b61092b838383610c8e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a25908490610f17565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8b91815260200190565b60405180910390a36107d4565b73ffffffffffffffffffffffffffffffffffffffff8216610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b610b4782600083610c8e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610bfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c39908490610f2f565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016106f6565b505050565b73ffffffffffffffffffffffffffffffffffffffff82161580610cd7575073ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff16155b610c89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e0000000000000000000000000000000000000000000000000000604482015260640161052b565b600060208083528351808285015260005b81811015610d6a57858101830151858201604001528201610d4e565b81811115610d7c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dd457600080fd5b919050565b60008060408385031215610dec57600080fd5b610df583610db0565b946020939093013593505050565b600080600060608486031215610e1857600080fd5b610e2184610db0565b9250610e2f60208501610db0565b9150604084013590509250925092565b600060208284031215610e5157600080fd5b610e5a82610db0565b9392505050565b60008060408385031215610e7457600080fd5b610e7d83610db0565b9150610e8b60208401610db0565b90509250929050565b600181811c90821680610ea857607f821691505b60208210811415610ee2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f2a57610f2a610ee8565b500190565b600082821015610f4157610f41610ee8565b50039056fea264697066735822122046048e599cc98133d70c948f103123dd7b78360105bb5e65fcc5160e46fb828664736f6c634300080a0033"; type ReserveTokenTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveToken__factory.ts b/src/typechain/factories/ReserveToken__factory.ts index 5b58da1..b1c4f33 100644 --- a/src/typechain/factories/ReserveToken__factory.ts +++ b/src/typechain/factories/ReserveToken__factory.ts @@ -373,7 +373,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360066009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165600681565b60405160068152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860066009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea2646970667358221220c56ad081ecc000a3742bbf0d60ea65085830ac567b777bb99d8b94464e60a16f64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360066009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165600681565b60405160068152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860066009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea264697066735822122022daa7804bd34e37470ffa52d47e678f2909ce5936c082fcdd1243f396ec56e064736f6c634300080a0033"; 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/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 94640b2..b0396b5 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"; + "0x60a06040523480156200001157600080fd5b5060405162006fe338038062006fe383398101604081905262000034916200011b565b6001600090815560405182906200004b90620000f4565b81518152602080830151908201526040808301516001600160a01b03908116828401526060938401511692820192909252905190819003608001906000f0801580156200009c573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001a3565b615cb2806200133183390190565b6001600160a01b03811681146200011857600080fd5b50565b6000608082840312156200012e57600080fd5b604051608081016001600160401b03811182821017156200015f57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620001828162000102565b60408201526060830151620001978162000102565b60608201529392505050565b608051611172620001bf60003960006102e201526111726000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a491461004657806333504dad14610083578063fc91a89714610096575b600080fd5b6100596100543660046105eb565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005961009136600461068c565b61028b565b6100cf6100a43660046107c6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610163836102be565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b60006102b783836040516020016102a3929190610b35565b6040516020818303038152906040526100df565b9392505050565b6000806000838060200190518101906102d79190610edf565b9150915060006103067f0000000000000000000000000000000000000000000000000000000000000000610398565b6040517f278a6a6d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063278a6a6d9061035d9086908690600401610fbd565b600060405180830381600087803b15801561037757600080fd5b505af115801561038b573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156104cc576104cc61047a565b60405290565b6040805190810167ffffffffffffffff811182821017156104cc576104cc61047a565b60405160e0810167ffffffffffffffff811182821017156104cc576104cc61047a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561055f5761055f61047a565b604052919050565b600067ffffffffffffffff8211156105815761058161047a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006105c06105bb84610567565b610518565b90508281528383830111156105d457600080fd5b828260208301376000602084830101529392505050565b6000602082840312156105fd57600080fd5b813567ffffffffffffffff81111561061457600080fd5b8201601f8101841361062557600080fd5b610634848235602084016105ad565b949350505050565b600082601f83011261064d57600080fd5b6102b7838335602085016105ad565b73ffffffffffffffffffffffffffffffffffffffff8116811461067e57600080fd5b50565b80356104758161065c565b6000806040838503121561069f57600080fd5b823567ffffffffffffffff808211156106b757600080fd5b9084019060e082870312156106cb57600080fd5b909250602084013590808211156106e157600080fd5b90840190608082870312156106f557600080fd5b6106fd6104a9565b82358281111561070c57600080fd5b83016080818903121561071e57600080fd5b6107266104a9565b81358481111561073557600080fd5b6107418a82850161063c565b82525060208201358481111561075657600080fd5b6107628a82850161063c565b602083015250604082013593506107788461065c565b83604082015260608201356060820152808352505061079960208401610681565b6020820152604083013560408201526107b460608401610681565b60608201528093505050509250929050565b6000602082840312156107d857600080fd5b81356102b78161065c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261081857600080fd5b830160208101925035905067ffffffffffffffff81111561083857600080fd5b8060051b360383131561084a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156108cc57600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000604083016108f983846107e3565b604086528281845260608701905060608260051b88010193508260005b838110156109c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261097757600080fd5b85018035602067ffffffffffffffff82111561099257600080fd5b8136038813156109a157600080fd5b6109ae8983838601610851565b98509485019493909301925050600101610916565b50505050506109d560208401846107e3565b85830360208701526109e883828461089a565b9695505050505050565b60005b83811015610a0d5781810151838201526020016109f5565b83811115610a1c576000848401525b50505050565b60008151808452610a3a8160208601602086016109f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151608084528051608080860152610a8a610100860182610a22565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a0870152610ac58282610a22565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e088015280602087015116602088015250506040840151604086015260608401519150610634606086018373ffffffffffffffffffffffffffffffffffffffff169052565b60408152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112610b6d57600080fd5b60e06040840152610b8461012084018683016108e9565b9050610b9260208601610681565b73ffffffffffffffffffffffffffffffffffffffff166060840152610bb960408601610681565b73ffffffffffffffffffffffffffffffffffffffff8116608085015250606085013560a0840152608085013560c084015260a085013560e084015260c08501356101008401528281036020840152610c118185610a6c565b95945050505050565b600067ffffffffffffffff821115610c3457610c3461047a565b5060051b60200190565b6000610c4c6105bb84610567565b9050828152838383011115610c6057600080fd5b6102b78360208301846109f2565b600082601f830112610c7f57600080fd5b81516020610c8f6105bb83610c1a565b82815260059290921b84018101918181019086841115610cae57600080fd5b8286015b84811015610cc95780518352918301918301610cb2565b509695505050505050565b60006040808385031215610ce757600080fd5b610cef6104d2565b9150825167ffffffffffffffff80821115610d0957600080fd5b818501915085601f830112610d1d57600080fd5b81516020610d2d6105bb83610c1a565b82815260059290921b84018101918181019089841115610d4c57600080fd5b8286015b84811015610d9857805186811115610d685760008081fd5b8701603f81018c13610d7a5760008081fd5b610d8a8c868301518b8401610c3e565b845250918301918301610d50565b5087525086810151945082851115610daf57600080fd5b610dbb88868901610c6e565b81870152505050505092915050565b80516104758161065c565b600082601f830112610de657600080fd5b6102b783835160208501610c3e565b600060808284031215610e0757600080fd5b610e0f6104a9565b9050815167ffffffffffffffff80821115610e2957600080fd5b9083019060808286031215610e3d57600080fd5b610e456104a9565b825182811115610e5457600080fd5b610e6087828601610dd5565b825250602083015182811115610e7557600080fd5b610e8187828601610dd5565b60208301525060408301519150610e978261065c565b81604082015260608301516060820152808452505050610eb960208301610dca565b602082015260408201516040820152610ed460608301610dca565b606082015292915050565b60008060408385031215610ef257600080fd5b825167ffffffffffffffff80821115610f0a57600080fd5b9084019060e08287031215610f1e57600080fd5b610f266104f5565b825182811115610f3557600080fd5b610f4188828601610cd4565b825250610f5060208401610dca565b6020820152610f6160408401610dca565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c0820152809450506020850151915080821115610fa657600080fd5b50610fb385828601610df5565b9150509250929050565b604081526000835160e0604084015261016083018151604061012086015281815180845261018093508387019150838160051b88010193506020808401935060005b8281101561104b577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe80898703018452611039868651610a22565b95509381019392810192600101610fff565b50948501518785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001610140890152805180865290860195600095810194509092505b828510156110af578551845294850194600194909401939283019261108f565b8981015173ffffffffffffffffffffffffffffffffffffffff811660608a0152955060408a015173ffffffffffffffffffffffffffffffffffffffff811660808a0152955060608a015160a089015260808a015160c089015260a08a015160e089015260c08a0151610100890152878403818901525050506111318187610a6c565b97965050505050505056fea26469706673582212206356e1f8158cec5c207ce76a0f8e3c6868598a5d074f2d2ff79815fee546b07b64736f6c634300080a00336101006040523480156200001257600080fd5b5060405162005cb238038062005cb28339810160408190526200003591620001ae565b6060810151306080526001600160a01b031660a052600160055562000059620000d3565b805160c052604080820180516001600160a01b0390811660e05282513381528451602080830191909152850151818501529151811660608084019190915284015116608082015290517fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e9181900360a00190a15062000236565b600054610100900460ff1615620001405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000193576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620001ab57600080fd5b50565b600060808284031215620001c157600080fd5b604051608081016001600160401b0381118282101715620001f257634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620002158162000195565b604082015260608301516200022a8162000195565b60608201529392505050565b60805160a05160c05160e051615a426200027060003960006107ee0152600061046a01526000611b0301526000611b300152615a426000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063ea7cb37011610066578063ea7cb370146101f7578063efbe1c1c1461020c578063f9020e3314610214578063fc0c546a1461022757600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd36600461456e565b61022f565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046145b9565b61024c565b005b61012f61013f366004614744565b610337565b61012f61015236600461487e565b6109ec565b61015f610c38565b6040519015158152602001610113565b61012f610c4f565b61012f610e43565b6009545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b6366004614890565b610f3e565b60408051808201825260008082526020918201528151808301835260068082526004918301918252835190815290519181019190915201610113565b6101ff61169c565b604051610113919061497f565b61012f6116af565b600d5460ff1660405161011391906149fc565b600854610183565b60008061024361023d6117ab565b84611808565b91509150915091565b6002600d5460ff16600381111561026557610265614992565b146102d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156103335773ffffffffffffffffffffffffffffffffffffffff808316600090815260116020526040812055600954610333911683836118c4565b5050565b600054610100900460ff16158080156103575750600054600160ff909116105b806103715750303b158015610371575060005460ff166001145b6103fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102c8565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6104688360800135611998565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156104f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f555400000000000000000000000000000000000000000060448201526064016102c8565b610504606084013542614a39565b600e5560a0830135610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f3000000000000000000000000000000000000000000060448201526064016102c8565b8260a00135600b819055506105b66040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160c08101825280820185905260608082018690526080820186905260a082018690529381526002818401819052825181815294850190925293929182015b6106406040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610607579050509050828160008151811061066957610669614a51565b6020026020010181905250818160018151811061068857610688614a51565b60209081029190910101526106af6106a08780614a80565b6106a990614b48565b82611ac3565b6106bf60408701602088016145b9565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0860135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561074460608701604088016145b9565b73ffffffffffffffffffffffffffffffffffffffff90811660095585516040015116156107cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f534554000000000000000000000000000000000060448201526064016102c8565b8451306040918201528551606090810151600655815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a499291829161083c91908d01908d016145b9565b73ffffffffffffffffffffffffffffffffffffffff16815260200189600001518152602001896020015173ffffffffffffffffffffffffffffffffffffffff16815260200189604001518152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152506040516020016108b99190614c3b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016108e4919061497f565b6020604051808303816000875af1158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190614d3d565b73ffffffffffffffffffffffffffffffffffffffff81166008556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff2906109789033908a908590614f62565b60405180910390a15050505080156109e757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610a0557610a05614992565b1415610a6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f5355434345535300000000000000000000000000000000000060448201526064016102c8565b6003600d5460ff166003811115610a8657610a86614992565b14610a9357610a93611c16565b336000908152600f602090815260408083209051909291610ab6918591016150bb565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610aeb906150c9565b9091555060009050610b0560808301356060840135611db5565b90508060076000828254610b1991906150fe565b92505081905550816060013560066000828254610b369190614a39565b909155505060408201803590601190600090610b5590602087016145b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b9e91906150fe565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610bd59033908590615115565b60405180910390a1600854610c069073ffffffffffffffffffffffffffffffffffffffff1633306060860135611ddd565b61033333610c18604085013584614a39565b60095473ffffffffffffffffffffffffffffffffffffffff1691906118c4565b6000610c4a610c456117ab565b611e3b565b905090565b42600e5410610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f55540000000000000000000000000000000000000060448201526064016102c8565b6000600d5460ff166003811115610cd357610cd3614992565b1480610cf557506001600d5460ff166003811115610cf357610cf3614992565b145b610d5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016102c8565b6000600655600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16008546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b158015610e2957600080fd5b505af1158015610e3d573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115610e5c57610e5c614992565b14610ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102c8565b610ece610c456117ab565b610f34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c49564500000000000000000000000000000000000000000000000060448201526064016102c8565b610f3c611ea1565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615610f7d5760035473ffffffffffffffffffffffffffffffffffffffff16610fab565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915042101561103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102c8565b60006001544261104d9190614a39565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a16002600554141561111e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c8565b6002600555604083015161118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d000000000000000000000000000000000000000000000060448201526064016102c8565b826060015183604001511115611200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f4445534952454400000000000000000000000060448201526064016102c8565b600061120a6117ab565b905061121581611e3b565b15611246576000600d5460ff16600381111561123357611233614992565b141561124157611241611ea1565b61126d565b6001600d5460ff16600381111561125f5761125f614992565b141561126d5761126d611f01565b6001600d5460ff16600381111561128657611286614992565b146112ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4143544956450000000000000000000000000000000000000000000060448201526064016102c8565b6000611308600654866060015161205390919063ffffffff16565b90506000806113178484611808565b909250905060006113288385612053565b90508760400151811015611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b000000000000000000000000000060448201526064016102c8565b8760800151821115611406576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f50524943450000000000000000000000000000000000000060448201526064016102c8565b60006114128383611db5565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061146b8361513f565b9091555050336000908152600f60209081526040808320905190929161149391859101615178565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906114c89061513f565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff16600090815260119092526040822080549192909161150a908490614a39565b92505081905550826006600082825461152391906150fe565b92505081905550816007600082825461153c9190614a39565b9250508190555061157933308c60200151856115589190614a39565b60095473ffffffffffffffffffffffffffffffffffffffff16929190611ddd565b60085461159d9073ffffffffffffffffffffffffffffffffffffffff1633856118c4565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516115d0939291906151c7565b60405180910390a16115e187611e3b565b1561165b57600c546006541015611656576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c89060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611663565b611663611f01565b505060016005555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6060610c4a6116aa82612069565b61228a565b6001600d5460ff1660038111156116c8576116c8614992565b1461172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4143544956450000000000000000000000000000000000000000000060448201526064016102c8565b61173a610c456117ab565b156117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c89060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b610f3c611f01565b6117dd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600454610c4a906118039073ffffffffffffffffffffffffffffffffffffffff166122c9565b6122f7565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061184257611842614a51565b60200260200101818152505061185a81866001612463565b50600080866020015160028860000151038151811061187b5761187b614a51565b602002602001015187602001516001896000015103815181106118a0576118a0614a51565b6020026020010151915091506118b68760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109e79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612737565b60008111611a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f300000000000000000000000000000000000000000000060448201526064016102c8565b60015463ffffffff1015611a72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d4158000000000000000000000000000000000000000060448201526064016102c8565b60015415611a8257611a8261526a565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a190611b5c907f00000000000000000000000000000000000000000000000000000000000000009087908790600401615329565b6000604051808303816000875af1158015611b7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611bc19190810190615411565b9050611bcc81612843565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611c555760035473ffffffffffffffffffffffffffffffffffffffff16611c83565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611d15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102c8565b600060015442611d259190614a39565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611dca838561547f565b611dd491906154eb565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610e3d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611916565b600060016006541015611e5057506000919050565b60408051600080825260208201909252611e6b918490612463565b506000808360200151600185600001510381518110611e8c57611e8c614a51565b6020026020010151119050611dd78360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b546007541015600081611f17576003611f1a565b60025b6000600655600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115611f5e57611f5e614992565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051611f94929190615526565b60405180910390a16008546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b50505050811561033357600a546007546009546103339273ffffffffffffffffffffffffffffffffffffffff918216929116906118c4565b60008183106120625781611dd4565b5090919050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c083018290526128ce60e084018190526129c2610100850152612a4e610120850152612b6f610140850152610160840152612c18610180840152612d206101a0840152612df46101c0840152612ff16101e0840152612ffc61020084015261300761022084015261301261024084015261301d6102608401526130516102808401526130b76102a084015261311d6102c08401526131516102e08401526131856103008401526131ba61032084015261321561034084015261326b6103608401526132946103808401526132eb6103a08401526133186103c084015261336f6103e08401526133da6104008401526134376104208401526134756104408401526134ae6104608401526134e26104808401526135146104a08401526135466104c08401526135786104e08401526135ac6105008401526135fe6105208401526136376105408401526136e96105608401526138166105808401526138726105a084015261392c6105c0840152835190850201909252919082815b838110156122815785818151811061224057612240614a51565b602002602001015185602860060183018151811061226057612260614a51565b67ffffffffffffffff90921660209283029190910190910152600101612226565b50505050919050565b60606020820182516020028101600284015b818310156122b9578251815117815260209092019160020161229c565b5050825160020283525090919050565b6060611dd78260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6139a8565b6123296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61235b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561238f5761238f6145d6565b6040519080825280602002602001820160405280156123b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156123ef576123ef6145d6565b604051908082528060200260200182016040528015612418578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561245257816020820260200184015281516020018201915060018101905061242b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b8489101561271d576003890198508886015180601f1a975061ffff8160081c16985050600688101561269557876124e6578660200284015182526020820191506126a8565b6001881415612503576020870283015182526020820191506126a8565b600288141561258d578c518710612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016102c8565b866020026020018d015182526020820191506126a8565b60038814156125d65760006125c4604080518082018252600080825260209182015281518083019092526006825260049082015290565b518801548352506020909101906126a8565b60048814156125f2576125eb8d8d848a613a90565b91506126a8565b606087612620578c60405160200161260a9190615550565b604051602081830303815290604052905061267f565b6001881415612639576126328d613c00565b905061267f565b6002881415612655576020808e015160405161260a92016155e7565b600388141561267f578c516040805160208101929092520160405160208183030381529060405290505b80511561268f5761268f81613d3d565b506126a8565b876126a4888463ffffffff8416565b9250505b60208c0151518c511115612718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102c8565b6124a1565b6020838303048c52509750505050505050505b9392505050565b6000612799826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613dcf9092919063ffffffff16565b8051909150156109e757808060200190518101906127b7919061561d565b6109e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102c8565b60008061286e8360405160200161285a919061563f565b604051602081830303815290604052613dde565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166128c8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b59190615665565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a429190615665565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b619190615665565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612974565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfd9190614d3d565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612b20565b60008060008467ffffffffffffffff811115612e1257612e126145d6565b604051908082528060200260200182016040528015612e3b578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e5957612e596145d6565b604051908082528060200260200182016040528015612e82578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612ed7578251815260209283019201612ebf565b5050602088028101602084015b81831015612efc578251815260209283019201612ee4565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f56908790879060040161567e565b600060405180830381865afa158015612f73573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612fb991908101906156e1565b9050846020820160208a0281015b80821015612fe2578151835260209283019290910190612fc7565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613e0a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b5826130b1858a613e0a565b90613e8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b582613117858a613e0a565b90611db5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613ea0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613eeb565b6000602083028203805b838110156131af57805180156131a65782526131af565b5060200161318f565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131af57805161328c57600082526131af565b602001613275565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156133ad57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156133cc575080516020909101906133c58382613f49565b925061337f565b505081526020019392505050565b6020828102820380516000928201835b858210801561341857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156133cc575080516020909101906134308382613f84565b92506133ea565b6020828102820380516000928201835b85821080156134565750826000105b156133cc5750805160209091019061346e8382613fb3565b9250613447565b600060208302820380516000602083015b858110156133cc57805183019150828210156134a157600080fd5b9091508190602001613486565b600060208302820380516000602083015b858110156133cc5780519150816134d557600080fd5b91819004916020016134bf565b6020828102820380516000928201835b858210156133cc5750805160209091019061350d8184615887565b92506134f2565b6020828102820380516000928201835b858210156133cc575080518281111561353b578092505b602082019150613524565b6020828102820380516000928201835b858210156133cc575080518281101561356d578092505b602082019150613556565b600060208302820380516000602083015b858110156133cc57805191508161359f57600080fd5b9181900691602001613589565b60006020830282038051600080602084015b868110156135ef5783156135e75780519250828402915082848304146135e357600080fd5b8193505b6020016135be565b50505081526020019392505050565b600060208302820380516000602083015b858110156133cc578051830391508282111561362a57600080fd5b909150819060200161360f565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612b209086908690600401615893565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906137c2908790879087906004016158c2565b602060405180830381865afa1580156137df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138039190615665565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b58383613fc9565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156138a0576138a06145d6565b6040519080825280602002602001820160405280156138c9578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015613905578151816020018601526020820191506020810190506138e3565b5050519050600061391883838989614028565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561399985858585614178565b90955250949695505050505050565b6060833b806139c7575050604080516020810190915260008152612730565b808411156139e5575050604080516020810190915260008152612730565b83831015613a30576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102c8565b8383038482036000828210613a455782613a47565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613acf57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613b1a565b8260011415613af357506fffffffffffffffffffffffffffffffff90506080613b1a565b8260021415613b0f575067ffffffffffffffff90506040613b1a565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b3d57613b3d6145d6565b604051908082528060200260200182016040528015613b66578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b8d578151815260209182019101613b75565b505060608b015160808c015160209081029091010160005b610100811015613beb5760208502830182845b82811015613bd4578051841c8a16825260209182019101613bb8565b505050613be28e8e8b612463565b9b508501613ba5565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c4c91906155e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c8892916020016158f7565b604051602081830303815290604052905060005b856040015151811015613d34578186604001518281518110613cc057613cc0614a51565b60200260200101515160001b87604001518381518110613ce257613ce2614a51565b6020026020010151604051602001613cfc9392919061591d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c9c565b50949350505050565b613dcc81604051602401613d51919061497f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261421e565b50565b6060613bf8848460008561423f565b6060815182604051602001613df4929190615954565b6040516020818303038152906040529050919050565b6000808260121415613e1f5783915050611dd7565b8260121115613e4b57506012829003613e3981600a615887565b613e43908561547f565b915050611dd7565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e7a81600a615887565b613e4390856154eb565b5092915050565b600081611dca670de0b6b3a76400008561547f565b600081810b613eb0575081611dd7565b60008260000b1315613ed857613ec782600a6159eb565b613ed1908461547f565b9050611dd7565b60ff600083900316613e7a81600a615887565b6000806012831415613f005783915050611dd7565b8260121115613f1a57506012829003613e7a81600a615887565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e3981600a615887565b6000828201838110613f5b5780613bf8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f9357506000611dd7565b82820282848281613fa657613fa66154bc565b041415613f5b5780613bf8565b6000818311613fc3576000611dd4565b50900390565b60008060015b60088111614020576000613fe386836143d5565b90506000613ff186846143d5565b90506000613fff8383613fb3565b905061400f856001860383614482565b94505060019092019150613fcf9050565b509392505050565b835160009081908190819060015b6008811161416a5760009250828761406f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614073565b5060005b60005b83811015614128576140a18c828151811061409357614093614a51565b6020026020010151846143d5565b95508a86116140f357886140c0576140b98683612053565b91506140ea565b60018914156140d3576140b9868361450b565b6002891480156140e1575084155b156140ea578591505b60019450614120565b89614120577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150614128565b600101614076565b508361415157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61415f866001840383614482565b955050600101614036565b509298975050505050505050565b60008260088111156141e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b6000855b858110156142125763ffffffff6020820290811b199890981685891b179791506001016141ea565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060824710156142d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102c8565b73ffffffffffffffffffffffffffffffffffffffff85163b61434f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c8565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161437891906159fa565b60006040518083038185875af1925050503d80600081146143b5576040519150601f19603f3d011682016040523d82523d6000602084013e6143ba565b606091505b50915091506143ca82828661451b565b979650505050505050565b6000816008811115614443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b826144515760009150613e84565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156144f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156120625781611dd4565b6060831561452a575081612730565b82511561453a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c8919061497f565b60006020828403121561458057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613dcc57600080fd5b80356145b481614587565b919050565b6000602082840312156145cb57600080fd5b813561273081614587565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614628576146286145d6565b60405290565b6040805190810167ffffffffffffffff81118282101715614628576146286145d6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614698576146986145d6565b604052919050565b600067ffffffffffffffff8211156146ba576146ba6145d6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006146f96146f4846146a0565b614651565b905082815283838301111561470d57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261473557600080fd5b611dd4838335602085016146e6565b6000806040838503121561475757600080fd5b823567ffffffffffffffff8082111561476f57600080fd5b9084019060e0828703121561478357600080fd5b9092506020840135908082111561479957600080fd5b90840190608082870312156147ad57600080fd5b6147b5614605565b8235828111156147c457600080fd5b8301608081890312156147d657600080fd5b6147de614605565b8135848111156147ed57600080fd5b6147f98a828501614724565b82525060208201358481111561480e57600080fd5b61481a8a828501614724565b6020830152506040820135935061483084614587565b836040820152606082013560608201528083525050614851602084016145a9565b60208201526040830135604082015261486c606084016145a9565b60608201528093505050509250929050565b600060a082840312156128c857600080fd5b600060a082840312156148a257600080fd5b60405160a0810181811067ffffffffffffffff821117156148c5576148c56145d6565b60405282356148d381614587565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561492457818101518382015260200161490c565b83811115610e3d5750506000910152565b6000815180845261494d816020860160208601614909565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dd46020830184614935565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106149f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611dd782846149c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614a4c57614a4c614a0a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614ab457600080fd5b9190910192915050565b600067ffffffffffffffff821115614ad857614ad86145d6565b5060051b60200190565b600082601f830112614af357600080fd5b81356020614b036146f483614abe565b82815260059290921b84018101918181019086841115614b2257600080fd5b8286015b84811015614b3d5780358352918301918301614b26565b509695505050505050565b60006040808336031215614b5b57600080fd5b614b6361462e565b833567ffffffffffffffff80821115614b7b57600080fd5b9085019036601f830112614b8e57600080fd5b81356020614b9e6146f483614abe565b82815260059290921b84018101918181019036841115614bbd57600080fd5b8286015b84811015614c0957803586811115614bd95760008081fd5b870136603f820112614beb5760008081fd5b614bfb36868301358c84016146e6565b845250918301918301614bc1565b5086525087810135955082861115614c2057600080fd5b614c2c36878a01614ae2565b90850152509195945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614c82610140860182614935565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614cbd8282614935565b91505082604083015116610100860152606082015161012086015260408601519250614d01606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d3460a086018473ffffffffffffffffffffffffffffffffffffffff169052565b95945050505050565b600060208284031215614d4f57600080fd5b815161273081614587565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614d8f57600080fd5b830160208101925035905067ffffffffffffffff811115614daf57600080fd5b8060051b36038313156118bd57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614e3c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614e698384614d5a565b604086528281845260608701905060608260051b88010193508260005b83811015614f33577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614ee757600080fd5b85018035602067ffffffffffffffff821115614f0257600080fd5b813603881315614f1157600080fd5b614f1e8983838601614dc1565b98509485019493909301925050600101614e86565b5050505050614f456020840184614d5a565b8583036020870152614f58838284614e0a565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614fb657600080fd5b60e06060840152614fcd6101408401868301614e59565b9050614fdb602086016145a9565b73ffffffffffffffffffffffffffffffffffffffff166080840152615002604086016145a9565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bf8604083018473ffffffffffffffffffffffffffffffffffffffff169052565b80358252602081013561508181614587565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611dd7828461506f565b6000816150d8576150d8614a0a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561511057615110614a0a565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c08101612730602083018461506f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561517157615171614a0a565b5060010190565b60a08101611dd782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bf860c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b858110156152e15782840389526152cf848351614935565b988501989350908401906001016152b7565b5091979650505050505050565b600081518084526020808501945080840160005b8381101561531e57815187529582019590820190600101615302565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261536483880183615299565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261539f84836152ee565b898103848b01528a51808252878c019550908701925060005b818110156153ff5785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c0909301926001016153b8565b50919c9b505050505050505050505050565b60006020828403121561542357600080fd5b815167ffffffffffffffff81111561543a57600080fd5b8201601f8101841361544b57600080fd5b80516154596146f4826146a0565b81815285602083850101111561546e57600080fd5b614d34826020830160208601614909565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156154b7576154b7614a0a565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615521577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff831681526040810161273060208301846149c1565b60208152815160208201526000602083015160a0604084015261557660c08401826152ee565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526155b28383615299565b92506060860151915080858403016080860152506155d082826152ee565b915050608084015160a08401528091505092915050565b815160009082906020808601845b83811015615611578151855293820193908201906001016155f5565b50929695505050505050565b60006020828403121561562f57600080fd5b8151801515811461273057600080fd5b6000815260008251615658816001850160208701614909565b9190910160010192915050565b60006020828403121561567757600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b828110156156cd57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161569b565b50505083810382850152614f5881866152ee565b600060208083850312156156f457600080fd5b825167ffffffffffffffff81111561570b57600080fd5b8301601f8101851361571c57600080fd5b805161572a6146f482614abe565b81815260059190911b8201830190838101908783111561574957600080fd5b928401925b828410156143ca5783518252928401929084019061574e565b600181815b808511156157c057817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156157a6576157a6614a0a565b808516156157b357918102915b93841c939080029061576c565b509250929050565b6000826157d757506001611dd7565b816157e457506000611dd7565b81600181146157fa576002811461580457615820565b6001915050611dd7565b60ff84111561581557615815614a0a565b50506001821b611dd7565b5060208310610133831016604e8410600b8410161715615843575081810a611dd7565b61584d8383615767565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561587f5761587f614a0a565b029392505050565b6000611dd483836157c8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bf860408301846152ee565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d3460608301846152ee565b8281526000825161590f816020850160208701614909565b919091016020019392505050565b6000845161592f818460208901614909565b82018481528351615947816020808501908801614909565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516159dd81600e850160208701614909565b91909101600e019392505050565b6000611dd460ff8416836157c8565b60008251614ab481846020870161490956fea2646970667358221220e1a399eac34c77ce3a6c714a119ac90edfb230eaf5c38f2072eea700d3a7a9df64736f6c634300080a0033"; type SaleFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleReentrant__factory.ts b/src/typechain/factories/SaleReentrant__factory.ts index b4258bb..f531d5d 100644 --- a/src/typechain/factories/SaleReentrant__factory.ts +++ b/src/typechain/factories/SaleReentrant__factory.ts @@ -418,7 +418,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea2646970667358221220b8076aac98553c4a5d4d00f3e8e86b096d4e91f7f569fc47783369ca7105571964736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea2646970667358221220cd34d0d12b02a8965068db74c2a2ed032e1bed6fb82086f2f27cfa33865cfb6d64736f6c634300080a0033"; type SaleReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Sale__factory.ts b/src/typechain/factories/Sale__factory.ts index 563b9e9..3aad13f 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", @@ -615,73 +514,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 +525,7 @@ const _abi = [ type: "address", }, { - internalType: "contract IERC20", + internalType: "address", name: "reserve", type: "address", }, @@ -774,6 +609,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -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"; + "0x6101006040523480156200001257600080fd5b5060405162005cb238038062005cb28339810160408190526200003591620001ae565b6060810151306080526001600160a01b031660a052600160055562000059620000d3565b805160c052604080820180516001600160a01b0390811660e05282513381528451602080830191909152850151818501529151811660608084019190915284015116608082015290517fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e9181900360a00190a15062000236565b600054610100900460ff1615620001405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000193576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620001ab57600080fd5b50565b600060808284031215620001c157600080fd5b604051608081016001600160401b0381118282101715620001f257634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620002158162000195565b604082015260608301516200022a8162000195565b60608201529392505050565b60805160a05160c05160e051615a426200027060003960006107ee0152600061046a01526000611b0301526000611b300152615a426000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063ea7cb37011610066578063ea7cb370146101f7578063efbe1c1c1461020c578063f9020e3314610214578063fc0c546a1461022757600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd36600461456e565b61022f565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046145b9565b61024c565b005b61012f61013f366004614744565b610337565b61012f61015236600461487e565b6109ec565b61015f610c38565b6040519015158152602001610113565b61012f610c4f565b61012f610e43565b6009545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b6366004614890565b610f3e565b60408051808201825260008082526020918201528151808301835260068082526004918301918252835190815290519181019190915201610113565b6101ff61169c565b604051610113919061497f565b61012f6116af565b600d5460ff1660405161011391906149fc565b600854610183565b60008061024361023d6117ab565b84611808565b91509150915091565b6002600d5460ff16600381111561026557610265614992565b146102d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156103335773ffffffffffffffffffffffffffffffffffffffff808316600090815260116020526040812055600954610333911683836118c4565b5050565b600054610100900460ff16158080156103575750600054600160ff909116105b806103715750303b158015610371575060005460ff166001145b6103fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102c8565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6104688360800135611998565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156104f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f555400000000000000000000000000000000000000000060448201526064016102c8565b610504606084013542614a39565b600e5560a0830135610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f3000000000000000000000000000000000000000000060448201526064016102c8565b8260a00135600b819055506105b66040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160c08101825280820185905260608082018690526080820186905260a082018690529381526002818401819052825181815294850190925293929182015b6106406040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610607579050509050828160008151811061066957610669614a51565b6020026020010181905250818160018151811061068857610688614a51565b60209081029190910101526106af6106a08780614a80565b6106a990614b48565b82611ac3565b6106bf60408701602088016145b9565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0860135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561074460608701604088016145b9565b73ffffffffffffffffffffffffffffffffffffffff90811660095585516040015116156107cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f534554000000000000000000000000000000000060448201526064016102c8565b8451306040918201528551606090810151600655815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a499291829161083c91908d01908d016145b9565b73ffffffffffffffffffffffffffffffffffffffff16815260200189600001518152602001896020015173ffffffffffffffffffffffffffffffffffffffff16815260200189604001518152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152506040516020016108b99190614c3b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016108e4919061497f565b6020604051808303816000875af1158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190614d3d565b73ffffffffffffffffffffffffffffffffffffffff81166008556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff2906109789033908a908590614f62565b60405180910390a15050505080156109e757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610a0557610a05614992565b1415610a6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f5355434345535300000000000000000000000000000000000060448201526064016102c8565b6003600d5460ff166003811115610a8657610a86614992565b14610a9357610a93611c16565b336000908152600f602090815260408083209051909291610ab6918591016150bb565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610aeb906150c9565b9091555060009050610b0560808301356060840135611db5565b90508060076000828254610b1991906150fe565b92505081905550816060013560066000828254610b369190614a39565b909155505060408201803590601190600090610b5590602087016145b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b9e91906150fe565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610bd59033908590615115565b60405180910390a1600854610c069073ffffffffffffffffffffffffffffffffffffffff1633306060860135611ddd565b61033333610c18604085013584614a39565b60095473ffffffffffffffffffffffffffffffffffffffff1691906118c4565b6000610c4a610c456117ab565b611e3b565b905090565b42600e5410610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f55540000000000000000000000000000000000000060448201526064016102c8565b6000600d5460ff166003811115610cd357610cd3614992565b1480610cf557506001600d5460ff166003811115610cf357610cf3614992565b145b610d5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016102c8565b6000600655600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16008546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b158015610e2957600080fd5b505af1158015610e3d573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115610e5c57610e5c614992565b14610ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102c8565b610ece610c456117ab565b610f34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c49564500000000000000000000000000000000000000000000000060448201526064016102c8565b610f3c611ea1565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615610f7d5760035473ffffffffffffffffffffffffffffffffffffffff16610fab565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915042101561103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102c8565b60006001544261104d9190614a39565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a16002600554141561111e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c8565b6002600555604083015161118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d000000000000000000000000000000000000000000000060448201526064016102c8565b826060015183604001511115611200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f4445534952454400000000000000000000000060448201526064016102c8565b600061120a6117ab565b905061121581611e3b565b15611246576000600d5460ff16600381111561123357611233614992565b141561124157611241611ea1565b61126d565b6001600d5460ff16600381111561125f5761125f614992565b141561126d5761126d611f01565b6001600d5460ff16600381111561128657611286614992565b146112ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4143544956450000000000000000000000000000000000000000000060448201526064016102c8565b6000611308600654866060015161205390919063ffffffff16565b90506000806113178484611808565b909250905060006113288385612053565b90508760400151811015611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b000000000000000000000000000060448201526064016102c8565b8760800151821115611406576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f50524943450000000000000000000000000000000000000060448201526064016102c8565b60006114128383611db5565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061146b8361513f565b9091555050336000908152600f60209081526040808320905190929161149391859101615178565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906114c89061513f565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff16600090815260119092526040822080549192909161150a908490614a39565b92505081905550826006600082825461152391906150fe565b92505081905550816007600082825461153c9190614a39565b9250508190555061157933308c60200151856115589190614a39565b60095473ffffffffffffffffffffffffffffffffffffffff16929190611ddd565b60085461159d9073ffffffffffffffffffffffffffffffffffffffff1633856118c4565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516115d0939291906151c7565b60405180910390a16115e187611e3b565b1561165b57600c546006541015611656576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c89060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611663565b611663611f01565b505060016005555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6060610c4a6116aa82612069565b61228a565b6001600d5460ff1660038111156116c8576116c8614992565b1461172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4143544956450000000000000000000000000000000000000000000060448201526064016102c8565b61173a610c456117ab565b156117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c89060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b610f3c611f01565b6117dd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600454610c4a906118039073ffffffffffffffffffffffffffffffffffffffff166122c9565b6122f7565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061184257611842614a51565b60200260200101818152505061185a81866001612463565b50600080866020015160028860000151038151811061187b5761187b614a51565b602002602001015187602001516001896000015103815181106118a0576118a0614a51565b6020026020010151915091506118b68760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109e79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612737565b60008111611a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f300000000000000000000000000000000000000000000060448201526064016102c8565b60015463ffffffff1015611a72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d4158000000000000000000000000000000000000000060448201526064016102c8565b60015415611a8257611a8261526a565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a190611b5c907f00000000000000000000000000000000000000000000000000000000000000009087908790600401615329565b6000604051808303816000875af1158015611b7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611bc19190810190615411565b9050611bcc81612843565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611c555760035473ffffffffffffffffffffffffffffffffffffffff16611c83565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611d15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102c8565b600060015442611d259190614a39565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611dca838561547f565b611dd491906154eb565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610e3d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611916565b600060016006541015611e5057506000919050565b60408051600080825260208201909252611e6b918490612463565b506000808360200151600185600001510381518110611e8c57611e8c614a51565b6020026020010151119050611dd78360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b546007541015600081611f17576003611f1a565b60025b6000600655600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115611f5e57611f5e614992565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051611f94929190615526565b60405180910390a16008546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b50505050811561033357600a546007546009546103339273ffffffffffffffffffffffffffffffffffffffff918216929116906118c4565b60008183106120625781611dd4565b5090919050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c083018290526128ce60e084018190526129c2610100850152612a4e610120850152612b6f610140850152610160840152612c18610180840152612d206101a0840152612df46101c0840152612ff16101e0840152612ffc61020084015261300761022084015261301261024084015261301d6102608401526130516102808401526130b76102a084015261311d6102c08401526131516102e08401526131856103008401526131ba61032084015261321561034084015261326b6103608401526132946103808401526132eb6103a08401526133186103c084015261336f6103e08401526133da6104008401526134376104208401526134756104408401526134ae6104608401526134e26104808401526135146104a08401526135466104c08401526135786104e08401526135ac6105008401526135fe6105208401526136376105408401526136e96105608401526138166105808401526138726105a084015261392c6105c0840152835190850201909252919082815b838110156122815785818151811061224057612240614a51565b602002602001015185602860060183018151811061226057612260614a51565b67ffffffffffffffff90921660209283029190910190910152600101612226565b50505050919050565b60606020820182516020028101600284015b818310156122b9578251815117815260209092019160020161229c565b5050825160020283525090919050565b6060611dd78260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6139a8565b6123296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61235b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561238f5761238f6145d6565b6040519080825280602002602001820160405280156123b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156123ef576123ef6145d6565b604051908082528060200260200182016040528015612418578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561245257816020820260200184015281516020018201915060018101905061242b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b8489101561271d576003890198508886015180601f1a975061ffff8160081c16985050600688101561269557876124e6578660200284015182526020820191506126a8565b6001881415612503576020870283015182526020820191506126a8565b600288141561258d578c518710612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016102c8565b866020026020018d015182526020820191506126a8565b60038814156125d65760006125c4604080518082018252600080825260209182015281518083019092526006825260049082015290565b518801548352506020909101906126a8565b60048814156125f2576125eb8d8d848a613a90565b91506126a8565b606087612620578c60405160200161260a9190615550565b604051602081830303815290604052905061267f565b6001881415612639576126328d613c00565b905061267f565b6002881415612655576020808e015160405161260a92016155e7565b600388141561267f578c516040805160208101929092520160405160208183030381529060405290505b80511561268f5761268f81613d3d565b506126a8565b876126a4888463ffffffff8416565b9250505b60208c0151518c511115612718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102c8565b6124a1565b6020838303048c52509750505050505050505b9392505050565b6000612799826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613dcf9092919063ffffffff16565b8051909150156109e757808060200190518101906127b7919061561d565b6109e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102c8565b60008061286e8360405160200161285a919061563f565b604051602081830303815290604052613dde565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166128c8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b59190615665565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a429190615665565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b619190615665565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612974565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfd9190614d3d565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612b20565b60008060008467ffffffffffffffff811115612e1257612e126145d6565b604051908082528060200260200182016040528015612e3b578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e5957612e596145d6565b604051908082528060200260200182016040528015612e82578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612ed7578251815260209283019201612ebf565b5050602088028101602084015b81831015612efc578251815260209283019201612ee4565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f56908790879060040161567e565b600060405180830381865afa158015612f73573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612fb991908101906156e1565b9050846020820160208a0281015b80821015612fe2578151835260209283019290910190612fc7565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613e0a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b5826130b1858a613e0a565b90613e8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b582613117858a613e0a565b90611db5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613ea0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613eeb565b6000602083028203805b838110156131af57805180156131a65782526131af565b5060200161318f565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131af57805161328c57600082526131af565b602001613275565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156133ad57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156133cc575080516020909101906133c58382613f49565b925061337f565b505081526020019392505050565b6020828102820380516000928201835b858210801561341857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156133cc575080516020909101906134308382613f84565b92506133ea565b6020828102820380516000928201835b85821080156134565750826000105b156133cc5750805160209091019061346e8382613fb3565b9250613447565b600060208302820380516000602083015b858110156133cc57805183019150828210156134a157600080fd5b9091508190602001613486565b600060208302820380516000602083015b858110156133cc5780519150816134d557600080fd5b91819004916020016134bf565b6020828102820380516000928201835b858210156133cc5750805160209091019061350d8184615887565b92506134f2565b6020828102820380516000928201835b858210156133cc575080518281111561353b578092505b602082019150613524565b6020828102820380516000928201835b858210156133cc575080518281101561356d578092505b602082019150613556565b600060208302820380516000602083015b858110156133cc57805191508161359f57600080fd5b9181900691602001613589565b60006020830282038051600080602084015b868110156135ef5783156135e75780519250828402915082848304146135e357600080fd5b8193505b6020016135be565b50505081526020019392505050565b600060208302820380516000602083015b858110156133cc578051830391508282111561362a57600080fd5b909150819060200161360f565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612b209086908690600401615893565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906137c2908790879087906004016158c2565b602060405180830381865afa1580156137df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138039190615665565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b58383613fc9565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156138a0576138a06145d6565b6040519080825280602002602001820160405280156138c9578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015613905578151816020018601526020820191506020810190506138e3565b5050519050600061391883838989614028565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561399985858585614178565b90955250949695505050505050565b6060833b806139c7575050604080516020810190915260008152612730565b808411156139e5575050604080516020810190915260008152612730565b83831015613a30576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102c8565b8383038482036000828210613a455782613a47565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613acf57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613b1a565b8260011415613af357506fffffffffffffffffffffffffffffffff90506080613b1a565b8260021415613b0f575067ffffffffffffffff90506040613b1a565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b3d57613b3d6145d6565b604051908082528060200260200182016040528015613b66578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b8d578151815260209182019101613b75565b505060608b015160808c015160209081029091010160005b610100811015613beb5760208502830182845b82811015613bd4578051841c8a16825260209182019101613bb8565b505050613be28e8e8b612463565b9b508501613ba5565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c4c91906155e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c8892916020016158f7565b604051602081830303815290604052905060005b856040015151811015613d34578186604001518281518110613cc057613cc0614a51565b60200260200101515160001b87604001518381518110613ce257613ce2614a51565b6020026020010151604051602001613cfc9392919061591d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c9c565b50949350505050565b613dcc81604051602401613d51919061497f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261421e565b50565b6060613bf8848460008561423f565b6060815182604051602001613df4929190615954565b6040516020818303038152906040529050919050565b6000808260121415613e1f5783915050611dd7565b8260121115613e4b57506012829003613e3981600a615887565b613e43908561547f565b915050611dd7565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e7a81600a615887565b613e4390856154eb565b5092915050565b600081611dca670de0b6b3a76400008561547f565b600081810b613eb0575081611dd7565b60008260000b1315613ed857613ec782600a6159eb565b613ed1908461547f565b9050611dd7565b60ff600083900316613e7a81600a615887565b6000806012831415613f005783915050611dd7565b8260121115613f1a57506012829003613e7a81600a615887565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e3981600a615887565b6000828201838110613f5b5780613bf8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f9357506000611dd7565b82820282848281613fa657613fa66154bc565b041415613f5b5780613bf8565b6000818311613fc3576000611dd4565b50900390565b60008060015b60088111614020576000613fe386836143d5565b90506000613ff186846143d5565b90506000613fff8383613fb3565b905061400f856001860383614482565b94505060019092019150613fcf9050565b509392505050565b835160009081908190819060015b6008811161416a5760009250828761406f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614073565b5060005b60005b83811015614128576140a18c828151811061409357614093614a51565b6020026020010151846143d5565b95508a86116140f357886140c0576140b98683612053565b91506140ea565b60018914156140d3576140b9868361450b565b6002891480156140e1575084155b156140ea578591505b60019450614120565b89614120577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150614128565b600101614076565b508361415157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61415f866001840383614482565b955050600101614036565b509298975050505050505050565b60008260088111156141e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b6000855b858110156142125763ffffffff6020820290811b199890981685891b179791506001016141ea565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060824710156142d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102c8565b73ffffffffffffffffffffffffffffffffffffffff85163b61434f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c8565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161437891906159fa565b60006040518083038185875af1925050503d80600081146143b5576040519150601f19603f3d011682016040523d82523d6000602084013e6143ba565b606091505b50915091506143ca82828661451b565b979650505050505050565b6000816008811115614443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b826144515760009150613e84565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156144f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156120625781611dd4565b6060831561452a575081612730565b82511561453a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c8919061497f565b60006020828403121561458057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613dcc57600080fd5b80356145b481614587565b919050565b6000602082840312156145cb57600080fd5b813561273081614587565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614628576146286145d6565b60405290565b6040805190810167ffffffffffffffff81118282101715614628576146286145d6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614698576146986145d6565b604052919050565b600067ffffffffffffffff8211156146ba576146ba6145d6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006146f96146f4846146a0565b614651565b905082815283838301111561470d57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261473557600080fd5b611dd4838335602085016146e6565b6000806040838503121561475757600080fd5b823567ffffffffffffffff8082111561476f57600080fd5b9084019060e0828703121561478357600080fd5b9092506020840135908082111561479957600080fd5b90840190608082870312156147ad57600080fd5b6147b5614605565b8235828111156147c457600080fd5b8301608081890312156147d657600080fd5b6147de614605565b8135848111156147ed57600080fd5b6147f98a828501614724565b82525060208201358481111561480e57600080fd5b61481a8a828501614724565b6020830152506040820135935061483084614587565b836040820152606082013560608201528083525050614851602084016145a9565b60208201526040830135604082015261486c606084016145a9565b60608201528093505050509250929050565b600060a082840312156128c857600080fd5b600060a082840312156148a257600080fd5b60405160a0810181811067ffffffffffffffff821117156148c5576148c56145d6565b60405282356148d381614587565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561492457818101518382015260200161490c565b83811115610e3d5750506000910152565b6000815180845261494d816020860160208601614909565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dd46020830184614935565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106149f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611dd782846149c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614a4c57614a4c614a0a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614ab457600080fd5b9190910192915050565b600067ffffffffffffffff821115614ad857614ad86145d6565b5060051b60200190565b600082601f830112614af357600080fd5b81356020614b036146f483614abe565b82815260059290921b84018101918181019086841115614b2257600080fd5b8286015b84811015614b3d5780358352918301918301614b26565b509695505050505050565b60006040808336031215614b5b57600080fd5b614b6361462e565b833567ffffffffffffffff80821115614b7b57600080fd5b9085019036601f830112614b8e57600080fd5b81356020614b9e6146f483614abe565b82815260059290921b84018101918181019036841115614bbd57600080fd5b8286015b84811015614c0957803586811115614bd95760008081fd5b870136603f820112614beb5760008081fd5b614bfb36868301358c84016146e6565b845250918301918301614bc1565b5086525087810135955082861115614c2057600080fd5b614c2c36878a01614ae2565b90850152509195945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614c82610140860182614935565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614cbd8282614935565b91505082604083015116610100860152606082015161012086015260408601519250614d01606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d3460a086018473ffffffffffffffffffffffffffffffffffffffff169052565b95945050505050565b600060208284031215614d4f57600080fd5b815161273081614587565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614d8f57600080fd5b830160208101925035905067ffffffffffffffff811115614daf57600080fd5b8060051b36038313156118bd57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614e3c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614e698384614d5a565b604086528281845260608701905060608260051b88010193508260005b83811015614f33577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614ee757600080fd5b85018035602067ffffffffffffffff821115614f0257600080fd5b813603881315614f1157600080fd5b614f1e8983838601614dc1565b98509485019493909301925050600101614e86565b5050505050614f456020840184614d5a565b8583036020870152614f58838284614e0a565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614fb657600080fd5b60e06060840152614fcd6101408401868301614e59565b9050614fdb602086016145a9565b73ffffffffffffffffffffffffffffffffffffffff166080840152615002604086016145a9565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bf8604083018473ffffffffffffffffffffffffffffffffffffffff169052565b80358252602081013561508181614587565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611dd7828461506f565b6000816150d8576150d8614a0a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561511057615110614a0a565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c08101612730602083018461506f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561517157615171614a0a565b5060010190565b60a08101611dd782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bf860c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b858110156152e15782840389526152cf848351614935565b988501989350908401906001016152b7565b5091979650505050505050565b600081518084526020808501945080840160005b8381101561531e57815187529582019590820190600101615302565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261536483880183615299565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261539f84836152ee565b898103848b01528a51808252878c019550908701925060005b818110156153ff5785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c0909301926001016153b8565b50919c9b505050505050505050505050565b60006020828403121561542357600080fd5b815167ffffffffffffffff81111561543a57600080fd5b8201601f8101841361544b57600080fd5b80516154596146f4826146a0565b81815285602083850101111561546e57600080fd5b614d34826020830160208601614909565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156154b7576154b7614a0a565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615521577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff831681526040810161273060208301846149c1565b60208152815160208201526000602083015160a0604084015261557660c08401826152ee565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526155b28383615299565b92506060860151915080858403016080860152506155d082826152ee565b915050608084015160a08401528091505092915050565b815160009082906020808601845b83811015615611578151855293820193908201906001016155f5565b50929695505050505050565b60006020828403121561562f57600080fd5b8151801515811461273057600080fd5b6000815260008251615658816001850160208701614909565b9190910160010192915050565b60006020828403121561567757600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b828110156156cd57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161569b565b50505083810382850152614f5881866152ee565b600060208083850312156156f457600080fd5b825167ffffffffffffffff81111561570b57600080fd5b8301601f8101851361571c57600080fd5b805161572a6146f482614abe565b81815260059190911b8201830190838101908783111561574957600080fd5b928401925b828410156143ca5783518252928401929084019061574e565b600181815b808511156157c057817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156157a6576157a6614a0a565b808516156157b357918102915b93841c939080029061576c565b509250929050565b6000826157d757506001611dd7565b816157e457506000611dd7565b81600181146157fa576002811461580457615820565b6001915050611dd7565b60ff84111561581557615815614a0a565b50506001821b611dd7565b5060208310610133831016604e8410600b8410161715615843575081810a611dd7565b61584d8383615767565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561587f5761587f614a0a565b029392505050565b6000611dd483836157c8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bf860408301846152ee565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d3460608301846152ee565b8281526000825161590f816020850160208701614909565b919091016020019392505050565b6000845161592f818460208901614909565b82018481528351615947816020808501908801614909565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516159dd81600e850160208701614909565b91909101600e019392505050565b6000611dd460ff8416836157c8565b60008251614ab481846020870161490956fea2646970667358221220e1a399eac34c77ce3a6c714a119ac90edfb230eaf5c38f2072eea700d3a7a9df64736f6c634300080a0033"; 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..ccb6468 --- /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 = + "0x608060405234801561001057600080fd5b506106be806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806395805dad1161005057806395805dad146100a657806398d4e2e9146100b9578063f4f98ad5146100c157600080fd5b8063453024871461006c5780637fbc62af14610081575b600080fd5b61007f61007a3660046105b3565b6100d4565b005b61009461008f3660046105de565b6100e2565b60405190815260200160405180910390f35b61007f6100b4366004610640565b610165565b600054610094565b61007f6100cf366004610640565b610171565b6100de828261017a565b5050565b82801561015d576000836020015163ffffffff1661013d878573ffffffffffffffffffffffffffffffffffffffff16604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b8161014a5761014a610659565b855163ffffffff16919006019190910190505b949350505050565b61016e8161030c565b50565b61016e816103fd565b600054600154610192919063ffffffff1684336100e2565b421115610200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43414e545f52455645414c00000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61022061020c826104c4565b336000908152600260205260409020541490565b610286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f5345435245540000000000000000000000000000000000000000000060448201526064016101f7565b3360008181526002602090815260408083208390558254815180840191909152808201869052815180820383018152606082018084528151919094012093849055939091526080830184905260a083018290525190917fbd515cb7fe6810ea1d996c4efb3231c8b281498ca8062a4ec905d41943824bdf919081900360c00190a1505050565b60015463ffffffff161561038b5760015463ffffffff16421061038b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f535441525445440000000000000000000000000000000000000000000000000060448201526064016101f7565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000164263ffffffff16179055600081905560408051338152602081018390527fcfb9c5312b25ec7b809d61e638df25f749eae5d5c25399e1c93d1d319bfd582191015b60405180910390a150565b60015463ffffffff161561047c5760015463ffffffff16421061047c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f535441525445440000000000000000000000000000000000000000000000000060448201526064016101f7565b33600081815260026020908152604091829020849055815192835282018390527f5e1dd8c4451717d5ca4ffbefdada35e22e0871220b9ed9dd03a351f0938c5ed791016103f2565b6000816040516020016104d991815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b803563ffffffff8116811461052957600080fd5b919050565b60006040828403121561054057600080fd5b6040516040810181811067ffffffffffffffff8211171561058a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290508061059983610515565b81526105a760208401610515565b60208201525092915050565b600080606083850312156105c657600080fd5b6105d0848461052e565b946040939093013593505050565b60008060008060a085870312156105f457600080fd5b843593506020850135925061060c866040870161052e565b9150608085013573ffffffffffffffffffffffffffffffffffffffff8116811461063557600080fd5b939692955090935050565b60006020828403121561065257600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220112861d677319657a73cf01a0a077c2ab116726dcac337f01235ae604d05029a64736f6c634300080a0033"; + +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..2dc01c6 --- /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 = + "0x608060405234801561001057600080fd5b5061024b806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80637fbc62af14610030575b600080fd5b61004361003e3660046100f1565b610055565b60405190815260200160405180910390f35b8280156100d0576000836020015163ffffffff166100b0878573ffffffffffffffffffffffffffffffffffffffff16604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b816100bd576100bd6101e6565b855163ffffffff16919006019190910190505b949350505050565b803563ffffffff811681146100ec57600080fd5b919050565b60008060008084860360a081121561010857600080fd5b853594506020860135935060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561014357600080fd5b506040516040810181811067ffffffffffffffff8211171561018e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525061019f604087016100d8565b81526101ad606087016100d8565b60208201529150608085013573ffffffffffffffffffffffffffffffffffffffff811681146101db57600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea26469706673582212207c0cef2136f0e14a21eb5646637198711dd104f504da2297314a8d718b41ef3c64736f6c634300080a0033"; + +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/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..5e56e6d --- /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: [ + { + 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: "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 = + "0x60c06040523480156200001157600080fd5b506040516200276f3803806200276f83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516126cd620000a260003960006101e40152600061021101526126cd6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063ea7cb37014610098575b600080fd5b610059610054366004611c87565b6100ad565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6100a061018c565b60405161008f9190611d3c565b6100e66040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6101406040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610107579050509050818160008151811061016957610169611d7e565b60200260200101819052506101878361018190611efa565b826101a4565b505050565b606061019f61019a826102f7565b610518565b905090565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a19061023d907f000000000000000000000000000000000000000000000000000000000000000090879087906004016120b4565b6000604051808303816000875af115801561025c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102a291908101906121ab565b90506102ad81610557565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c083018290526105e260e084018190526106d961010085015261076561012085015261088661014085015261016084015261092f610180840152610a376101a0840152610b0b6101c0840152610d086101e0840152610d13610200840152610d1e610220840152610d29610240840152610d34610260840152610d68610280840152610dce6102a0840152610e346102c0840152610e686102e0840152610e9c610300840152610ed1610320840152610f2c610340840152610f82610360840152610fab6103808401526110026103a084015261102f6103c08401526110866103e08401526110f161040084015261114e61042084015261118c6104408401526111c56104608401526111f961048084015261122b6104a084015261125d6104c084015261128f6104e08401526112c361050084015261131561052084015261134e61054084015261140061056084015261152d6105808401526115896105a08401526116436105c0840152835190850201909252919082815b8381101561050f578581815181106104ce576104ce611d7e565b60200260200101518560286006018301815181106104ee576104ee611d7e565b67ffffffffffffffff909216602092830291909101909101526001016104b4565b50505050919050565b60606020820182516020028101600284015b81831015610547578251815117815260209092019160020161052a565b5050825160020283525090919050565b6000806105828360405160200161056e9190612222565b6040516020818303038152906040526116bf565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166105dc576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156106a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c99190612248565b9093525083925050505b92915050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610735573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107599190612248565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015610854573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108789190612248565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401610688565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a149190612261565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401610837565b60008060008467ffffffffffffffff811115610b2957610b29611d4f565b604051908082528060200260200182016040528015610b52578160200160208202803683370190505b50905060008567ffffffffffffffff811115610b7057610b70611d4f565b604051908082528060200260200182016040528015610b99578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015610bee578251815260209283019201610bd6565b5050602088028101602084015b81831015610c13578251815260209283019201610bfb565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490610c6d9087908790600401612297565b600060405180830381865afa158015610c8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cd091908101906122fa565b9050846020820160208a0281015b80821015610cf9578151835260209283019290910190610cde565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261075982876116eb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836106c982610dc8858a6116eb565b9061176c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836106c982610e2e858a6116eb565b90611792565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261075982876117a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261075982876117f2565b6000602083028203805b83811015610ec65780518015610ebd578252610ec6565b50602001610ea6565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015610ec6578051610fa35760008252610ec6565b602001610f8c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156110c457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156110e3575080516020909101906110dc8382611850565b9250611096565b505081526020019392505050565b6020828102820380516000928201835b858210801561112f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156110e357508051602090910190611147838261188c565b9250611101565b6020828102820380516000928201835b858210801561116d5750826000105b156110e35750805160209091019061118583826118bb565b925061115e565b600060208302820380516000602083015b858110156110e357805183019150828210156111b857600080fd5b909150819060200161119d565b600060208302820380516000602083015b858110156110e35780519150816111ec57600080fd5b91819004916020016111d6565b6020828102820380516000928201835b858210156110e35750805160209091019061122481846124da565b9250611209565b6020828102820380516000928201835b858210156110e35750805182811115611252578092505b60208201915061123b565b6020828102820380516000928201835b858210156110e35750805182811015611284578092505b60208201915061126d565b600060208302820380516000602083015b858110156110e35780519150816112b657600080fd5b91819006916020016112a0565b60006020830282038051600080602084015b868110156113065783156112fe5780519250828402915082848304146112fa57600080fd5b8193505b6020016112d5565b50505081526020019392505050565b600060208302820380516000602083015b858110156110e3578051830391508282111561134157600080fd5b9091508190602001611326565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061083790869086906004016124e6565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906114d990879087908790600401612515565b602060405180830381865afa1580156114f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151a9190612248565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836106c983836118d1565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156115b7576115b7611d4f565b6040519080825280602002602001820160405280156115e0578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561161c578151816020018601526020820191506020810190506115fa565b5050519050600061162f83838989611930565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856116b085858585611a80565b90955250949695505050505050565b60608151826040516020016116d592919061254a565b6040516020818303038152906040529050919050565b600080826012141561170057839150506106d3565b826012111561172c5750601282900361171a81600a6124da565b61172490856125e1565b9150506106d3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161175b81600a6124da565b611724908561264d565b5092915050565b600081611781670de0b6b3a7640000856125e1565b61178b919061264d565b9392505050565b6000670de0b6b3a764000061178183856125e1565b600081810b6117b75750816106d3565b60008260000b13156117df576117ce82600a612688565b6117d890846125e1565b90506106d3565b60ff60008390031661175b81600a6124da565b600080601283141561180757839150506106d3565b82601211156118215750601282900361175b81600a6124da565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161171a81600a6124da565b60008282018381106118625780611884565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261189b575060006106d3565b828202828482816118ae576118ae61261e565b0414156118625780611884565b60008183116118cb57600061178b565b50900390565b60008060015b600881116119285760006118eb8683611b2b565b905060006118f98684611b2b565b9050600061190783836118bb565b9050611917856001860383611bd8565b945050600190920191506118d79050565b509392505050565b835160009081908190819060015b60088111611a725760009250828761197757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61197b565b5060005b60005b83811015611a30576119a98c828151811061199b5761199b611d7e565b602002602001015184611b2b565b95508a86116119fb57886119c8576119c18683611c61565b91506119f2565b60018914156119db576119c18683611c77565b6002891480156119e9575084155b156119f2578591505b60019450611a28565b89611a28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150611a30565b60010161197e565b5083611a5957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b611a67866001840383611bd8565b95505060010161193e565b509298975050505050505050565b6000826008811115611af3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000855b85811015611b1f5763ffffffff6020820290811b199890981685891b17979150600101611af7565b50959695505050505050565b6000816008811115611b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401611aea565b82611ba75760009150611765565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115611c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401611aea565b505063ffffffff602090920291821b199290921691901b1790565b6000818310611c70578161178b565b5090919050565b600081831015611c70578161178b565b600060208284031215611c9957600080fd5b813567ffffffffffffffff811115611cb057600080fd5b82016040818503121561178b57600080fd5b60005b83811015611cdd578181015183820152602001611cc5565b83811115611cec576000848401525b50505050565b60008151808452611d0a816020860160208601611cc2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061178b6020830184611cf2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6040805190810167ffffffffffffffff81118282101715611dd057611dd0611d4f565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e1d57611e1d611d4f565b604052919050565b600067ffffffffffffffff821115611e3f57611e3f611d4f565b5060051b60200190565b600067ffffffffffffffff821115611e6357611e63611d4f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112611ea057600080fd5b81356020611eb5611eb083611e25565b611dd6565b82815260059290921b84018101918181019086841115611ed457600080fd5b8286015b84811015611eef5780358352918301918301611ed8565b509695505050505050565b60006040808336031215611f0d57600080fd5b611f15611dad565b833567ffffffffffffffff80821115611f2d57600080fd5b9085019036601f830112611f4057600080fd5b81356020611f50611eb083611e25565b82815260059290921b84018101918181019036841115611f6f57600080fd5b8286015b84811015611fe357803586811115611f8b5760008081fd5b870136603f820112611f9d5760008081fd5b84810135611fad611eb082611e49565b818152368c838501011115611fc25760008081fd5b818c8401888301376000918101870191909152845250918301918301611f73565b5086525087810135955082861115611ffa57600080fd5b61200636878a01611e8f565b90850152509195945050505050565b600081518084526020808501945080840160005b8381101561204557815187529582019590820190600101612029565b509495945050505050565b600081518084526020808501945080840160005b8381101561204557815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0908101519088015260c09096019590820190600101612064565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830185516040606086015281815180845260c08701915060c08160051b8801019350848301925060005b8181101561214f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4088860301835261213d858551611cf2565b94509285019291850191600101612103565b50505050908501518382037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00160808501529061218c8183612015565b91505082810360408401526121a18185612050565b9695505050505050565b6000602082840312156121bd57600080fd5b815167ffffffffffffffff8111156121d457600080fd5b8201601f810184136121e557600080fd5b80516121f3611eb082611e49565b81815285602083850101111561220857600080fd5b612219826020830160208601611cc2565b95945050505050565b600081526000825161223b816001850160208701611cc2565b9190910160010192915050565b60006020828403121561225a57600080fd5b5051919050565b60006020828403121561227357600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461178b57600080fd5b604080825283519082018190526000906020906060840190828701845b828110156122e657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016122b4565b505050838103828501526121a18186612015565b6000602080838503121561230d57600080fd5b825167ffffffffffffffff81111561232457600080fd5b8301601f8101851361233557600080fd5b8051612343611eb082611e25565b81815260059190911b8201830190838101908783111561236257600080fd5b928401925b8284101561238057835182529284019290840190612367565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561241357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156123f9576123f961238b565b8085161561240657918102915b93841c93908002906123bf565b509250929050565b60008261242a575060016106d3565b81612437575060006106d3565b816001811461244d576002811461245757612473565b60019150506106d3565b60ff8411156124685761246861238b565b50506001821b6106d3565b5060208310610133831016604e8410600b8410161715612496575081810a6106d3565b6124a083836123ba565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156124d2576124d261238b565b029392505050565b600061178b838361241b565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006118846040830184612015565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006122196060830184612015565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516125d381600e850160208701611cc2565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126195761261961238b565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612683577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061178b60ff84168361241b56fea264697066735822122001c09745ac62d57bd2382fd8335c38f35ba2f87604591694c8f034a09fafe44c64736f6c634300080a0033"; + +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..8c7570c --- /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 = + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612a1a80610a1783390190565b6080516109536100c46000396000818160a6015261030d01526109536000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a4914610051578063412eede31461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f3660046105cd565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c36600461066a565b6102bd565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d6366004610718565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610195836102ed565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b60006102e7826040516020016102d391906107af565b604051602081830303815290604052610111565b92915050565b60008082806020019051810190610304919061087e565b905060006103317f00000000000000000000000000000000000000000000000000000000000000006103c0565b6040517ffad876c300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063fad876c3906103869085906004016107af565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156104f4576104f46104a2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610541576105416104a2565b604052919050565b600067ffffffffffffffff821115610563576105636104a2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006105a261059d84610549565b6104fa565b90508281528383830111156105b657600080fd5b828260208301376000602084830101529392505050565b6000602082840312156105df57600080fd5b813567ffffffffffffffff8111156105f657600080fd5b8201601f8101841361060757600080fd5b6106168482356020840161058f565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461064057600080fd5b50565b600082601f83011261065457600080fd5b6106638383356020850161058f565b9392505050565b60006020828403121561067c57600080fd5b813567ffffffffffffffff8082111561069457600080fd5b90830190608082860312156106a857600080fd5b6106b06104d1565b82356106bb8161061e565b8152602083810135908201526040830135828111156106d957600080fd5b6106e587828601610643565b6040830152506060830135828111156106fd57600080fd5b61070987828601610643565b60608301525095945050505050565b60006020828403121561072a57600080fd5b81356106638161061e565b60005b83811015610750578181015183820152602001610738565b8381111561075f576000848401525b50505050565b6000815180845261077d816020860160208601610735565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526020820151604082015260006040830151608060608401526107f560a0840182610765565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160808501526108308282610765565b95945050505050565b600082601f83011261084a57600080fd5b815161085861059d82610549565b81815284602083860101111561086d57600080fd5b610616826020830160208701610735565b60006020828403121561089057600080fd5b815167ffffffffffffffff808211156108a857600080fd5b90830190608082860312156108bc57600080fd5b6108c46104d1565b82516108cf8161061e565b8152602083810151908201526040830151828111156108ed57600080fd5b6108f987828601610839565b60408301525060608301518281111561091157600080fd5b6107098782860161083956fea2646970667358221220daa1910361226a1d63c074a56e40694d3b5abdbec2596ad5287f30b2dc42b5a164736f6c634300080a0033608060405234801561001057600080fd5b5060016065556129f5806100256000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806388d68604116100b2578063b6b55f2511610081578063d6d6817711610066578063d6d6817714610282578063dd62ed3e146102ce578063fad876c31461031457600080fd5b8063b6b55f251461025c578063caa0eb3b1461026f57600080fd5b806388d686041461021b57806395d89b411461022e578063a457c2d714610236578063a9059cbb1461024957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101c357806339509351146101d257806370a08231146101e557600080fd5b806323b872dd1461019d5780632e1a7d4d146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e610149366004612341565b610329565b60405190151581526020015b60405180910390f35b61016b6103c2565b60405161015a91906123af565b61014e610186366004612429565b610454565b6035545b60405190815260200161015a565b61014e6101ab366004612453565b61046c565b61018f6101be36600461248f565b610492565b6040516012815260200161015a565b61014e6101e0366004612429565b610810565b61018f6101f33660046124a8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61018f61022936600461250f565b61085c565b61016b6108f1565b61014e610244366004612429565b610900565b61014e610257366004612429565b6109dc565b61018f61026a36600461248f565b6109ea565b61018f61027d366004612562565b610d64565b610295610290366004612429565b610dc6565b6040805163ffffffff90931683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911660208301520161015a565b61018f6102dc3660046125bc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6103276103223660046125ef565b610e22565b005b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806103bc57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546103d19061262a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd9061262a565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b6000336104628185856111c8565b5060019392505050565b60003361047a85828561137c565b610485858585611453565b60019150505b9392505050565b600060026065541415610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655581610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fd565b3360009081526068602052604081205461058e906001906126ad565b33600090815260686020526040812080549293509091839081106105b4576105b46126c4565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105f185836126ad565b90506000811561060b5761060733836000611706565b5090505b8084111561066957336000908152606860205260409020805485908110610634576106346126c4565b60009182526020822001557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019261060b565b81156106f95761067882611865565b336000908152606860205260409020805483908110610699576106996126c4565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550610726565b33600090815260686020526040902080548590811061071a5761071a6126c4565b60009182526020822001555b600061073160355490565b905061073d3388611917565b6066546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526107d99173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906126f3565b889083611b01565b6066549096506108009073ffffffffffffffffffffffffffffffffffffffff163388611bcf565b5050600160655550919392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610462908290869061085790879061270c565b6111c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561048b57600063ffffffff815b848110156108e75760008686838181106108a8576108a86126c4565b9050602002013590506108bc888286611706565b93505063ffffffff8314156108d157506108e7565b6108dc858385611ca3565b94505060010161088c565b5050509392505050565b6060603780546103d19061262a565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104fd565b6109d182868684036111c8565b506001949350505050565b600033610462818585611453565b600060026065541415610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104fd565b600260655581610ac5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fd565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5891906126f3565b90506000610b6560355490565b606654909150610b8d9073ffffffffffffffffffffffffffffffffffffffff16333087611d2c565b80610ba757606754610ba0908590611d8a565b9250610bb5565b610bb2818584611b01565b92505b60008311610c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016104fd565b610c293384611da9565b336000908152606860205260408120549081610c46576000610ca3565b336000908152606860205260409020610c606001846126ad565b81548110610c7057610c706126c4565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931693508101610cfe610cf9898661270c565b611865565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555092949350505050565b600083610d7357506000610dbe565b818411610db75760008383610d896001886126ad565b818110610d9857610d986126c4565b905060200201359050610dad86826000611706565b9250610dbe915050565b5063ffffffff5b949350505050565b60686020528160005260406000208181548110610de257600080fd5b60009182526020909120015463ffffffff8116925064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905082565b600054610100900460ff1615808015610e425750600054600160ff909116105b80610e5c5750303b158015610e5c575060005460ff166001145b610ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104fd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f4657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f5560208401846124a8565b73ffffffffffffffffffffffffffffffffffffffff161415610fd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016104fd565b6000826020013511611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016104fd565b6110cd6110516040840184612724565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611093925050506060850185612724565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ec992505050565b6110da60208301836124a8565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c906111599033908590612836565b60405180910390a180156111c457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff821661130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461144d5781811015611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104fd565b61144d84848484036111c8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166114f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff8216611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061169390849061270c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116f991815260200190565b60405180910390a361144d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860209081526040808320548151808301909252838252918101839052909190829082905b848610156117fd5761175a8686611f6a565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260686020526040902080549193509083908110611795576117956126c4565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101829052915087116117f257819450611748565b816001019550611748565b8285146118525773ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902080548690811061183b5761183b6126c4565b60009182526020909120015463ffffffff16611858565b63ffffffff5b9350505050935093915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016104fd565b5090565b73ffffffffffffffffffffffffffffffffffffffff82166119ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611aac9084906126ad565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161136f565b505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415611b5a57838281611b5057611b506128da565b049250505061048b565b808411611b6657600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611afc9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f85565b6000826008811115611d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104fd565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261144d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611c21565b6000670de0b6b3a7640000611d9f8385612909565b61048b9190612946565b73ffffffffffffffffffffffffffffffffffffffff8216611e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104fd565b8060356000828254611e38919061270c565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611e7290849061270c565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fd565b6111c48282612091565b6000611f796002848418612946565b61048b9084841661270c565b6000611fe7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661214f9092919063ffffffff16565b805190915015611afc57808060200190518101906120059190612981565b611afc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104fd565b600054610100900460ff16612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fd565b815161213b9060369060208501906122b1565b508051611afc9060379060208401906122b1565b6060610dbe84846000858573ffffffffffffffffffffffffffffffffffffffff85163b6121d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104fd565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161220191906129a3565b60006040518083038185875af1925050503d806000811461223e576040519150601f19603f3d011682016040523d82523d6000602084013e612243565b606091505b509150915061225382828661225e565b979650505050505050565b6060831561226d57508161048b565b82511561227d5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fd91906123af565b8280546122bd9061262a565b90600052602060002090601f0160209004810192826122df5760008555612325565b82601f106122f857805160ff1916838001178555612325565b82800160010185558215612325579182015b8281111561232557825182559160200191906001019061230a565b506119139291505b80821115611913576000815560010161232d565b60006020828403121561235357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461048b57600080fd5b60005b8381101561239e578181015183820152602001612386565b8381111561144d5750506000910152565b60208152600082518060208401526123ce816040850160208701612383565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461242457600080fd5b919050565b6000806040838503121561243c57600080fd5b61244583612400565b946020939093013593505050565b60008060006060848603121561246857600080fd5b61247184612400565b925061247f60208501612400565b9150604084013590509250925092565b6000602082840312156124a157600080fd5b5035919050565b6000602082840312156124ba57600080fd5b61048b82612400565b60008083601f8401126124d557600080fd5b50813567ffffffffffffffff8111156124ed57600080fd5b6020830191508360208260051b850101111561250857600080fd5b9250929050565b60008060006040848603121561252457600080fd5b61252d84612400565b9250602084013567ffffffffffffffff81111561254957600080fd5b612555868287016124c3565b9497909650939450505050565b6000806000806060858703121561257857600080fd5b61258185612400565b935060208501359250604085013567ffffffffffffffff8111156125a457600080fd5b6125b0878288016124c3565b95989497509550505050565b600080604083850312156125cf57600080fd5b6125d883612400565b91506125e660208401612400565b90509250929050565b60006020828403121561260157600080fd5b813567ffffffffffffffff81111561261857600080fd5b82016080818503121561048b57600080fd5b600181811c9082168061263e57607f821691505b60208210811415612678577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156126bf576126bf61267e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561270557600080fd5b5051919050565b6000821982111561271f5761271f61267e565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261275957600080fd5b83018035915067ffffffffffffffff82111561277457600080fd5b60200191503681900382131561250857600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127be57600080fd5b830160208101925035905067ffffffffffffffff8111156127de57600080fd5b80360383131561250857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061286385612400565b16604084015250602083013560608301526128816040840184612789565b60808085015261289560c0850182846127ed565b9150506128a56060850185612789565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526122538382846127ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129415761294161267e565b500290565b60008261297c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561299357600080fd5b8151801515811461048b57600080fd5b600082516129b5818460208701612383565b919091019291505056fea2646970667358221220e68c58075b5c82aa176734b67380aee0a33811e0f64c74463d74e00892f3ad1564736f6c634300080a0033"; + +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..6f7bc20 --- /dev/null +++ b/src/typechain/factories/Stake__factory.ts @@ -0,0 +1,553 @@ +/* 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: "assets_", + type: "uint256", + }, + ], + name: "deposit", + outputs: [ + { + internalType: "uint256", + name: "shares_", + type: "uint256", + }, + ], + 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: [ + { + 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: "uint256[]", + name: "context_", + type: "uint256[]", + }, + ], + name: "report", + outputs: [ + { + internalType: "uint256", + 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", + }, + { + 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: "shares_", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [ + { + internalType: "uint256", + name: "assets_", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b5060016065556129f5806100256000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806388d68604116100b2578063b6b55f2511610081578063d6d6817711610066578063d6d6817714610282578063dd62ed3e146102ce578063fad876c31461031457600080fd5b8063b6b55f251461025c578063caa0eb3b1461026f57600080fd5b806388d686041461021b57806395d89b411461022e578063a457c2d714610236578063a9059cbb1461024957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101c357806339509351146101d257806370a08231146101e557600080fd5b806323b872dd1461019d5780632e1a7d4d146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e610149366004612341565b610329565b60405190151581526020015b60405180910390f35b61016b6103c2565b60405161015a91906123af565b61014e610186366004612429565b610454565b6035545b60405190815260200161015a565b61014e6101ab366004612453565b61046c565b61018f6101be36600461248f565b610492565b6040516012815260200161015a565b61014e6101e0366004612429565b610810565b61018f6101f33660046124a8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61018f61022936600461250f565b61085c565b61016b6108f1565b61014e610244366004612429565b610900565b61014e610257366004612429565b6109dc565b61018f61026a36600461248f565b6109ea565b61018f61027d366004612562565b610d64565b610295610290366004612429565b610dc6565b6040805163ffffffff90931683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911660208301520161015a565b61018f6102dc3660046125bc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6103276103223660046125ef565b610e22565b005b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806103bc57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546103d19061262a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd9061262a565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b6000336104628185856111c8565b5060019392505050565b60003361047a85828561137c565b610485858585611453565b60019150505b9392505050565b600060026065541415610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655581610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fd565b3360009081526068602052604081205461058e906001906126ad565b33600090815260686020526040812080549293509091839081106105b4576105b46126c4565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105f185836126ad565b90506000811561060b5761060733836000611706565b5090505b8084111561066957336000908152606860205260409020805485908110610634576106346126c4565b60009182526020822001557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019261060b565b81156106f95761067882611865565b336000908152606860205260409020805483908110610699576106996126c4565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550610726565b33600090815260686020526040902080548590811061071a5761071a6126c4565b60009182526020822001555b600061073160355490565b905061073d3388611917565b6066546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526107d99173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906126f3565b889083611b01565b6066549096506108009073ffffffffffffffffffffffffffffffffffffffff163388611bcf565b5050600160655550919392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610462908290869061085790879061270c565b6111c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561048b57600063ffffffff815b848110156108e75760008686838181106108a8576108a86126c4565b9050602002013590506108bc888286611706565b93505063ffffffff8314156108d157506108e7565b6108dc858385611ca3565b94505060010161088c565b5050509392505050565b6060603780546103d19061262a565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104fd565b6109d182868684036111c8565b506001949350505050565b600033610462818585611453565b600060026065541415610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104fd565b600260655581610ac5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fd565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5891906126f3565b90506000610b6560355490565b606654909150610b8d9073ffffffffffffffffffffffffffffffffffffffff16333087611d2c565b80610ba757606754610ba0908590611d8a565b9250610bb5565b610bb2818584611b01565b92505b60008311610c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016104fd565b610c293384611da9565b336000908152606860205260408120549081610c46576000610ca3565b336000908152606860205260409020610c606001846126ad565b81548110610c7057610c706126c4565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931693508101610cfe610cf9898661270c565b611865565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555092949350505050565b600083610d7357506000610dbe565b818411610db75760008383610d896001886126ad565b818110610d9857610d986126c4565b905060200201359050610dad86826000611706565b9250610dbe915050565b5063ffffffff5b949350505050565b60686020528160005260406000208181548110610de257600080fd5b60009182526020909120015463ffffffff8116925064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905082565b600054610100900460ff1615808015610e425750600054600160ff909116105b80610e5c5750303b158015610e5c575060005460ff166001145b610ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104fd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f4657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f5560208401846124a8565b73ffffffffffffffffffffffffffffffffffffffff161415610fd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016104fd565b6000826020013511611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016104fd565b6110cd6110516040840184612724565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611093925050506060850185612724565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ec992505050565b6110da60208301836124a8565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c906111599033908590612836565b60405180910390a180156111c457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff821661130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461144d5781811015611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104fd565b61144d84848484036111c8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166114f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff8216611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061169390849061270c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116f991815260200190565b60405180910390a361144d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860209081526040808320548151808301909252838252918101839052909190829082905b848610156117fd5761175a8686611f6a565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260686020526040902080549193509083908110611795576117956126c4565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101829052915087116117f257819450611748565b816001019550611748565b8285146118525773ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902080548690811061183b5761183b6126c4565b60009182526020909120015463ffffffff16611858565b63ffffffff5b9350505050935093915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016104fd565b5090565b73ffffffffffffffffffffffffffffffffffffffff82166119ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611aac9084906126ad565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161136f565b505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415611b5a57838281611b5057611b506128da565b049250505061048b565b808411611b6657600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611afc9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f85565b6000826008811115611d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104fd565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261144d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611c21565b6000670de0b6b3a7640000611d9f8385612909565b61048b9190612946565b73ffffffffffffffffffffffffffffffffffffffff8216611e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104fd565b8060356000828254611e38919061270c565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611e7290849061270c565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fd565b6111c48282612091565b6000611f796002848418612946565b61048b9084841661270c565b6000611fe7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661214f9092919063ffffffff16565b805190915015611afc57808060200190518101906120059190612981565b611afc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104fd565b600054610100900460ff16612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fd565b815161213b9060369060208501906122b1565b508051611afc9060379060208401906122b1565b6060610dbe84846000858573ffffffffffffffffffffffffffffffffffffffff85163b6121d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104fd565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161220191906129a3565b60006040518083038185875af1925050503d806000811461223e576040519150601f19603f3d011682016040523d82523d6000602084013e612243565b606091505b509150915061225382828661225e565b979650505050505050565b6060831561226d57508161048b565b82511561227d5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fd91906123af565b8280546122bd9061262a565b90600052602060002090601f0160209004810192826122df5760008555612325565b82601f106122f857805160ff1916838001178555612325565b82800160010185558215612325579182015b8281111561232557825182559160200191906001019061230a565b506119139291505b80821115611913576000815560010161232d565b60006020828403121561235357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461048b57600080fd5b60005b8381101561239e578181015183820152602001612386565b8381111561144d5750506000910152565b60208152600082518060208401526123ce816040850160208701612383565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461242457600080fd5b919050565b6000806040838503121561243c57600080fd5b61244583612400565b946020939093013593505050565b60008060006060848603121561246857600080fd5b61247184612400565b925061247f60208501612400565b9150604084013590509250925092565b6000602082840312156124a157600080fd5b5035919050565b6000602082840312156124ba57600080fd5b61048b82612400565b60008083601f8401126124d557600080fd5b50813567ffffffffffffffff8111156124ed57600080fd5b6020830191508360208260051b850101111561250857600080fd5b9250929050565b60008060006040848603121561252457600080fd5b61252d84612400565b9250602084013567ffffffffffffffff81111561254957600080fd5b612555868287016124c3565b9497909650939450505050565b6000806000806060858703121561257857600080fd5b61258185612400565b935060208501359250604085013567ffffffffffffffff8111156125a457600080fd5b6125b0878288016124c3565b95989497509550505050565b600080604083850312156125cf57600080fd5b6125d883612400565b91506125e660208401612400565b90509250929050565b60006020828403121561260157600080fd5b813567ffffffffffffffff81111561261857600080fd5b82016080818503121561048b57600080fd5b600181811c9082168061263e57607f821691505b60208210811415612678577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156126bf576126bf61267e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561270557600080fd5b5051919050565b6000821982111561271f5761271f61267e565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261275957600080fd5b83018035915067ffffffffffffffff82111561277457600080fd5b60200191503681900382131561250857600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127be57600080fd5b830160208101925035905067ffffffffffffffff8111156127de57600080fd5b80360383131561250857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061286385612400565b16604084015250602083013560608301526128816040840184612789565b60808085015261289560c0850182846127ed565b9150506128a56060850185612789565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526122538382846127ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129415761294161267e565b500290565b60008261297c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561299357600080fd5b8151801515811461048b57600080fd5b600082516129b5818460208701612383565b919091019291505056fea2646970667358221220e68c58075b5c82aa176734b67380aee0a33811e0f64c74463d74e00892f3ad1564736f6c634300080a0033"; + +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/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/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/TierReportTest__factory.ts b/src/typechain/factories/TierReportTest__factory.ts index 3ee9f4a..41ae0e5 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"; + "0x608060405234801561001057600080fd5b506104ee806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063787752041161005057806378775204146100c2578063c29df246146100d5578063f0ef511b146100e857600080fd5b806318cc4ccb146100775780633907cb421461009c578063696dd6c0146100af575b600080fd5b61008a610085366004610438565b6100fb565b60405190815260200160405180910390f35b61008a6100aa366004610464565b610110565b61008a6100bd366004610496565b610127565b61008a6100d0366004610496565b61013c565b61008a6100e3366004610464565b610148565b61008a6100f6366004610496565b610156565b6000610108848484610162565b949350505050565b600061011e858585856101f0565b95945050505050565b60006101338383610214565b90505b92915050565b60006101338383610241565b600061011e858585856102e5565b6000610133838361038b565b60008260088111156101d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b505063ffffffff602090920291821b199290921691901b1790565b600083831061020a57610205858585856102e5565b61011e565b61011e8584610241565b60005b600881101561013657818160200284901c63ffffffff16111561023957610136565b600101610217565b60008160088111156102af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020840290811c901b841791505b5092915050565b6000826008811115610353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b6000855b8581101561037f5763ffffffff6020820290811b199890981685891b17979150600101610357565b50959695505050505050565b60008160088111156103f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b8261040757600091506102de565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008060006060848603121561044d57600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561047a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156104a957600080fd5b5050803592602090910135915056fea2646970667358221220f1da986a94a2a4f14f1e18b4e6480d7c27f4053a71b597802ae688d8bda3454764736f6c634300080a0033"; 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..36478ba --- /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 = + "0x608060405234801561001057600080fd5b506103b1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806388d686041461006e578063caa0eb3b146100b1575b600080fd5b610059610054366004610161565b6100c8565b60405190151581526020015b60405180910390f35b6100a361007c366004610202565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b604051908152602001610065565b6100a36100bf3660046102f1565b42949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006020828403121561017357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146101a357600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101ce57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561021557600080fd5b61021e836101aa565b915060208084013567ffffffffffffffff8082111561023c57600080fd5b818601915086601f83011261025057600080fd5b813581811115610262576102626101d3565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156102a5576102a56101d3565b6040529182528482019250838101850191898311156102c357600080fd5b938501935b828510156102e1578435845293850193928501926102c8565b8096505050505050509250929050565b6000806000806060858703121561030757600080fd5b610310856101aa565b935060208501359250604085013567ffffffffffffffff8082111561033457600080fd5b818701915087601f83011261034857600080fd5b81358181111561035757600080fd5b8860208260051b850101111561036c57600080fd5b9598949750506020019450505056fea2646970667358221220273327074f8d407c4933213d71b6717095e46d39454f99367b4a18548d64103864736f6c634300080a0033"; + +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/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..6d90faf --- /dev/null +++ b/src/typechain/factories/VMStateBuilder__factory.ts @@ -0,0 +1,258 @@ +/* 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: [ + { + 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: "", + type: "uint256[]", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "stackPushes", + outputs: [ + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b50611838806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d5236cd14610051578063661b810d14610051578063aa9628a114610069578063ce19c93514610089575b600080fd5b6060604051610060919061102c565b60405180910390f35b61007c610077366004611384565b61009e565b60405161006091906114a2565b61009c6100973660046114f3565b610363565b005b606060006100ab8561076b565b905060006100bc8260200151610ad0565b9050600080606080825b885181101561018b57866000015161ffff168982815181106100ea576100ea61158e565b602002602001015160a001818152505061011f83838c8c85815181106101125761011261158e565b6020026020010151610363565b61014f8982815181106101345761013461158e565b60200260200101516080015186610b0490919063ffffffff16565b94506101818982815181106101665761016661158e565b60200260200101516060015185610b0490919063ffffffff16565b93506001016100c6565b506000848a60200151510167ffffffffffffffff8111156101ae576101ae611070565b6040519080825280602002602001820160405280156101d7578160200160208202803683370190505b50905060005b8a602001515181101561022d578a6020015181815181106102005761020061158e565b602002602001015182828151811061021a5761021a61158e565b60209081029190910101526001016101dd565b5089515160009067ffffffffffffffff81111561024c5761024c611070565b60405190808252806020026020018201604052801561027f57816020015b606081526020019060019003908161026a5790505b50905060005b8b51518110156102db576102b6888d6000015183815181106102a9576102a961158e565b6020026020010151610b1d565b8282815181106102c8576102c861158e565b6020908102919091010152600101610285565b506103536040518060a00160405280600081526020018767ffffffffffffffff81111561030a5761030a611070565b604051908082528060200260200182016040528015610333578160200160208202803683370190505b5081526020018381526020018481526020018d6020015151815250610cad565b9c9b505050505050505050505050565b805182515181106103d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000808060008060208602602001885101519050805193505b8385101561067e576002850194508481015180601e1a935080601f1a92505060068310156105bf578261049f57876020015151876080015101821061048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4f4f425f434f4e5354414e54000000000000000000000000000000000000000060448201526064016103cc565b6040870180516001019052610661565b6001831415610515578660400151821061048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4f425f535441434b000000000000000000000000000000000000000000000060448201526064016103cc565b600283141561052e576040870180516001019052610661565b60038314156105a4578660a00151821061048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f4f425f53544f5241474500000000000000000000000000000000000000000060448201526064016103cc565b60048314156105ba576105ba8a8a8a8a86610dea565b610661565b60008a84815181106105d3576105d361158e565b6020026020010151905060058111156105f857806105f48463ffffffff8316565b9150505b60408801805182900390819052606089015161061391610b04565b606089015289516000908b908690811061062f5761062f61158e565b60200260200101519050600581111561065457806106508563ffffffff8316565b9150505b6040890180519091019052505b6040870151606088015161067491610b04565b60608801526103ee565b606087015160ff10156106ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016103cc565b86602001518760400151101561075f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064016103cc565b50505050505050505050565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff84811682528183529083902083518085019094525461ffff8116845262010000900416908201819052610acb5760008273ffffffffffffffffffffffffffffffffffffffff163b11610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f53495a455f564d000000000000000000000000000000000000000000000060448201526064016103cc565b60008273ffffffffffffffffffffffffffffffffffffffff1663ea7cb3706040518163ffffffff1660e01b8152600401600060405180830381865afa158015610891573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108d791908101906115bd565b905060008373ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109499190611634565b905061ffff8016816020015111156109bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4f425f53544f524147455f4f50434f4445530000000000000000000000000060448201526064016103cc565b60028251816109ce576109ce611683565b0615610a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f504f494e544552530000000000000000000000000000000060448201526064016103cc565b6040518060400160405280826020015161ffff168152602001610a5884610e8d565b73ffffffffffffffffffffffffffffffffffffffff908116909152858116600090815260208181526040909120835181549285015190931662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090921661ffff90931692909217179055925050505b919050565b6060610afe8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f18565b92915050565b600081831015610b145781610b16565b825b9392505050565b805182516060919060011615610b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4f44445f5041434b45445f50545253000000000000000000000000000000000060448201526064016103cc565b6002810615610bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016103cc565b60006002600383020467ffffffffffffffff811115610c1b57610c1b611070565b6040519080825280601f01601f191660200182016040528015610c45576020820181803683370190505b50905060056002808701908681019085880101600385015b81831015610c9f57825180601e1a86811115610c7e5760020285015161ffff165b81601f1a8160081b1783511783525050600283019250600381019050610c5d565b509398975050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610cf991906116b2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3592916020016116e8565b604051602081830303815290604052905060005b856040015151811015610de1578186604001518281518110610d6d57610d6d61158e565b60200260200101515160001b87604001518381518110610d8f57610d8f61158e565b6020026020010151604051602001610da99392919061170e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610d49565b50949350505050565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c9182900301918290526060840151600190910191610e349190610b04565b60608401526080830151610e489082610b04565b60808401528251600783168085526001600385811c161b919060005b83811015610e8057610e788a8a8a8a610363565b600101610e64565b5050909352505050505050565b600080610eb883604051602001610ea49190611745565b604051602081830303815290604052611000565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610f12576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b80610f37575050604080516020810190915260008152610b16565b80841115610f55575050604080516020810190915260008152610b16565b83831015610fa0576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016103cc565b8383038482036000828210610fb55782610fb7565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b606081518260405160200161101692919061176b565b6040516020818303038152906040529050919050565b6020808252825182820181905260009190848201906040850190845b8181101561106457835183529284019291840191600101611048565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156110c2576110c2611070565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561110f5761110f611070565b604052919050565b600067ffffffffffffffff82111561113157611131611070565b5060051b60200190565b600067ffffffffffffffff82111561115557611155611070565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261119257600080fd5b813560206111a76111a283611117565b6110c8565b82815260059290921b840181019181810190868411156111c657600080fd5b8286015b848110156111e157803583529183019183016111ca565b509695505050505050565b600060408083850312156111ff57600080fd5b61120761109f565b9150823567ffffffffffffffff8082111561122157600080fd5b818501915085601f83011261123557600080fd5b813560206112456111a283611117565b82815260059290921b8401810191818101908984111561126457600080fd5b8286015b848110156112d8578035868111156112805760008081fd5b8701603f81018c136112925760008081fd5b848101356112a26111a28261113b565b8181528d8b8385010111156112b75760008081fd5b818b8401888301376000918101870191909152845250918301918301611268565b50875250868101359450828511156112ef57600080fd5b6112fb88868901611181565b81870152505050505092915050565b600060c0828403121561131c57600080fd5b60405160c0810181811067ffffffffffffffff8211171561133f5761133f611070565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b60008060006060848603121561139957600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146113bd57600080fd5b925060208481013567ffffffffffffffff808211156113db57600080fd5b6113e7888389016111ec565b945060408701359150808211156113fd57600080fd5b508501601f8101871361140f57600080fd5b803561141d6111a282611117565b81815260c0918202830184019184820191908a84111561143c57600080fd5b938501935b83851015611462576114538b8661130a565b83529384019391850191611441565b5080955050505050509250925092565b60005b8381101561148d578181015183820152602001611475565b8381111561149c576000848401525b50505050565b60208152600082518060208401526114c1816040850160208701611472565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080610120858703121561150a57600080fd5b843567ffffffffffffffff8082111561152257600080fd5b61152e88838901611181565b9550602087013591508082111561154457600080fd5b61155088838901611181565b9450604087013591508082111561156657600080fd5b50611573878288016111ec565b925050611583866060870161130a565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156115cf57600080fd5b815167ffffffffffffffff8111156115e657600080fd5b8201601f810184136115f757600080fd5b80516116056111a28261113b565b81815285602083850101111561161a57600080fd5b61162b826020830160208601611472565b95945050505050565b60006040828403121561164657600080fd5b6040516040810181811067ffffffffffffffff8211171561166957611669611070565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b815160009082906020808601845b838110156116dc578151855293820193908201906001016116c0565b50929695505050505050565b82815260008251611700816020850160208701611472565b919091016020019392505050565b60008451611720818460208901611472565b82018481528351611738816020808501908801611472565b0160200195945050505050565b600081526000825161175e816001850160208701611472565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516117f481600e850160208701611472565b91909101600e01939250505056fea26469706673582212204f2c1fdca32218e1412ade29a17d26548ce2502d83562d189816298a5935520b64736f6c634300080a0033"; + +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 deleted file mode 100644 index 1818b2c..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 = - "0x60806040523480156200001157600080fd5b50604051620009eb380380620009eb833981016040819052620000349162000248565b6200003f8162000046565b50620003da565b6000546001600160a01b031615620000625762000062620002da565b6000805b6008811015620001035781838260088110620000865762000086620002f0565b60200201511015620000de5760405162461bcd60e51b815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c5545530000000000000000604482015260640160405180910390fd5b828160088110620000f357620000f3620002f0565b6020020151915060010162000066565b505060006200013e826040516020016200011e919062000306565b604051602081830303815290604052620001a560201b620001021760201c565b604080513381526001600160a01b03831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080546001600160a01b0319166001600160a01b039290921691909117905550565b600080620001df83604051602001620001bf919062000378565b6040516020818303038152906040526200021a60201b6200018d1760201c565b90508051602082016000f091506001600160a01b038216620002145760405163046a55db60e11b815260040160405180910390fd5b50919050565b60608151826040516020016200023292919062000394565b6040516020818303038152906040529050919050565b60006101008083850312156200025d57600080fd5b83601f8401126200026d57600080fd5b6040518181016001600160401b03811182821017156200029d57634e487b7160e01b600052604160045260246000fd5b604052908301908085831115620002b357600080fd5b845b83811015620002cf578051825260209182019101620002b5565b509095945050505050565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6101008101818360005b60088110156200033157815183526020928301929091019060010162000310565b50505092915050565b6000815160005b818110156200035d576020818501810151868301520162000341565b818111156200036d576000828601525b509290920192915050565b6000815260006200038d60018301846200033a565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000620003d2600e8301846200033a565b949350505050565b61060180620003ea6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634bc1010e1461004657806370230b391461006c578063983ca63d14610081575b600080fd5b610059610054366004610372565b610094565b6040519081526020015b60405180910390f35b6100746100ad565b604051610063919061038b565b61005961008f366004610372565b6100ef565b60006100a76100a16100ad565b836101b9565b92915050565b6100b5610353565b6000546100d79073ffffffffffffffffffffffffffffffffffffffff16610207565b8060200190518101906100ea91906103bd565b905090565b60006100a76100fc6100ad565b83610235565b60008061012d83604051602001610119919061049e565b60405160208183030381529060405261018d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610187576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016101a39291906104b1565b6040516020818303038152906040529050919050565b6000805b60088110156101fd578381600881106101d8576101d861053c565b60200201518310156101eb5790506100a7565b806101f58161056b565b9150506101bd565b5060089392505050565b60606100a78260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610267565b6000808211610245576000610260565b82600183036008811061025a5761025a61053c565b60200201515b9392505050565b6060833b80610286575050604080516020810190915260008152610260565b808411156102a4575050604080516020810190915260008152610260565b838310156102f3576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640160405180910390fd5b8383038482036000828210610308578261030a565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6040518061010001604052806008906020820280368337509192915050565b60006020828403121561038457600080fd5b5035919050565b6101008101818360005b60088110156103b4578151835260209283019290910190600101610395565b50505092915050565b60006101008083850312156103d157600080fd5b83601f8401126103e057600080fd5b60405181810181811067ffffffffffffffff82111715610429577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290830190808583111561043e57600080fd5b845b83811015610458578051825260209182019101610440565b509095945050505050565b6000815160005b81811015610484576020818501810151868301520161046a565b81811115610493576000828601525b509290920192915050565b6000815260006102606001830184610463565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610534600e830184610463565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156105c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220401096430b2e2d1c55ffa45639e74e91e5aa9a1bd10a583444beb5c32cdec60664736f6c634300080a0033"; - -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 9d0d191..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 = - "0x608060405234801561001057600080fd5b506102de806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806370230b3914610030575b600080fd5b61003861004e565b60405161004591906101d0565b60405180910390f35b6100566101b1565b6000546100789073ffffffffffffffffffffffffffffffffffffffff16610090565b80602001905181019061008b9190610202565b905090565b60606100be8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6100c4565b92915050565b6060833b806100e35750506040805160208101909152600081526101aa565b808411156101015750506040805160208101909152600081526101aa565b83831015610150576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640160405180910390fd5b83830384820360008282106101655782610167565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156101f95781518352602092830192909101906001016101da565b50505092915050565b600061010080838503121561021657600080fd5b83601f84011261022557600080fd5b60405181810181811067ffffffffffffffff8211171561026e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290830190808583111561028357600080fd5b845b8381101561029d578051825260209182019101610285565b50909594505050505056fea264697066735822122070a9d42a2a57b583b521451cc8323c428bd06f1d3b00f04f1980b108e95fef1364736f6c634300080a0033"; - -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 bf5c9b4..b488887 100644 --- a/src/typechain/factories/VerifyCallbackTest__factory.ts +++ b/src/typechain/factories/VerifyCallbackTest__factory.ts @@ -208,7 +208,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506111e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639897187b1161005b5780639897187b146100ff578063ad285cad14610122578063ebae2d8c14610145578063f24267891461015857600080fd5b8063376dcbe21461008d5780635d0341ba146100a257806389bd6b26146100d95780638f6b1146146100ec575b600080fd5b6100a061009b366004610fbf565b61017b565b005b6100c56100b0366004611045565b60016020526000908152604090205460ff1681565b604051901515815260200160405180910390f35b6100a06100e7366004610fbf565b61053b565b6100a06100fa366004610fbf565b61082a565b6100c561010d366004611045565b60036020526000908152604090205460ff1681565b6100c5610130366004611045565b60026020526000908152604090205460ff1681565b6100a0610153366004610fbf565b610be0565b6100c5610166366004611045565b60006020819052908152604090205460ff1681565b73ffffffffffffffffffffffffffffffffffffffff83166101fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610535576001600084848481811061021e5761021e611067565b90506020028101906102309190611096565b61023e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156102cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5052494f525f415050524f56450000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f83838381811061033757610337611067565b90506020028101906103499190611096565b6103579060208101906110d4565b604051610365929190611140565b6040518091039020146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b6000808484848181106103e9576103e9611067565b90506020028101906103fb9190611096565b610409906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b60018060008585858181106104b0576104b0611067565b90506020028101906104c29190611096565b6104d0906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061052d81611150565b915050610200565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b81811015610535576000808484848181106105d8576105d8611067565b90506020028101906105ea9190611096565b6105f8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f414444000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106106f1576106f1611067565b90506020028101906107039190611096565b6107119060208101906110d4565b60405161071f929190611140565b60405180910390201461078e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b60016000808585858181106107a5576107a5611067565b90506020028101906107b79190611096565b6107c5906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061082281611150565b9150506105bb565b73ffffffffffffffffffffffffffffffffffffffff83166108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b8181101561053557600260008484848181106108c8576108c8611067565b90506020028101906108da9190611096565b6108e8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f42414e000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106109e1576109e1611067565b90506020028101906109f39190611096565b610a019060208101906110d4565b604051610a0f929190611140565b604051809103902014610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610a9357610a93611067565b9050602002810190610aa59190611096565b610ab3906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160026000858585818110610b5b57610b5b611067565b9050602002810190610b6d9190611096565b610b7b906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610bd881611150565b9150506108aa565b73ffffffffffffffffffffffffffffffffffffffff8316610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b818110156105355760036000848484818110610c7e57610c7e611067565b9050602002810190610c909190611096565b610c9e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5052494f525f52454d4f5645000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f838383818110610d9757610d97611067565b9050602002810190610da99190611096565b610db79060208101906110d4565b604051610dc5929190611140565b604051809103902014610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610e4957610e49611067565b9050602002810190610e5b9190611096565b610e69906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160036000858585818110610f1157610f11611067565b9050602002810190610f239190611096565b610f31906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f8e81611150565b915050610c60565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fba57600080fd5b919050565b600080600060408486031215610fd457600080fd5b610fdd84610f96565b9250602084013567ffffffffffffffff80821115610ffa57600080fd5b818601915086601f83011261100e57600080fd5b81358181111561101d57600080fd5b8760208260051b850101111561103257600080fd5b6020830194508093505050509250925092565b60006020828403121561105757600080fd5b61106082610f96565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126110ca57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261110957600080fd5b83018035915067ffffffffffffffff82111561112457600080fd5b60200191503681900382131561113957600080fd5b9250929050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207aa72632d97263a189896305c091f92e32a9895b277725c465cdc94fe515e59964736f6c634300080a0033"; + "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 da822e6..5009e20 100644 --- a/src/typechain/factories/VerifyFactory__factory.ts +++ b/src/typechain/factories/VerifyFactory__factory.ts @@ -134,7 +134,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612c2e8061084783390190565b6080516107836100c4600039600081816093015261037a01526107836000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638ce7fcc8146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461051c565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c336600461058e565b6102bf565b6101016100d63660046105cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105ef565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610637565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906106aa565b92915050565b600080610371838501856106c7565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061043a565b6040517fb6a597dd000000000000000000000000000000000000000000000000000000008152835173ffffffffffffffffffffffffffffffffffffffff90811660048301526020850151811660248301529192509082169063b6a597dd90604401600060405180830381600087803b15801561041957600080fd5b505af115801561042d573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052f57600080fd5b823567ffffffffffffffff8082111561054757600080fd5b818501915085601f83011261055b57600080fd5b81358181111561056a57600080fd5b86602082850101111561057c57600080fd5b60209290920196919550909350505050565b6000604082840312156105a057600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b50565b6000602082840312156105dd57600080fd5b81356105e8816105a6565b9392505050565b6040810182356105fe816105a6565b73ffffffffffffffffffffffffffffffffffffffff9081168352602084013590610627826105a6565b8082166020850152505092915050565b600060208083528351808285015260005b8181101561066457858101830151858201604001528201610648565b81811115610676576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106bc57600080fd5b81516105e8816105a6565b6000604082840312156106d957600080fd5b6040516040810181811067ffffffffffffffff82111715610723577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610731816105a6565b81526020830135610741816105a6565b6020820152939250505056fea2646970667358221220e94ce9356cfc4963192e058be8295ac1ad722cac14680534e7e7086e934abdfe64736f6c634300080a0033608060405234801561001057600080fd5b50612c0e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80637c7d7f7a116100e3578063b8c55bfa1161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b8c55bfa14610486578063ba658111146104ad578063cd491526146104c057600080fd5b80639f839222116100bd5780639f83922214610458578063a217fddf1461046b578063b6a597dd1461047357600080fd5b80637c7d7f7a146103da57806381792e44146103ed57806391d148541461041457600080fd5b806331e658a51161014557806342c8a14d1161011f57806342c8a14d1461038d5780635df0675a146103a05780637547a867146103b357600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046122d6565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612318565b60009081526020819052604090206001015490565b61029c61029736600461235a565b6105a5565b005b6103246102ac366004612386565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c61036136600461235a565b6105d0565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61023161039b36600461245c565b610688565b61029c6103ae3660046124e0565b6106f6565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103e8366004612622565b610825565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061042236600461235a565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c610466366004612622565b610c52565b610231600081565b61029c6104813660046126e5565b610ef8565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b61029c6104bb3660046126fd565b611324565b61029c6104ce3660046124e0565b61166e565b61029c6104e136600461235a565b611aad565b61029c6104f43660046124e0565b611ad3565b61029c6105073660046124e0565b611c02565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c18133611d31565b6105cb8383611e01565b505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106848282611ef1565b5050565b60006001836000015163ffffffff1610156106a55750600061059f565b81836040015163ffffffff16116106be5750600361059f565b81836020015163ffffffff16116106d75750600261059f565b825163ffffffff1682106106ed5750600161059f565b50600092915050565b336000908152600260208181526040928390208351606081018552905463ffffffff80821683526401000000008204811693830193909352680100000000000000009004909116928101929092529061074f9043610688565b146107b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d338484848181106107f5576107f561275d565b9050602002810190610807919061278c565b6040516108159291906127ca565b60405180910390a16001016107b9565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316108508133611d31565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610889576108896123a1565b6040519080825280602002602001820160405280156108b2578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108d1576108d16123a1565b6040519080825280602002602001820160405280156108fa578160200160208202803683370190505b50905060008060005b8751811015610afa5760008882815181106109205761092061275d565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff808216808452640100000000830482169684019690965268010000000000000000909104169181019190915298509150600111156109e557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506109de868286611fa8565b6001909301925b602087015163ffffffff9081161415610ab85763ffffffff4381166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610ab1858285611fa8565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610ae9929190612968565b60405180910390a150600101610903565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610c48578215610bb157610b2a8584611fd2565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b7e9033908990600401612997565b600060405180830381600087803b158015610b9857600080fd5b505af1158015610bac573d6000803e3d6000fd5b505050505b8115610c4857610bc18483611fd2565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610c159033908890600401612997565b600060405180830381600087803b158015610c2f57600080fd5b505af1158015610c43573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c7d8133611d31565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610cb657610cb66123a1565b604051908082528060200260200182016040528015610cdf578160200160208202803683370190505b5090506000805b8551811015610e39576000868281518110610d0357610d0361275d565b6020026020010151905060026000888481518110610d2357610d2361275d565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610df757805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610df0848285611fa8565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610e28929190612968565b60405180910390a150600101610ce6565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610ef0578115610ef057610e698383611fd2565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610ebd9033908790600401612997565b600060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff16610f135760015460ff1615610f17565b303b155b610fa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610671565b600154610100900460ff16158015610fe257600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6000610ff16020840184612386565b73ffffffffffffffffffffffffffffffffffffffff16141561106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610671565b6110997f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80612041565b6110e37f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c612041565b61110d7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180612041565b6111577f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1612041565b6111817fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80612041565b6111cb7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d612041565b6112017f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6111fc6020850185612386565b611e01565b6112327f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16111fc6020850185612386565b6112637fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6111fc6020850185612386565b6112736040830160208401612386565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906112ea9033908590612a35565b60405180910390a1801561068457600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113798243610688565b90506002811415801561138d575060038114155b6113f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610671565b806114c257604080516060808201835260008083526020808401829052928401528251908101835263ffffffff438116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906115589033908490612968565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610ef057604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161159657905050905082816000815181106115d4576115d461275d565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906116339033908590600401612997565b600060405180830381600087803b15801561164d57600080fd5b505af1158015611661573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116998133611d31565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff8111156116cf576116cf6123a1565b6040519080825280602002602001820160405280156116f8578160200160208202803683370190505b50905060008467ffffffffffffffff811115611716576117166123a1565b60405190808252806020026020018201604052801561173f578160200160208202803683370190505b50905060008060005b878110156119545760008989838181106117645761176461275d565b9050602002810190611776919061278c565b61177f90612a7f565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff80821680845264010000000083048216948401949094526801000000000000000090910416928101929092529098509091506001111561183d57604080516060808201835260008083526020808401829052928401528251908101835263ffffffff4381168252918101829052918201529650611836868286611fa8565b6001909301925b604087015163ffffffff90811614156119125763ffffffff4381166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009094169190951617919091179190911691909117905561190b858285611fa8565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d23382604051611943929190612968565b60405180910390a150600101611748565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611aa2578215611a0b576119848584611fd2565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b26906119d89033908990600401612997565b600060405180830381600087803b1580156119f257600080fd5b505af1158015611a06573d6000803e3d6000fd5b505050505b8115611aa257611a1b8483611fd2565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611a6f9033908890600401612997565b600060405180830381600087803b158015611a8957600080fd5b505af1158015611a9d573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611ac98133611d31565b6105cb8383611ef1565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b2c9043610688565b14611b93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611bd257611bd261275d565b9050602002810190611be4919061278c565b604051611bf29291906127ca565b60405180910390a1600101611b96565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611c5b9043610688565b14611cc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d0157611d0161275d565b9050602002810190611d13919061278c565b604051611d219291906127ca565b60405180910390a1600101611cc5565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661068457611d878173ffffffffffffffffffffffffffffffffffffffff16601461208c565b611d9283602061208c565b604051602001611da3929190612a8b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067191600401612b0c565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106845760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e933390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106845760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611fc057611fc061275d565b60200260200101818152505050505050565b815181111561203d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610671565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6060600061209b836002612b4e565b6120a6906002612b8b565b67ffffffffffffffff8111156120be576120be6123a1565b6040519080825280601f01601f1916602001820160405280156120e8576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061211f5761211f61275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121825761218261275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006121be846002612b4e565b6121c9906001612b8b565b90505b6001811115612266577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061220a5761220a61275d565b1a60f81b8282815181106122205761222061275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361225f81612ba3565b90506121cc565b5083156122cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610671565b9392505050565b6000602082840312156122e857600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146122cf57600080fd5b60006020828403121561232a57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461235557600080fd5b919050565b6000806040838503121561236d57600080fd5b8235915061237d60208401612331565b90509250929050565b60006020828403121561239857600080fd5b6122cf82612331565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156123f3576123f36123a1565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612440576124406123a1565b604052919050565b803563ffffffff8116811461235557600080fd5b600080828403608081121561247057600080fd5b606081121561247e57600080fd5b506040516060810181811067ffffffffffffffff821117156124a2576124a26123a1565b6040526124ae84612448565b81526124bc60208501612448565b60208201526124cd60408501612448565b6040820152946060939093013593505050565b600080602083850312156124f357600080fd5b823567ffffffffffffffff8082111561250b57600080fd5b818501915085601f83011261251f57600080fd5b81358181111561252e57600080fd5b8660208260051b850101111561254357600080fd5b60209290920196919550909350505050565b60006040828403121561256757600080fd5b61256f6123d0565b905061257a82612331565b815260208083013567ffffffffffffffff8082111561259857600080fd5b818501915085601f8301126125ac57600080fd5b8135818111156125be576125be6123a1565b6125ee847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123f9565b9150808252868482850101111561260457600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561263557600080fd5b823567ffffffffffffffff8082111561264d57600080fd5b818501915085601f83011261266157600080fd5b813581811115612673576126736123a1565b8060051b6126828582016123f9565b918252838101850191858101908984111561269c57600080fd5b86860192505b838310156126d8578235858111156126ba5760008081fd5b6126c88b89838a0101612555565b83525091860191908601906126a2565b9998505050505050505050565b6000604082840312156126f757600080fd5b50919050565b6000806020838503121561271057600080fd5b823567ffffffffffffffff8082111561272857600080fd5b818501915085601f83011261273c57600080fd5b81358181111561274b57600080fd5b86602082850101111561254357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127c057600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806127f785612331565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261283357600080fd5b8301803567ffffffffffffffff81111561284c57600080fd5b80360385131561285b57600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156128cc5781810151838201526020016128b4565b838111156128db576000848401525b50505050565b600081518084526128f98160208601602086016128b1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8151168252600060208201516040602085015261296060408501826128e1565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612960604083018461292b565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612a27577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612a1586835161292b565b955092840192908401906001016129db565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612a5e85612331565b16602084015280612a7160208601612331565b166040840152509392505050565b600061059f3683612555565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612ac38160178501602088016128b1565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b008160288401602088016128b1565b01602801949350505050565b6020815260006122cf60208301846128e1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b8657612b86612b1f565b500290565b60008219821115612b9e57612b9e612b1f565b500190565b600081612bb257612bb2612b1f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea264697066735822122091621b417b280d6f5c8f42ecf2f9357ced6177583277563110b6751c1a7a13e864736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612d4d806107b983390190565b6080516106f56100c4600039600081816093015261033801526106f56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638ce7fcc8146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610531565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610625565b6102bd565b6101016100d6366004610666565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600090815561019583610318565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b6000610312826040516020016102fe9190815173ffffffffffffffffffffffffffffffffffffffff9081168252602092830151169181019190915260400190565b604051602081830303815290604052610111565b92915050565b6000808280602001905181019061032f919061068a565b9050600061035c7f00000000000000000000000000000000000000000000000000000000000000006103f7565b6040517fb6a597dd000000000000000000000000000000000000000000000000000000008152835173ffffffffffffffffffffffffffffffffffffffff90811660048301526020850151811660248301529192509082169063b6a597dd90604401600060405180830381600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561052b5761052b6104d9565b60405290565b60006020828403121561054357600080fd5b813567ffffffffffffffff8082111561055b57600080fd5b818401915084601f83011261056f57600080fd5b813581811115610581576105816104d9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105c7576105c76104d9565b816040528281528760208487010111156105e057600080fd5b826020860160208301376000928101602001929092525095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461062257600080fd5b50565b60006040828403121561063757600080fd5b61063f610508565b823561064a81610600565b8152602083013561065a81610600565b60208201529392505050565b60006020828403121561067857600080fd5b813561068381610600565b9392505050565b60006040828403121561069c57600080fd5b6106a4610508565b82516106af81610600565b8152602083015161065a8161060056fea264697066735822122095b192b4605b1b22ec9d3d9fd96672b2633e71eb5a320301d1a604809ff6ad7664736f6c634300080a003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600154610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60015460ff9081161015620000e2576001805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612c5980620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab366004612328565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b61023161027436600461236a565b60009081526020819052604090206001015490565b61029c6102973660046123ac565b6105a5565b005b6103246102ac3660046123d8565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c6103613660046123ac565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b3660046123f3565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046125dc565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f3660046123ac565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046125dc565b610be2565b610231600081565b61029c61046e36600461269f565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a836600461270e565b6112fd565b61029c6104bb366004612792565b61136b565b61029c6104ce3660046123f3565b6116b5565b61029c6104e13660046123ac565b611af3565b61029c6104f43660046123f3565b611b18565b61029c6105073660046123f3565b611c47565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611d76565b6105ca8383611d83565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611e73565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e090426112fd565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d33848484818110610786576107866127f2565b90506020028101906107989190612821565b6040516107a692919061285f565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611d76565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff81111561081957610819612468565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff81111561086157610861612468565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b06127f2565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611f2a565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611f2a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a799291906129fd565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611f54565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612a2c565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611f54565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612a2c565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611d76565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c45612468565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c926127f2565b6020026020010151905060026000888481518110610cb257610cb26127f2565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611f2a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db79291906129fd565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611f54565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612a2c565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff1615808015610ea457506001805460ff16105b80610ebd5750303b158015610ebd57506001805460ff16145b610f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790558015610fa657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b815173ffffffffffffffffffffffffffffffffffffffff16611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b61104e7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80611fc3565b6110987f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611fc3565b6110c27f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180611fc3565b61110c7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611fc3565b6111367fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80611fc3565b6111807f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611fc3565b6111ae7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8360000151611d83565b6111dc7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18360000151611d83565b61120a7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8360000151611d83565b60208281018051600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055604080513381528651831694810194909452915116908201527fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d09060600160405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff16101561131a5750600061059f565b81836040015163ffffffff16116113335750600361059f565b81836020015163ffffffff161161134c5750600261059f565b825163ffffffff1682106113625750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113c082426112fd565b9050600281141580156113d4575060038114155b61143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061150957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d9061159f90339084906129fd565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816115dd579050509050828160008151811061161b5761161b6127f2565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b269061167a9033908590600401612a2c565b600060405180830381600087803b15801561169457600080fd5b505af11580156116a8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116df81611d76565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff81111561171557611715612468565b60405190808252806020026020018201604052801561173e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561175c5761175c612468565b604051908082528060200260200182016040528015611785578160200160208202803683370190505b50905060008060005b8781101561199a5760008989838181106117aa576117aa6127f2565b90506020028101906117bc9190612821565b6117c590612aca565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff80821680845264010000000083048216948401949094526801000000000000000090910416928101929092529098509091506001111561188357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061187c868286611f2a565b6001909301925b604087015163ffffffff90811614156119585763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611951858285611f2a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516119899291906129fd565b60405180910390a15060010161178e565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611ae8578215611a51576119ca8584611f54565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690611a1e9033908990600401612a2c565b600060405180830381600087803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b505050505b8115611ae857611a618483611f54565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611ab59033908890600401612a2c565b600060405180830381600087803b158015611acf57600080fd5b505af1158015611ae3573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611b0e81611d76565b6105ca8383611e73565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b7190426112fd565b14611bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611c1757611c176127f2565b9050602002810190611c299190612821565b604051611c3792919061285f565b60405180910390a1600101611bdb565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ca090426112fd565b14611d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d4657611d466127f2565b9050602002810190611d589190612821565b604051611d6692919061285f565b60405180910390a1600101611d0a565b611d80813361200e565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e153390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611f4257611f426127f2565b60200260200101818152505050505050565b8151811115611fbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610683576120648173ffffffffffffffffffffffffffffffffffffffff1660146120de565b61206f8360206120de565b604051602001612080929190612ad6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612b57565b606060006120ed836002612b99565b6120f8906002612bd6565b67ffffffffffffffff81111561211057612110612468565b6040519080825280601f01601f19166020018201604052801561213a576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612171576121716127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121d4576121d46127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612210846002612b99565b61221b906001612bd6565b90505b60018111156122b8577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061225c5761225c6127f2565b1a60f81b828281518110612272576122726127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122b181612bee565b905061221e565b508315612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561233a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461232157600080fd5b60006020828403121561237c57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123a757600080fd5b919050565b600080604083850312156123bf57600080fd5b823591506123cf60208401612383565b90509250929050565b6000602082840312156123ea57600080fd5b61232182612383565b6000806020838503121561240657600080fd5b823567ffffffffffffffff8082111561241e57600080fd5b818501915085601f83011261243257600080fd5b81358181111561244157600080fd5b8660208260051b850101111561245657600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156124ba576124ba612468565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561250757612507612468565b604052919050565b60006040828403121561252157600080fd5b612529612497565b905061253482612383565b815260208083013567ffffffffffffffff8082111561255257600080fd5b818501915085601f83011261256657600080fd5b81358181111561257857612578612468565b6125a8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016124c0565b915080825286848285010111156125be57600080fd5b80848401858401376000908201840152918301919091525092915050565b600060208083850312156125ef57600080fd5b823567ffffffffffffffff8082111561260757600080fd5b818501915085601f83011261261b57600080fd5b81358181111561262d5761262d612468565b8060051b61263c8582016124c0565b918252838101850191858101908984111561265657600080fd5b86860192505b83831015612692578235858111156126745760008081fd5b6126828b89838a010161250f565b835250918601919086019061265c565b9998505050505050505050565b6000604082840312156126b157600080fd5b6040516040810181811067ffffffffffffffff821117156126d4576126d4612468565b6040526126e083612383565b81526126ee60208401612383565b60208201529392505050565b803563ffffffff811681146123a757600080fd5b600080828403608081121561272257600080fd5b606081121561273057600080fd5b506040516060810181811067ffffffffffffffff8211171561275457612754612468565b604052612760846126fa565b815261276e602085016126fa565b602082015261277f604085016126fa565b6040820152946060939093013593505050565b600080602083850312156127a557600080fd5b823567ffffffffffffffff808211156127bd57600080fd5b818501915085601f8301126127d157600080fd5b8135818111156127e057600080fd5b86602082850101111561245657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261285557600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061288c85612383565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128c857600080fd5b8301803567ffffffffffffffff8111156128e157600080fd5b8036038513156128f057600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b83811015612961578181015183820152602001612949565b83811115612970576000848401525b50505050565b6000815180845261298e816020860160208601612946565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff815116825260006020820151604060208501526129f56040850182612976565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006129f560408301846129c0565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612abc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612aaa8683516129c0565b95509284019290840190600101612a70565b509398975050505050505050565b600061059f368361250f565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b0e816017850160208801612946565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b4b816028840160208801612946565b01602801949350505050565b6020815260006123216020830184612976565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bd157612bd1612b6a565b500290565b60008219821115612be957612be9612b6a565b500190565b600081612bfd57612bfd612b6a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220296cff4dcea9f4275b1211dc3f87dfe8fd16364241623bfee2195df62e92b95d64736f6c634300080a0033"; type VerifyFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyTierFactory__factory.ts b/src/typechain/factories/VerifyTierFactory__factory.ts index 71403a4..4e9b5fa 100644 --- a/src/typechain/factories/VerifyTierFactory__factory.ts +++ b/src/typechain/factories/VerifyTierFactory__factory.ts @@ -125,7 +125,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61076d8061075083390190565b60805161068c6100c46000396000818160930152610377015261068c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063b5367451146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461050b565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c33660046105a2565b6102bf565b6101016100d63660046105a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610196848461035f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201526000913091632ea72a4991016040516020818303038152906040526040518263ffffffff1660e01b815260040161031691906105c6565b6020604051808303816000875af1158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610639565b92915050565b60008061036e838501856105a2565b9050600061039b7f0000000000000000000000000000000000000000000000000000000000000000610429565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063c4d66de890602401600060405180830381600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561051e57600080fd5b823567ffffffffffffffff8082111561053657600080fd5b818501915085601f83011261054a57600080fd5b81358181111561055957600080fd5b86602082850101111561056b57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059f57600080fd5b50565b6000602082840312156105b457600080fd5b81356105bf8161057d565b9392505050565b600060208083528351808285015260005b818110156105f3578581018301518582016040015282016105d7565b81811115610605576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561064b57600080fd5b81516105bf8161057d56fea2646970667358221220046da658046f0d1b0da45ab03f664ca9191b9fff40f56efb3e424f10055f2cf964736f6c634300080a0033608060405234801561001057600080fd5b5061074d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063c4d66de81461005b578063e053ea311461006e575b600080fd5b6100596100543660046105b5565b610093565b005b61005961006936600461063c565b6100fa565b61008161007c36600461063c565b610319565b60405190815260200160405180910390f35b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff166101155760005460ff1615610119565b303b155b6101a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b600054610100900460ff161580156101e457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b73ffffffffffffffffffffffffffffffffffffffff8216610261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016100f1565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561031557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b4919061066b565b600054604080517f42c8a14d000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524360648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff16906342c8a14d90608401602060405180830381865afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906106fe565b14156104be576104b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff166104e6565b9392505050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b6000826008811115610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b858110156105805763ffffffff6020820290811b199890981685891b17979150600101610558565b50959695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105b057600080fd5b919050565b600080600080606085870312156105cb57600080fd5b6105d48561058c565b935060208501359250604085013567ffffffffffffffff808211156105f857600080fd5b818701915087601f83011261060c57600080fd5b81358181111561061b57600080fd5b88602082850101111561062d57600080fd5b95989497505060200194505050565b60006020828403121561064e57600080fd5b6104b78261058c565b805163ffffffff811681146105b057600080fd5b60006060828403121561067d57600080fd5b6040516060810181811067ffffffffffffffff821117156106c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526106d383610657565b81526106e160208401610657565b60208201526106f260408401610657565b60408201529392505050565b60006020828403121561071057600080fd5b505191905056fea2646970667358221220113bff9ac919f55f19b525dc42e478a9a92d8bc1bea59c6275bcccfcad2756ec64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b610c108061071083390190565b60805161064c6100c4600039600081816093015261031f015261064c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063b5367451146100b5578063fc91a897146100c8575b600080fd5b61006461005f3660046104e1565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c33660046105d5565b6102bd565b6101016100d63660046105d5565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610195836102ff565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201526000916102f99101604051602081830303815290604052610111565b92915050565b6000808280602001905181019061031691906105f9565b905060006103437f00000000000000000000000000000000000000000000000000000000000000006103d0565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063c4d66de890602401600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156104f357600080fd5b813567ffffffffffffffff8082111561050b57600080fd5b818401915084601f83011261051f57600080fd5b813581811115610531576105316104b2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610577576105776104b2565b8160405282815287602084870101111561059057600080fd5b826020860160208301376000928101602001929092525095945050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105d257600080fd5b50565b6000602082840312156105e757600080fd5b81356105f2816105b0565b9392505050565b60006020828403121561060b57600080fd5b81516105f2816105b056fea2646970667358221220cb5d34880cd6a24bbf962b2dc6462fecd4f6a7b023ff0cc0cb7d202ccd43a63364736f6c634300080a0033608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610b23806100ed6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f366004610806565b6100c2565b60405190151581526020015b60405180910390f35b61008c6100873660046108f6565b61015b565b604051908152602001610070565b6100ad6100a83660046109af565b61032a565b005b61008c6100bd3660046109ca565b6105bc565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610ad4565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff16610760565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b600054610100900460ff161580801561034a5750600054600160ff909116105b806103645750303b158015610364575060005460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166104d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016103ec565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156105b857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106579190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c9190610ad4565b1415610733576020015163ffffffff169050610758565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156107ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b858110156107fa5763ffffffff6020820290811b199890981685891b179791506001016107d2565b50959695505050505050565b60006020828403121561081857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461084857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108ee576108ee610878565b604052919050565b6000806040838503121561090957600080fd5b6109128361084f565b915060208084013567ffffffffffffffff8082111561093057600080fd5b818601915086601f83011261094457600080fd5b81358181111561095657610956610878565b8060051b91506109678483016108a7565b818152918301840191848101908984111561098157600080fd5b938501935b8385101561099f57843582529385019390850190610986565b8096505050505050509250929050565b6000602082840312156109c157600080fd5b6108488261084f565b600080600080606085870312156109e057600080fd5b6109e98561084f565b935060208501359250604085013567ffffffffffffffff80821115610a0d57600080fd5b818701915087601f830112610a2157600080fd5b813581811115610a3057600080fd5b8860208260051b8501011115610a4557600080fd5b95989497505060200194505050565b805163ffffffff8116811461087357600080fd5b600060608284031215610a7a57600080fd5b6040516060810181811067ffffffffffffffff82111715610a9d57610a9d610878565b604052610aa983610a54565b8152610ab760208401610a54565b6020820152610ac860408401610a54565b60408201529392505050565b600060208284031215610ae657600080fd5b505191905056fea264697066735822122079f4bfe1a984c53748413132faf71353708f021af36650539764ce7d5caeeee164736f6c634300080a0033"; type VerifyTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyTier__factory.ts b/src/typechain/factories/VerifyTier__factory.ts index d078adc..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: [ @@ -30,36 +35,12 @@ const _abi = [ 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", + internalType: "uint8", + name: "version", + type: "uint8", }, ], - name: "TierChange", + name: "Initialized", type: "event", }, { @@ -82,6 +63,11 @@ const _abi = [ name: "account_", type: "address", }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, ], name: "report", outputs: [ @@ -98,7 +84,7 @@ const _abi = [ inputs: [ { internalType: "address", - name: "", + name: "account_", type: "address", }, { @@ -107,20 +93,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 = - "0x608060405234801561001057600080fd5b5061074d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063c4d66de81461005b578063e053ea311461006e575b600080fd5b6100596100543660046105b5565b610093565b005b61005961006936600461063c565b6100fa565b61008161007c36600461063c565b610319565b60405190815260200160405180910390f35b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff166101155760005460ff1615610119565b303b155b6101a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b600054610100900460ff161580156101e457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b73ffffffffffffffffffffffffffffffffffffffff8216610261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016100f1565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561031557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b4919061066b565b600054604080517f42c8a14d000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524360648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff16906342c8a14d90608401602060405180830381865afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906106fe565b14156104be576104b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff166104e6565b9392505050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b6000826008811115610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b858110156105805763ffffffff6020820290811b199890981685891b17979150600101610558565b50959695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105b057600080fd5b919050565b600080600080606085870312156105cb57600080fd5b6105d48561058c565b935060208501359250604085013567ffffffffffffffff808211156105f857600080fd5b818701915087601f83011261060c57600080fd5b81358181111561061b57600080fd5b88602082850101111561062d57600080fd5b95989497505060200194505050565b60006020828403121561064e57600080fd5b6104b78261058c565b805163ffffffff811681146105b057600080fd5b60006060828403121561067d57600080fd5b6040516060810181811067ffffffffffffffff821117156106c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526106d383610657565b81526106e160208401610657565b60208201526106f260408401610657565b60408201529392505050565b60006020828403121561071057600080fd5b505191905056fea2646970667358221220113bff9ac919f55f19b525dc42e478a9a92d8bc1bea59c6275bcccfcad2756ec64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610b23806100ed6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f366004610806565b6100c2565b60405190151581526020015b60405180910390f35b61008c6100873660046108f6565b61015b565b604051908152602001610070565b6100ad6100a83660046109af565b61032a565b005b61008c6100bd3660046109ca565b6105bc565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610ad4565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff16610760565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b600054610100900460ff161580801561034a5750600054600160ff909116105b806103645750303b158015610364575060005460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166104d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016103ec565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156105b857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106579190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c9190610ad4565b1415610733576020015163ffffffff169050610758565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156107ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b858110156107fa5763ffffffff6020820290811b199890981685891b179791506001016107d2565b50959695505050505050565b60006020828403121561081857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461084857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108ee576108ee610878565b604052919050565b6000806040838503121561090957600080fd5b6109128361084f565b915060208084013567ffffffffffffffff8082111561093057600080fd5b818601915086601f83011261094457600080fd5b81358181111561095657610956610878565b8060051b91506109678483016108a7565b818152918301840191848101908984111561098157600080fd5b938501935b8385101561099f57843582529385019390850190610986565b8096505050505050509250929050565b6000602082840312156109c157600080fd5b6108488261084f565b600080600080606085870312156109e057600080fd5b6109e98561084f565b935060208501359250604085013567ffffffffffffffff80821115610a0d57600080fd5b818701915087601f830112610a2157600080fd5b813581811115610a3057600080fd5b8860208260051b8501011115610a4557600080fd5b95989497505060200194505050565b805163ffffffff8116811461087357600080fd5b600060608284031215610a7a57600080fd5b6040516060810181811067ffffffffffffffff82111715610a9d57610a9d610878565b604052610aa983610a54565b8152610ab760208401610a54565b6020820152610ac860408401610a54565b60408201529392505050565b600060208284031215610ae657600080fd5b505191905056fea264697066735822122079f4bfe1a984c53748413132faf71353708f021af36650539764ce7d5caeeee164736f6c634300080a0033"; type VerifyTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Verify__factory.ts b/src/typechain/factories/Verify__factory.ts index fd613b7..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: [ @@ -99,6 +104,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: [ @@ -749,15 +767,15 @@ const _abi = [ }, { internalType: "uint256", - name: "blockNumber_", + name: "timestamp_", type: "uint256", }, ], - name: "statusAtBlock", + name: "statusAtTime", outputs: [ { internalType: "uint256", - name: "", + name: "status_", type: "uint256", }, ], @@ -786,7 +804,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50612c0e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80637c7d7f7a116100e3578063b8c55bfa1161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b8c55bfa14610486578063ba658111146104ad578063cd491526146104c057600080fd5b80639f839222116100bd5780639f83922214610458578063a217fddf1461046b578063b6a597dd1461047357600080fd5b80637c7d7f7a146103da57806381792e44146103ed57806391d148541461041457600080fd5b806331e658a51161014557806342c8a14d1161011f57806342c8a14d1461038d5780635df0675a146103a05780637547a867146103b357600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046122d6565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612318565b60009081526020819052604090206001015490565b61029c61029736600461235a565b6105a5565b005b6103246102ac366004612386565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c61036136600461235a565b6105d0565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61023161039b36600461245c565b610688565b61029c6103ae3660046124e0565b6106f6565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103e8366004612622565b610825565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061042236600461235a565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c610466366004612622565b610c52565b610231600081565b61029c6104813660046126e5565b610ef8565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b61029c6104bb3660046126fd565b611324565b61029c6104ce3660046124e0565b61166e565b61029c6104e136600461235a565b611aad565b61029c6104f43660046124e0565b611ad3565b61029c6105073660046124e0565b611c02565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c18133611d31565b6105cb8383611e01565b505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106848282611ef1565b5050565b60006001836000015163ffffffff1610156106a55750600061059f565b81836040015163ffffffff16116106be5750600361059f565b81836020015163ffffffff16116106d75750600261059f565b825163ffffffff1682106106ed5750600161059f565b50600092915050565b336000908152600260208181526040928390208351606081018552905463ffffffff80821683526401000000008204811693830193909352680100000000000000009004909116928101929092529061074f9043610688565b146107b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d338484848181106107f5576107f561275d565b9050602002810190610807919061278c565b6040516108159291906127ca565b60405180910390a16001016107b9565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316108508133611d31565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610889576108896123a1565b6040519080825280602002602001820160405280156108b2578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108d1576108d16123a1565b6040519080825280602002602001820160405280156108fa578160200160208202803683370190505b50905060008060005b8751811015610afa5760008882815181106109205761092061275d565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff808216808452640100000000830482169684019690965268010000000000000000909104169181019190915298509150600111156109e557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506109de868286611fa8565b6001909301925b602087015163ffffffff9081161415610ab85763ffffffff4381166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610ab1858285611fa8565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610ae9929190612968565b60405180910390a150600101610903565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610c48578215610bb157610b2a8584611fd2565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b7e9033908990600401612997565b600060405180830381600087803b158015610b9857600080fd5b505af1158015610bac573d6000803e3d6000fd5b505050505b8115610c4857610bc18483611fd2565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610c159033908890600401612997565b600060405180830381600087803b158015610c2f57600080fd5b505af1158015610c43573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c7d8133611d31565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610cb657610cb66123a1565b604051908082528060200260200182016040528015610cdf578160200160208202803683370190505b5090506000805b8551811015610e39576000868281518110610d0357610d0361275d565b6020026020010151905060026000888481518110610d2357610d2361275d565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610df757805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610df0848285611fa8565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610e28929190612968565b60405180910390a150600101610ce6565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610ef0578115610ef057610e698383611fd2565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610ebd9033908790600401612997565b600060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff16610f135760015460ff1615610f17565b303b155b610fa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610671565b600154610100900460ff16158015610fe257600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6000610ff16020840184612386565b73ffffffffffffffffffffffffffffffffffffffff16141561106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610671565b6110997f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80612041565b6110e37f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c612041565b61110d7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180612041565b6111577f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1612041565b6111817fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80612041565b6111cb7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d612041565b6112017f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6111fc6020850185612386565b611e01565b6112327f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16111fc6020850185612386565b6112637fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6111fc6020850185612386565b6112736040830160208401612386565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906112ea9033908590612a35565b60405180910390a1801561068457600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113798243610688565b90506002811415801561138d575060038114155b6113f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610671565b806114c257604080516060808201835260008083526020808401829052928401528251908101835263ffffffff438116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906115589033908490612968565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610ef057604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161159657905050905082816000815181106115d4576115d461275d565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906116339033908590600401612997565b600060405180830381600087803b15801561164d57600080fd5b505af1158015611661573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116998133611d31565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff8111156116cf576116cf6123a1565b6040519080825280602002602001820160405280156116f8578160200160208202803683370190505b50905060008467ffffffffffffffff811115611716576117166123a1565b60405190808252806020026020018201604052801561173f578160200160208202803683370190505b50905060008060005b878110156119545760008989838181106117645761176461275d565b9050602002810190611776919061278c565b61177f90612a7f565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff80821680845264010000000083048216948401949094526801000000000000000090910416928101929092529098509091506001111561183d57604080516060808201835260008083526020808401829052928401528251908101835263ffffffff4381168252918101829052918201529650611836868286611fa8565b6001909301925b604087015163ffffffff90811614156119125763ffffffff4381166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009094169190951617919091179190911691909117905561190b858285611fa8565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d23382604051611943929190612968565b60405180910390a150600101611748565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611aa2578215611a0b576119848584611fd2565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b26906119d89033908990600401612997565b600060405180830381600087803b1580156119f257600080fd5b505af1158015611a06573d6000803e3d6000fd5b505050505b8115611aa257611a1b8483611fd2565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611a6f9033908890600401612997565b600060405180830381600087803b158015611a8957600080fd5b505af1158015611a9d573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611ac98133611d31565b6105cb8383611ef1565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b2c9043610688565b14611b93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611bd257611bd261275d565b9050602002810190611be4919061278c565b604051611bf29291906127ca565b60405180910390a1600101611b96565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611c5b9043610688565b14611cc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d0157611d0161275d565b9050602002810190611d13919061278c565b604051611d219291906127ca565b60405180910390a1600101611cc5565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661068457611d878173ffffffffffffffffffffffffffffffffffffffff16601461208c565b611d9283602061208c565b604051602001611da3929190612a8b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067191600401612b0c565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106845760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e933390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106845760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611fc057611fc061275d565b60200260200101818152505050505050565b815181111561203d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610671565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6060600061209b836002612b4e565b6120a6906002612b8b565b67ffffffffffffffff8111156120be576120be6123a1565b6040519080825280601f01601f1916602001820160405280156120e8576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061211f5761211f61275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121825761218261275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006121be846002612b4e565b6121c9906001612b8b565b90505b6001811115612266577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061220a5761220a61275d565b1a60f81b8282815181106122205761222061275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361225f81612ba3565b90506121cc565b5083156122cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610671565b9392505050565b6000602082840312156122e857600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146122cf57600080fd5b60006020828403121561232a57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461235557600080fd5b919050565b6000806040838503121561236d57600080fd5b8235915061237d60208401612331565b90509250929050565b60006020828403121561239857600080fd5b6122cf82612331565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156123f3576123f36123a1565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612440576124406123a1565b604052919050565b803563ffffffff8116811461235557600080fd5b600080828403608081121561247057600080fd5b606081121561247e57600080fd5b506040516060810181811067ffffffffffffffff821117156124a2576124a26123a1565b6040526124ae84612448565b81526124bc60208501612448565b60208201526124cd60408501612448565b6040820152946060939093013593505050565b600080602083850312156124f357600080fd5b823567ffffffffffffffff8082111561250b57600080fd5b818501915085601f83011261251f57600080fd5b81358181111561252e57600080fd5b8660208260051b850101111561254357600080fd5b60209290920196919550909350505050565b60006040828403121561256757600080fd5b61256f6123d0565b905061257a82612331565b815260208083013567ffffffffffffffff8082111561259857600080fd5b818501915085601f8301126125ac57600080fd5b8135818111156125be576125be6123a1565b6125ee847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123f9565b9150808252868482850101111561260457600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561263557600080fd5b823567ffffffffffffffff8082111561264d57600080fd5b818501915085601f83011261266157600080fd5b813581811115612673576126736123a1565b8060051b6126828582016123f9565b918252838101850191858101908984111561269c57600080fd5b86860192505b838310156126d8578235858111156126ba5760008081fd5b6126c88b89838a0101612555565b83525091860191908601906126a2565b9998505050505050505050565b6000604082840312156126f757600080fd5b50919050565b6000806020838503121561271057600080fd5b823567ffffffffffffffff8082111561272857600080fd5b818501915085601f83011261273c57600080fd5b81358181111561274b57600080fd5b86602082850101111561254357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127c057600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806127f785612331565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261283357600080fd5b8301803567ffffffffffffffff81111561284c57600080fd5b80360385131561285b57600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156128cc5781810151838201526020016128b4565b838111156128db576000848401525b50505050565b600081518084526128f98160208601602086016128b1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8151168252600060208201516040602085015261296060408501826128e1565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612960604083018461292b565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612a27577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612a1586835161292b565b955092840192908401906001016129db565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612a5e85612331565b16602084015280612a7160208601612331565b166040840152509392505050565b600061059f3683612555565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612ac38160178501602088016128b1565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b008160288401602088016128b1565b01602801949350505050565b6020815260006122cf60208301846128e1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b8657612b86612b1f565b500290565b60008219821115612b9e57612b9e612b1f565b500190565b600081612bb257612bb2612b1f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea264697066735822122091621b417b280d6f5c8f42ecf2f9357ced6177583277563110b6751c1a7a13e864736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600154610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60015460ff9081161015620000e2576001805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612c5980620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab366004612328565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b61023161027436600461236a565b60009081526020819052604090206001015490565b61029c6102973660046123ac565b6105a5565b005b6103246102ac3660046123d8565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c6103613660046123ac565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b3660046123f3565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046125dc565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f3660046123ac565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046125dc565b610be2565b610231600081565b61029c61046e36600461269f565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a836600461270e565b6112fd565b61029c6104bb366004612792565b61136b565b61029c6104ce3660046123f3565b6116b5565b61029c6104e13660046123ac565b611af3565b61029c6104f43660046123f3565b611b18565b61029c6105073660046123f3565b611c47565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611d76565b6105ca8383611d83565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611e73565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e090426112fd565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d33848484818110610786576107866127f2565b90506020028101906107989190612821565b6040516107a692919061285f565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611d76565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff81111561081957610819612468565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff81111561086157610861612468565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b06127f2565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611f2a565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611f2a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a799291906129fd565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611f54565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612a2c565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611f54565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612a2c565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611d76565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c45612468565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c926127f2565b6020026020010151905060026000888481518110610cb257610cb26127f2565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611f2a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db79291906129fd565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611f54565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612a2c565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff1615808015610ea457506001805460ff16105b80610ebd5750303b158015610ebd57506001805460ff16145b610f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790558015610fa657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b815173ffffffffffffffffffffffffffffffffffffffff16611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b61104e7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80611fc3565b6110987f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611fc3565b6110c27f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180611fc3565b61110c7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611fc3565b6111367fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80611fc3565b6111807f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611fc3565b6111ae7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8360000151611d83565b6111dc7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18360000151611d83565b61120a7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8360000151611d83565b60208281018051600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055604080513381528651831694810194909452915116908201527fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d09060600160405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff16101561131a5750600061059f565b81836040015163ffffffff16116113335750600361059f565b81836020015163ffffffff161161134c5750600261059f565b825163ffffffff1682106113625750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113c082426112fd565b9050600281141580156113d4575060038114155b61143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061150957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d9061159f90339084906129fd565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816115dd579050509050828160008151811061161b5761161b6127f2565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b269061167a9033908590600401612a2c565b600060405180830381600087803b15801561169457600080fd5b505af11580156116a8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116df81611d76565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff81111561171557611715612468565b60405190808252806020026020018201604052801561173e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561175c5761175c612468565b604051908082528060200260200182016040528015611785578160200160208202803683370190505b50905060008060005b8781101561199a5760008989838181106117aa576117aa6127f2565b90506020028101906117bc9190612821565b6117c590612aca565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff80821680845264010000000083048216948401949094526801000000000000000090910416928101929092529098509091506001111561188357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061187c868286611f2a565b6001909301925b604087015163ffffffff90811614156119585763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611951858285611f2a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516119899291906129fd565b60405180910390a15060010161178e565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611ae8578215611a51576119ca8584611f54565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690611a1e9033908990600401612a2c565b600060405180830381600087803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b505050505b8115611ae857611a618483611f54565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611ab59033908890600401612a2c565b600060405180830381600087803b158015611acf57600080fd5b505af1158015611ae3573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611b0e81611d76565b6105ca8383611e73565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b7190426112fd565b14611bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611c1757611c176127f2565b9050602002810190611c299190612821565b604051611c3792919061285f565b60405180910390a1600101611bdb565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ca090426112fd565b14611d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d4657611d466127f2565b9050602002810190611d589190612821565b604051611d6692919061285f565b60405180910390a1600101611d0a565b611d80813361200e565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e153390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611f4257611f426127f2565b60200260200101818152505050505050565b8151811115611fbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610683576120648173ffffffffffffffffffffffffffffffffffffffff1660146120de565b61206f8360206120de565b604051602001612080929190612ad6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612b57565b606060006120ed836002612b99565b6120f8906002612bd6565b67ffffffffffffffff81111561211057612110612468565b6040519080825280601f01601f19166020018201604052801561213a576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612171576121716127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121d4576121d46127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612210846002612b99565b61221b906001612bd6565b90505b60018111156122b8577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061225c5761225c6127f2565b1a60f81b828281518110612272576122726127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122b181612bee565b905061221e565b508315612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561233a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461232157600080fd5b60006020828403121561237c57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123a757600080fd5b919050565b600080604083850312156123bf57600080fd5b823591506123cf60208401612383565b90509250929050565b6000602082840312156123ea57600080fd5b61232182612383565b6000806020838503121561240657600080fd5b823567ffffffffffffffff8082111561241e57600080fd5b818501915085601f83011261243257600080fd5b81358181111561244157600080fd5b8660208260051b850101111561245657600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156124ba576124ba612468565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561250757612507612468565b604052919050565b60006040828403121561252157600080fd5b612529612497565b905061253482612383565b815260208083013567ffffffffffffffff8082111561255257600080fd5b818501915085601f83011261256657600080fd5b81358181111561257857612578612468565b6125a8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016124c0565b915080825286848285010111156125be57600080fd5b80848401858401376000908201840152918301919091525092915050565b600060208083850312156125ef57600080fd5b823567ffffffffffffffff8082111561260757600080fd5b818501915085601f83011261261b57600080fd5b81358181111561262d5761262d612468565b8060051b61263c8582016124c0565b918252838101850191858101908984111561265657600080fd5b86860192505b83831015612692578235858111156126745760008081fd5b6126828b89838a010161250f565b835250918601919086019061265c565b9998505050505050505050565b6000604082840312156126b157600080fd5b6040516040810181811067ffffffffffffffff821117156126d4576126d4612468565b6040526126e083612383565b81526126ee60208401612383565b60208201529392505050565b803563ffffffff811681146123a757600080fd5b600080828403608081121561272257600080fd5b606081121561273057600080fd5b506040516060810181811067ffffffffffffffff8211171561275457612754612468565b604052612760846126fa565b815261276e602085016126fa565b602082015261277f604085016126fa565b6040820152946060939093013593505050565b600080602083850312156127a557600080fd5b823567ffffffffffffffff808211156127bd57600080fd5b818501915085601f8301126127d157600080fd5b8135818111156127e057600080fd5b86602082850101111561245657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261285557600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061288c85612383565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128c857600080fd5b8301803567ffffffffffffffff8111156128e157600080fd5b8036038513156128f057600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b83811015612961578181015183820152602001612949565b83811115612970576000848401525b50505050565b6000815180845261298e816020860160208601612946565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff815116825260006020820151604060208501526129f56040850182612976565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006129f560408301846129c0565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612abc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612aaa8683516129c0565b95509284019290840190600101612a70565b509398975050505050505050565b600061059f368361250f565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b0e816017850160208801612946565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b4b816028840160208801612946565b01602801949350505050565b6020815260006123216020830184612976565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bd157612bd1612b6a565b500290565b60008219821115612be957612be9612b6a565b500190565b600081612bfd57612bfd612b6a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220296cff4dcea9f4275b1211dc3f87dfe8fd16364241623bfee2195df62e92b95d64736f6c634300080a0033"; type VerifyConstructorParams = | [signer?: Signer] diff --git a/src/typechain/hardhat.d.ts b/src/typechain/hardhat.d.ts index cf13e32..d00491c 100644 --- a/src/typechain/hardhat.d.ts +++ b/src/typechain/hardhat.d.ts @@ -13,109 +13,9 @@ import * as Contracts from "."; declare module "hardhat/types/runtime" { interface HardhatEthersHelpers extends HardhatEthersHelpersBase { getContractFactory( - name: "BBronze", + name: "Initializable", 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", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "SmartPoolManager", - 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; + ): Promise; getContractFactory( name: "ERC20Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -133,29 +33,9 @@ declare module "hardhat/types/runtime" { 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", + name: "ContextUpgradeable", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ERC165Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC165Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "AccessControl", signerOrOptions?: ethers.Signer | FactoryOptions @@ -168,6 +48,10 @@ declare module "hardhat/types/runtime" { name: "Ownable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "Initializable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ERC1155", signerOrOptions?: ethers.Signer | FactoryOptions @@ -192,10 +76,18 @@ 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 ): Promise; + getContractFactory( + name: "ERC20Snapshot", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "IERC20Metadata", signerOrOptions?: ethers.Signer | FactoryOptions @@ -249,17 +141,17 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "ERC20Pull", + name: "SeedDance", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "ERC20Redeem", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "BPoolFeeEscrow", + name: "IERC4626", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "RedeemableERC20ClaimEscrow", signerOrOptions?: ethers.Signer | FactoryOptions @@ -268,6 +160,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 @@ -277,33 +173,17 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "Phased", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IBalancerConstants", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IBPool", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IConfigurableRightsPool", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ICRPFactory", + name: "OrderBook", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "GatedNFT", + name: "OrderBookStateBuilder", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "GatedNFTFactory", + name: "Phased", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "RedeemableERC20", signerOrOptions?: ethers.Signer | FactoryOptions @@ -324,14 +204,6 @@ declare module "hardhat/types/runtime" { name: "SaleFactory", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "SeedERC20", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "SeedERC20Factory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "SSTORE2", signerOrOptions?: ethers.Signer | FactoryOptions @@ -341,37 +213,37 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "CalculatorTest", + name: "Stake", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ERC20PulleeTest", + name: "StakeFactory", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "FixedPointMathOpsTest", + name: "AllStandardOpsTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "MockISale", + name: "ERC20PulleeTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "MockTrustISale", + name: "FactoryChildTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "LogicOpsTest", + name: "FactoryTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "TierOpsTest", + name: "FixedPointMathTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "TokenOpsTest", + name: "MockISale", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "PhasedScheduleTest", signerOrOptions?: ethers.Signer | FactoryOptions @@ -380,22 +252,38 @@ 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 + ): Promise; getContractFactory( name: "RedeemableERC20Reentrant", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "ReserveNFT", + name: "ReportOMeter", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "ReserveToken", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ReserveToken18", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ReserveTokenERC1155", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ReserveTokenERC20Snapshot", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ReserveTokenERC721", signerOrOptions?: ethers.Signer | FactoryOptions @@ -413,17 +301,21 @@ 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 ): Promise; + getContractFactory( + name: "LibCommitmentTest", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "LibSeedTest", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "RedeemableERC20ClaimEscrowWrapper", signerOrOptions?: ethers.Signer | FactoryOptions @@ -433,17 +325,17 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "TierReportTest", + name: "SeedDanceTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "TrustEscrowWrapper", + name: "TierReportTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ValueTierTest", + name: "TierV2Test", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "CombineTier", signerOrOptions?: ethers.Signer | FactoryOptions @@ -453,208 +345,75 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "ERC20BalanceTier", + name: "ITierV2", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ERC20BalanceTierFactory", + name: "TierV2", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ERC20TransferTier", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ERC20TransferTierFactory", + name: "VerifyTier", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ERC721BalanceTier", + name: "VerifyTierFactory", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ERC721BalanceTierFactory", + name: "AutoApprove", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ITier", + name: "AutoApproveFactory", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ReadOnlyTier", + name: "AutoApproveStateBuilder", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ReadWriteTier", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ValueTier", + name: "IVerifyCallback", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "VerifyTier", + name: "Verify", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "VerifyTierFactory", + name: "VerifyCallback", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "Trust", + name: "VerifyFactory", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "TrustFactory", + name: "AllStandardOpsStateBuilder", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "IVerifyCallback", + name: "RainVM", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "Verify", + name: "StandardStateBuilder", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "VerifyFactory", + name: "StandardVM", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "VMState", + 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", + name: "Initializable", 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", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "SmartPoolManager", - 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; + ): Promise; getContractAt( name: "ERC20Upgradeable", address: string, @@ -676,35 +435,10 @@ declare module "hardhat/types/runtime" { 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", + 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; + ): Promise; getContractAt( name: "AccessControl", address: string, @@ -720,6 +454,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "Initializable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ERC1155", address: string, @@ -750,11 +489,21 @@ 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, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ERC20Snapshot", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "IERC20Metadata", address: string, @@ -821,20 +570,20 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "ERC20Pull", + name: "SeedDance", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "ERC20Redeem", address: string, signer?: ethers.Signer ): Promise; getContractAt( - name: "BPoolFeeEscrow", + name: "IERC4626", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "RedeemableERC20ClaimEscrow", address: string, @@ -845,6 +594,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, @@ -856,40 +610,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", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "GatedNFT", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "GatedNFTFactory", + name: "Phased", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "RedeemableERC20", address: string, @@ -915,16 +649,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "SeedERC20", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "SeedERC20Factory", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "SSTORE2", address: string, @@ -936,45 +660,45 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "CalculatorTest", + name: "Stake", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "ERC20PulleeTest", + name: "StakeFactory", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "FixedPointMathOpsTest", + name: "AllStandardOpsTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "MockISale", + name: "ERC20PulleeTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "MockTrustISale", + name: "FactoryChildTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "LogicOpsTest", + name: "FactoryTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "TierOpsTest", + name: "FixedPointMathTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "TokenOpsTest", + name: "MockISale", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "PhasedScheduleTest", address: string, @@ -985,26 +709,46 @@ 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, + signer?: ethers.Signer + ): Promise; getContractAt( name: "RedeemableERC20Reentrant", address: string, signer?: ethers.Signer ): Promise; getContractAt( - name: "ReserveNFT", + name: "ReportOMeter", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "ReserveToken", address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ReserveToken18", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ReserveTokenERC1155", address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ReserveTokenERC20Snapshot", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ReserveTokenERC721", address: string, @@ -1026,20 +770,25 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "SeedERC20ForceSendEther", + name: "StackHeightTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "SeedERC20Reentrant", + name: "VerifyCallbackTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "VerifyCallbackTest", + name: "LibCommitmentTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; + getContractAt( + name: "LibSeedTest", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "RedeemableERC20ClaimEscrowWrapper", address: string, @@ -1051,20 +800,20 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "TierReportTest", + name: "SeedDanceTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "TrustEscrowWrapper", + name: "TierReportTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "ValueTierTest", + name: "TierV2Test", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "CombineTier", address: string, @@ -1076,95 +825,85 @@ 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; + ): Promise; getContractAt( - name: "ERC20TransferTier", + name: "TierV2", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "ERC20TransferTierFactory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ERC721BalanceTier", + name: "VerifyTier", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "ERC721BalanceTierFactory", + name: "VerifyTierFactory", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "ITier", + name: "AutoApprove", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "ReadOnlyTier", + name: "AutoApproveFactory", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "ReadWriteTier", + name: "AutoApproveStateBuilder", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "ValueTier", + name: "IVerifyCallback", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "VerifyTier", + name: "Verify", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "VerifyTierFactory", + name: "VerifyCallback", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "Trust", + name: "VerifyFactory", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "TrustFactory", + name: "AllStandardOpsStateBuilder", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "IVerifyCallback", + name: "RainVM", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "Verify", + name: "StandardStateBuilder", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "VerifyFactory", + name: "StandardVM", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "VMState", + 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..c8b6f1f 100644 --- a/src/typechain/index.ts +++ b/src/typechain/index.ts @@ -1,41 +1,12 @@ /* 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 { 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 { ERC165Upgradeable } from "./ERC165Upgradeable"; -export type { IERC165Upgradeable } from "./IERC165Upgradeable"; +export type { ContextUpgradeable } from "./ContextUpgradeable"; export type { AccessControl } from "./AccessControl"; export type { IAccessControl } from "./IAccessControl"; export type { Ownable } from "./Ownable"; @@ -45,8 +16,11 @@ 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"; +export type { IERC20 } from "./IERC20"; export type { ERC721 } from "./ERC721"; export type { ERC721Burnable } from "./ERC721Burnable"; export type { IERC721Metadata } from "./IERC721Metadata"; @@ -58,106 +32,80 @@ 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 { SeedDance } from "./SeedDance"; export type { ERC20Redeem } from "./ERC20Redeem"; -export type { BPoolFeeEscrow } from "./BPoolFeeEscrow"; +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"; 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"; 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 { FactoryChildTest } from "./FactoryChildTest"; +export type { FactoryTest } from "./FactoryTest"; +export type { FixedPointMathTest } from "./FixedPointMathTest"; 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 { RandomTest } from "./RandomTest"; +export type { ReadWriteTier } from "./ReadWriteTier"; export type { RedeemableERC20Reentrant } from "./RedeemableERC20Reentrant"; -export type { ReserveNFT } from "./ReserveNFT"; +export type { ReportOMeter } from "./ReportOMeter"; 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"; 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 { 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 { TrustEscrowWrapper } from "./TrustEscrowWrapper"; -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 { Trust } from "./Trust"; -export type { TrustFactory } from "./TrustFactory"; +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 { VMState } from "./VMState"; +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 { 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 { 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 { ERC165Upgradeable__factory } from "./factories/ERC165Upgradeable__factory"; -export { IERC165Upgradeable__factory } from "./factories/IERC165Upgradeable__factory"; +export { ContextUpgradeable__factory } from "./factories/ContextUpgradeable__factory"; export { AccessControl__factory } from "./factories/AccessControl__factory"; export { IAccessControl__factory } from "./factories/IAccessControl__factory"; export { Ownable__factory } from "./factories/Ownable__factory"; @@ -167,8 +115,11 @@ 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"; +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,67 +131,70 @@ 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 { SeedDance__factory } from "./factories/SeedDance__factory"; export { ERC20Redeem__factory } from "./factories/ERC20Redeem__factory"; -export { BPoolFeeEscrow__factory } from "./factories/BPoolFeeEscrow__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"; 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"; 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 { 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 { FactoryChildTest__factory } from "./factories/FactoryChildTest__factory"; +export { FactoryTest__factory } from "./factories/FactoryTest__factory"; +export { FixedPointMathTest__factory } from "./factories/FixedPointMathTest__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 { RandomTest__factory } from "./factories/RandomTest__factory"; +export { ReadWriteTier__factory } from "./factories/ReadWriteTier__factory"; export { RedeemableERC20Reentrant__factory } from "./factories/RedeemableERC20Reentrant__factory"; -export { ReserveNFT__factory } from "./factories/ReserveNFT__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"; +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"; 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 { 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 { TrustEscrowWrapper__factory } from "./factories/TrustEscrowWrapper__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 { Trust__factory } from "./factories/Trust__factory"; -export { TrustFactory__factory } from "./factories/TrustFactory__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 { VMState__factory } from "./factories/VMState__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/utils.ts b/src/utils.ts index 05e3c5b..bcebb41 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,37 +1,42 @@ -import { BigNumber, ethers, utils } from 'ethers'; -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 { - /** - * @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 +48,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 +69,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,24 +88,25 @@ 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); }; /** * @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)) { - throw new Error(`${report} exceeds max uint256`); - } - return '0x' + report.toHexString().substring(2).padStart(64, '0'); +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"); }; /** @@ -107,29 +114,15 @@ 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)) { - throw new Error(`${number} exceeds max uint32`); - } - return hexlify(number).substring(2).padStart(8, '0'); +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"); }; -/** - * @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 * @@ -139,56 +132,56 @@ export function arg(valIndex: number): number { * @returns a byte size number */ export function tierRange(startTier: number, endTier: number): number { - // op_.val & 0x0f, // 00001111 - // op_.val & 0xf0, // 11110000 + // 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; + 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; } /** * @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, - 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 fnSize'); - } 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; } /** @@ -201,12 +194,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; } /** @@ -219,25 +213,286 @@ 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; }; /** - * @public function for the operand of the SKIP opcode - * @remarks - SKIP is no longer available + * @public Utility function to produce 64 bits size hexString * - * @returns a byte size number + * @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 BigNumber.from(number).toHexString().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 function skip(places: number, conditional = false): number { - let skip = conditional ? 1 : 0; - skip <<= 7; - // JS ints are already signed. - skip |= places & 0x7f; - return skip; +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"); +}; + +/** + * @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" + BigNumber.from(address).toHexString().substring(2).padStart(40, "0"); +}; + +/** + * @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 + * @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]) + ) } + +/** + * @public + * 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) + ); +} + +/** + * @public + * 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; +} + +/** + * @public + * 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; +} + +/** + * @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. + * + * @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; + } +} + +/** + * @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. + * + * @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 +} + +/** + * @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 diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts new file mode 100644 index 0000000..5edb7bb --- /dev/null +++ b/src/vm/OpMeta.ts @@ -0,0 +1,1463 @@ +// import { pnp } from "./VM"; +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 { 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 { 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"; +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"; + + +/** + * @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) => { + if (opcode === AllStandardOps.ZIPMAP) { + return (operand >> 5) + 1 ; + } + if (opcode === AllStandardOps.SELECT_LTE) { + return (operand & 31) + 1; + } + 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 + */ +export interface IOpMeta extends Record { + enum: number; + name: string; + pushes: (opcode: number, operand: number) => number; + pops: (opcode: number, operand: number) => number; + jsvmfn: OpJSVM; + isZeroOperand: boolean; + description?: string; + aliases?: string[]; + data?: any +} + +/** + * @public + */ +export const OpMeta: Map = new Map([ + [ + 0, + { + enum: AllStandardOps.CONSTANT, + name: 'CONSTANT', + description: 'Takes an item from constants array and insert it into the stack', + pushes: pnp.one, + pops: pnp.zero, + isZeroOperand: false, + jsvmfn: function( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any + ): void { + this.constant(operand, data) + }, + 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." + } + ] + } + } + ], + [ + 1, + { + enum: AllStandardOps.STACK, + name: 'STACK', + 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, + jsvmfn: function( + this: RainJSVM, + state: StateJSVM, + operand: number, + 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." + } + ] + } + } + ], + [ + 2, + { + enum: AllStandardOps.CONTEXT, + name: 'CONTEXT', + description: 'Inserts an argument passed to a contracts function into the stack', + pushes: pnp.one, + pops: pnp.zero, + isZeroOperand: false, + jsvmfn: function( + this: RainJSVM, + state: StateJSVM, + operand: number, + 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." + } + ] + } + } + ], + [ + 3, + { + enum: AllStandardOps.STORAGE, + name: 'STORAGE', + description: 'Insert a value from contract storage into the stack', + pushes: pnp.one, + pops: pnp.zero, + isZeroOperand: false, + jsvmfn: async function( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any + ): Promise { + await this.storage(operand, data) + }, + 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." + } + ] + } + } + ], + [ + 4, + { + enum: AllStandardOps.ZIPMAP, + name: 'ZIPMAP', + 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, + jsvmfn: async function( + this: RainJSVM, + state: StateJSVM, + operand: number, + 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." + }, + ] + } + } + ], + [ + 5, + { + enum: AllStandardOps.DEBUG, + name: 'DEBUG', + description: 'ABI encodes the entire stack and logs it to the hardhat console.', + pushes: pnp.zero, + pops: pnp.zero, + isZeroOperand: false, + jsvmfn: function( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any + ): void { + this.debug(operand, data) + }, + aliases: ['LOG', 'CONSOLE', 'CONSOLE_LOG'], + data: { + description: 'ABI encodes the entire stack and logs it to the hardhat console.', + category: "core", + example: "debug()", + parameters: [] + } + } + ], + [ + 6, + { + enum: AllStandardOps.IERC20_BALANCE_OF, + name: 'IERC20_BALANCE_OF', + 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'], + 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." + } + ] + } + } + ], + [ + 7, + { + enum: AllStandardOps.IERC20_TOTAL_SUPPLY, + name: 'IERC20_TOTAL_SUPPLY', + 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'], + 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." + } + ] + } + } + ], + [ + 8, + { + enum: AllStandardOps.IERC20_SNAPSHOT_BALANCE_OF_AT, + name: 'IERC20_SNAPSHOT_BALANCE_OF_AT', + 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'], + 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." + } + ] + } + } + ], + [ + 9, + { + enum: AllStandardOps.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, + name: 'IERC20_SNAPSHOT_TOTAL_SUPPLY_AT', + 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'], + 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." + } + ] + } + } + ], + [ + 10, + { + enum: AllStandardOps.IERC721_BALANCE_OF, + name: 'IERC721_BALANCE_OF', + 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'], + 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." + } + ] + } + } + ], + [ + 11, + { + enum: AllStandardOps.IERC721_OWNER_OF, + name: 'IERC721_OWNER_OF', + 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'], + 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." + } + ] + } + } + ], + [ + 12, + { + enum: AllStandardOps.IERC1155_BALANCE_OF, + name: 'IERC1155_BALANCE_OF', + 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'], + 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." + } + ] + } + } + ], + [ + 13, + { + enum: AllStandardOps.IERC1155_BALANCE_OF_BATCH, + name: 'IERC1155_BALANCE_OF_BATCH', + 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'], + 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." + } + ] + } + } + ], + [ + 14, + { + enum: AllStandardOps.BLOCK_NUMBER, + name: 'BLOCK_NUMBER', + 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: [] + } + } + ], + [ + 15, + { + enum: AllStandardOps.SENDER, + name: 'SENDER', + description: 'Inserts the msg.sender address into the stack', + pushes: pnp.one, + pops: pnp.zero, + isZeroOperand: true, + jsvmfn: OpCaller, + aliases: ['MSG_SENDER', 'MSGSENDER', 'SIGNER'], + data: { + description: 'The sender of the current transaction.', + category: "EVM", + example: "sender()", + parameters: [] + } + } + ], + [ + 16, + { + enum: AllStandardOps.THIS_ADDRESS, + name: 'THIS_ADDRESS', + description: 'Inserts this contract address into the stack', + pushes: pnp.one, + pops: pnp.zero, + isZeroOperand: true, + jsvmfn: OpThisAddress, + aliases: ['THISADDRESS'], + data: { + description: 'The address of the contract this expression is being evaluated in.', + category: "EVM", + example: "this_address()", + parameters: [] + } + } + ], + [ + 17, + { + enum: AllStandardOps.BLOCK_TIMESTAMP, + name: 'BLOCK_TIMESTAMP', + 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'], + data: { + description: 'The timestamp of the current block (in seconds).', + category: "EVM", + example: "block_timestamp()", + parameters: [] + } + } + ], + [ + 18, + { + enum: AllStandardOps.SCALE18, + name: 'SCALE18', + description: 'Rescale some fixed point number to 18 OOMs in situ.', + pushes: pnp.one, + pops: pnp.one, + isZeroOperand: false, + jsvmfn: OpScale18, + 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." + } + ] + } + } + ], + [ + 19, + { + enum: AllStandardOps.SCALE18_DIV, + name: 'SCALE18_DIV', + 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'], + 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." + } + ] + } + } + ], + [ + 20, + { + enum: AllStandardOps.SCALE18_MUL, + name: 'SCALE18_MUL', + 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'], + 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." + } + ] + } + } + ], + [ + 21, + { + enum: AllStandardOps.SCALE_BY, + name: 'SCALE_BY', + description: 'Scale a fixed point up or down by opernad.', + pushes: pnp.one, + pops: pnp.one, + isZeroOperand: false, + jsvmfn: OpScaleBy, + 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." + }, + ] + } + } + ], + [ + 22, + { + enum: AllStandardOps.SCALEN, + name: 'SCALEN', + description: 'Rescale an 18 OOMs fixed point number to scale N.', + pushes: pnp.one, + pops: pnp.one, + isZeroOperand: false, + jsvmfn: OpScaleN, + 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." + }, + ] + } + } + ], + [ + 23, + { + enum: AllStandardOps.ANY, + name: 'ANY', + 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', "|", "||"], + 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." + } + ] + } + } + ], + [ + 24, + { + enum: AllStandardOps.EAGER_IF, + name: 'EAGER_IF', + 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'], + 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." + } + ] + } + } + ], + [ + 25, + { + enum: AllStandardOps.EQUAL_TO, + name: 'EQUAL_TO', + 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', '=', '==', '==='], + 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." + } + ] + } + } + ], + [ + 26, + { + enum: AllStandardOps.EVERY, + name: 'EVERY', + 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', "&", "&&"], + 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." + } + ] + } + } + ], + [ + 27, + { + enum: AllStandardOps.GREATER_THAN, + name: 'GREATER_THAN', + 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', ">"], + 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." + } + ] + } + } + ], + [ + 28, + { + enum: AllStandardOps.ISZERO, + name: 'ISZERO', + 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'], + data: { + description: 'Returns true if a value is zero.', + category: "logic", + example: "iszero(1)", + parameters: [ + { + spread: false, + name: "value", + description: "The value to check." + } + ] + } + } + ], + [ + 29, + { + enum: AllStandardOps.LESS_THAN, + name: 'LESS_THAN', + 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', "<"], + 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." + } + ] + } + } + ], + [ + 30, + { + enum: AllStandardOps.SATURATING_ADD, + name: 'SATURATING_ADD', + 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'], + 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." + } + ] + } + } + ], + [ + 31, + { + enum: AllStandardOps.SATURATING_MUL, + name: 'SATURATING_MUL', + 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'], + 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." + } + ] + } + } + ], + [ + 32, + { + enum: AllStandardOps.SATURATING_SUB, + name: 'SATURATING_SUB', + 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'], + 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." + } + ] + } + } + ], + [ + 33, + { + enum: AllStandardOps.ADD, + name: 'ADD', + 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'], + 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." + } + ] + } + } + ], + [ + 34, + { + enum: AllStandardOps.DIV, + name: 'DIV', + 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'], + 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." + } + ] + } + } + ], + [ + 35, + { + enum: AllStandardOps.EXP, + name: 'EXP', + 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'], + data: { + category: "math", + example: "Powers N number of values sequentialy", + parameters: [ + { + spread: true, + name: "values", + description: "The values to power." + } + ] + } + } + ], + [ + 36, + { + enum: AllStandardOps.MAX, + name: 'MAX', + 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'], + 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." + } + ] + } + } + ], + [ + 37, + { + enum: AllStandardOps.MIN, + name: 'MIN', + 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'], + 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." + } + ] + } + } + ], + [ + 38, + { + enum: AllStandardOps.MOD, + name: 'MOD', + 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: ['%'], + 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." + } + ] + } + } + ], + [ + 39, + { + enum: AllStandardOps.MUL, + name: 'MUL', + 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'], + 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." + } + ] + } + } + ], + [ + 40, + { + enum: AllStandardOps.SUB, + name: 'SUB', + 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'], + 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." + } + ] + } + } + ], + [ + 41, + { + enum: AllStandardOps.ITIERV2_REPORT, + name: 'ITIERV2_REPORT', + 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'], + 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." + } + ] + } + } + ], + [ + 42, + { + enum: AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER, + name: 'ITIERV2_REPORT_TIME_FOR_TIER', + 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'], + 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." + } + ] + } + } + ], + [ + 43, + { + enum: AllStandardOps.SATURATING_DIFF, + name: 'SATURATING_DIFF', + 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'], + 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." + } + ] + } + } + ], + [ + 44, + { + enum: AllStandardOps.SELECT_LTE, + name: 'SELECT_LTE', + 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'], + 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." + } + ] + } + } + ], + [ + 45, + { + enum: AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE, + name: 'UPDATE_TIMES_FOR_TIER_RANGE', + 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'], + 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/formatter.ts b/src/vm/formatter.ts new file mode 100644 index 0000000..9687113 --- /dev/null +++ b/src/vm/formatter.ts @@ -0,0 +1,382 @@ +import { BytesLike, BigNumber, ethers } from 'ethers'; +import { AllStandardOps, StateConfig } from '../classes/vm'; +import { arrayify, selectLteLogic, selectLteMode } from '../utils'; +import { IOpMeta, OpMeta } from './OpMeta'; + + +/** + * @public + * + * Specific the configuration of the generation method + */ +export type Config = { + /** + * Enable the prettify for the result of the HumnaFriendlyRead, adds indentation to the final result + */ + 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 such as Price and Quantity of a sale script (should be passed in order) + */ + tags?: string[]; + /** + * 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; +}; + +/** + * @public + * Specifies the configuration of the Prettify method. + */ +export type PrettifyConfig = { + /** + * Multiplier to the indent space + */ + n?: number; + /** + * Max length of each line + */ + length?: number; +}; + +/** + * @public + * The generator of human friendly readable source. + * + * @remarks + * 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 + */ +export class Formatter { + + 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 Formatter + * + * @param opmeta_ - The OpMeta map object + */ + public static set(opmeta_: typeof OpMeta): Formatter { + this.opmeta = Array.from(opmeta_.values()); + return this; + } + + /** + * 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 + */ + public static get( + _state: StateConfig, + _config: Config = { + pretty: false, + storageEnums: undefined, + contextEnums: undefined, + tags: undefined, + enableTagging: false, + opmeta: undefined + } + ): string { + if (_config.opmeta) { + this.set(_config.opmeta); + } + 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.tags, + _config.enableTagging + ); + + return this.pretty ? this.prettify(_result) : _result; + } + + /** + * 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 A prettified 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); + } + } + } + else { + skip--; + } + } + } + return _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 + * @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 A human friendly readable text of the passed script + */ + 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 useableTags = tags; + let counter = 0; + + 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 _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); + + _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(', ') + })` + ) + } + + 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 tempTag = useableTags?.shift() + _stack[j] = tempTag + ? `${tempTag}: {${_stack[j]}}` + : `Item${counter}: {${_stack[j]}}` + + 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]} }` + } + + 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); + + 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/vm/parser.ts b/src/vm/parser.ts new file mode 100644 index 0000000..79d6c6b --- /dev/null +++ b/src/vm/parser.ts @@ -0,0 +1,1903 @@ +import { OpMeta, pnp } from './OpMeta'; +import { BigNumberish, BytesLike } from 'ethers'; +import { AllStandardOps, StateConfig } from '../classes/vm'; +import { + callSize, + concat, + isBigNumberish, + mapToRecord, + op, + selectLte, + tierRange, +} from '../utils'; + +/** + * Expression Notations + */ +enum Notations { + prefix, + postfix, + infix, +} + +/** + * @public + * Type of Parser's Error node + */ +export type Error = { + error: string; + position: number[]; +}; + +/** + * @public + * Type of Parser's Value node + */ +export type Value = { + value: BigNumberish; + position: number[]; + error?: string +}; + +/** + * @public + * Type of Parser's Opcode node + */ +export type Op = { + opcode: { + 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 Node = Error | Value | Op; + +/** + * @public + * Type of Parser's State + */ +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 ParseTree = Record< + number, + { 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 gteParserOpcode: iOpMetaLike = { + name: 'GREATER_THAN_EQUAL', + 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.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 lteParserOpcode: iOpMetaLike = { + name: 'LESS_THAN_EQUAL', + 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.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." + } + ] + } +} + +/** + * @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 set the custom details of GTE and LTE opcodes + * 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; + * let stateConfig + * [ parseTree, stateConfig ] = Parser.get(textScript, customOpMeta, customMultiOutputPlaceholderChar); + * + * // to get parse tree object only + * let parseTree = Parser.getParseTree(textScript, customOpMeta, customMultiOutputPlaceholderChar); + * + * // 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 { + public static constants: BigNumberish[] = []; + public static sources: BytesLike[] = []; + 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[] | undefined)[] = + 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: { + tree: [], + moCache: [] + }, + track: { + notation: [], + parens: { + open: [], + close: [] + } + }, + depthLevel: 0, + ambiguity: false, + }; + + // special literals for gte and lte + private static gte = gteParserOpcode; + private static lte = lteParserOpcode; + private static ineq = ineqParserOpcode; + + /** + * @public + * Method to set the details of the GTE opcode + * + * @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(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 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(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) + ); + } + } + + /** + * @public + * Method to get parse tree object and StateConfig + * + * @param expression - the text expression + * @param opmeta - (optional) custom opmeta + * @param multiOutputPlaceholderChar - (optional) custom multi output placeholder character, default is "_" + * @returns Array of parse tree object and StateConfig + */ + 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 expression - the text expression + * @param opmeta - (optional) custom opmeta + * @param multiOutputPlaceholderChar - (optional) custom multi output placeholder character, default is "_" + * @returns A StateConfig + */ + public static getStateConfig( + expression: string, + opmeta?: typeof OpMeta, + multiOutputPlaceholderChar?: string + ): StateConfig { + this.parse(expression, opmeta, multiOutputPlaceholderChar); + return { + constants: this.constants, + sources: this.sources + } + } + + /** + * @public + * Method to get StateConfig (bytes) from a Parse Tree object or a Node or array of Nodes + * + * @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 buildBytes( + parseTree: + | Node + | Node[] + | Record + | 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 { + if ("tree" in array[0]) { + for (let i = 0; i < array.length; i++) { + array[i] = array[i].tree; + } + } + 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.unshift()! : 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 : index) + ); + } + else if (node.value === "MaxUint256" || node.value === "Infinity") { + 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) + } + if ( + (node as Op).opcode.name === this.gte.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 + : (node as Op).opcode.name === this.lte.name + ? AllStandardOps.GREATER_THAN + : AllStandardOps.EQUAL_TO + ), + 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 (isRecord && argCount > 0) { + ({ constants, sources } = this.updateArgs({constants, sources})); + } + return { + constants, + sources + } + } + + /** + * 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']) + ); + 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) + ); + } + } + } + + /** + * 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 + */ + private static trimRight = (str: string): [string, number] => { + let trailingOffset = 0; + while (str.endsWith(" ") || str.endsWith(",")) { + str = str.slice(0, -1); + trailingOffset++; + } + return [str, trailingOffset]; + } + + /** + * 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]; + }; + + /** + * 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 + */ + private static parse(script: string, opmeta?: typeof OpMeta, placeholder?: string) { + this.reset(); + this.sources = []; + this.constants = []; + this.treeArray = []; + this.parseTree = {}; + opmeta ? this.set(opmeta) : this.set(OpMeta); + this.placeholder = placeholder ? placeholder : '_'; + + let originalText = script; + let offset = 0; + [script, , offset] = this.trim(script); + let expressions: string[] = []; + let positions = [[0, originalText.length - 1]]; + let hasCurlyBrackets = false; + + // remove indents + while(script.includes(`\n`)) script = script.replace(`\n`, ""); + + if (script.startsWith('{') && script.indexOf('}') > -1) { + hasCurlyBrackets = true; + 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; + 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([ + originalText.length - script.length - offset, + originalText.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.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.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 + ) + } + 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(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; + } + ({ constants: this.constants, sources: this.sources } = this.buildBytes(this.treeArray)); + } + + /** + * 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 { + let offset = 0; + if (!str.length) return undefined; + if (str[0] === ' ' || str[0] === '(' || str[0] === ')') return undefined; + 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.handleLetterCase(this.gte.name))) { + let tmp = [ + this.gte.name, + offset.toString(), + (offset + this.gte.name.length - 1).toString(), + ]; + if (str_.replace(this.handleLetterCase(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.handleLetterCase(this.lte.name))) { + let tmp = [ + this.lte.name, + offset.toString(), + (offset + this.lte.name.length - 1).toString(), + ]; + 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( + '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.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; + } + } + } + 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; + } + } + } + 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.handleLetterCase(this.names[i]))) { + let tmp = [ + this.names[i], + offset.toString(), + (offset + this.names[i].length - 1).toString(), + ]; + if (str_.replace(this.handleLetterCase(this.names[i]), "").startsWith('(')) { + this.state.ambiguity = true; + 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])) { + 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; + tmp.push('ambiguous expression/opcode'); + } + else if (offset) tmp.push( + 'illigal characters between opcode and parenthesis' + ) + return tmp; + } + } + } + } + return undefined; + } + + /** + * 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 = this.state.parse.tree[this.state.parse.tree.length - 1]; + for (let i = 0; i < depthLevel; i++) { + tmp = (tmp as Op).parameters[(tmp as Op).parameters.length - 1]; + } + return tmp; + } + + /** + * 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 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]; + } + } + + /** + * 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]; + } + + /** + * 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 + ); + } + 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: 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) + : NaN, + position: [node.position[0], endPosition], + parens: [node.position[0], this.state.track.parens.close.pop()!], + parameters: node.parameters, + 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) { + let resolvedExp = tmp.pop()!; + (tmp[tmp.length - 1][ + tmp[tmp.length - 1].length - 1 + ] as Op).parameters = resolvedExp; + } + this.state.parse.tree = tmp[0]; + } + + /** + * 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 (!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); + } + + // 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 { + op.error = `expected opcode but got value at position ${item.position}`; + } + err = true; + break; + } + } + } + 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; + } + } + 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; + item.parameters = [op]; + op = item; + } + else { + this.state.track.parens.open.pop(); + this.state.track.parens.close.pop(); + } + this.updateTree(op, 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); + } + 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 + ); + } + 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 { + count++; + tmp[tmp.length - 1][i] = this.state.parse.moCache[ + this.state.parse.moCache.length - 1 + ].pop()!; + } + } + else break; + } + } + let resolvedOutputs = tmp.pop()!; + (tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op).parameters = resolvedOutputs; + } + 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); + } + } + + /** + * 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 ( + 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 ( + 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 { + 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 { + 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 { + 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, + }; + } + 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 {} + } + 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], + ], + }, + ]; + } + } + 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 { + 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 {} + } + 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 (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: [], + }); + } + } + else { + opNode.parameters = [{ + error: `invalid number of parameters`, + position: [ + opNode.parameters[0].position[0], + opNode.parameters[opNode.parameters.length - 1].position[1], + ], + }]; + } + } + 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 { + 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 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 { + 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; + str = this.trim(str)[0]; + let startPosition = entry + consumee.indexOf(str); + + if (str.includes(',')) { + this.state.parse.tree.push({ + error: `invalid comma: ${str}`, + position: [startPosition, startPosition + str.length - 1], + }); + this.exp = this.exp.replace(consumee, ""); + } + else { + let str_ = this.handleLetterCase(str); + if ( + 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_) + ) { + 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 : isLte ? this.lte.name : this.ineq.name, + position: [startPosition, startPosition + str_.length - 1], + }, + operand: 0, + output: 1, + position: [startPosition], + parens: [], + parameters: [], + 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' + : '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.infix + ); + } + 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 { + 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; + } + check = false; + break; + } + } + } + if (check) { + let str_ = this.handleLetterCase(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_ = names.indexOf(str_); + let op: Op = { + opcode: { + name: this.names[enum_], + position: [startPosition, startPosition + str_.length - 1], + }, + operand: this.zeroOperandOps[enum_] ? 0 : NaN, + output: this.pushes[enum_].name === 'zero' || 'one' || 'two' || 'three' + ? this.pushes[enum_](0, 0) + : NaN, + position: [startPosition], + parens: [], + parameters: [], + data: this.data[enum_], + }; + 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.pops[enum_].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[enum_].name !== 'zero' + ? true + : undefined; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; + } + } + 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_); + this.exp = this.exp.slice(i_, this.exp.length); + this.updateTree({ + value: str, + position: [startPosition, startPosition + str.length - 1], + }); + } + else if (str === this.placeholder) { + this.updateTree({ + value: this.placeholder, + 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_ === "INFINITY") { + this.updateTree({ + value: str_ === "MAXUINT256" ? "MaxUint256" : "Infinity", + position: [startPosition, startPosition + str.length - 1], + }); + this.exp = this.exp.replace(consumee, ""); + } + 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: `${str} is unknown opcode`, + position: [startPosition, startPosition + str.length], + }, + operand: NaN, + output: NaN, + position: [startPosition], + parens: [], + parameters: [], + error: this.state.ambiguity + ? 'ambiguous expression/opcode' + : 'unknown opcode', + }); + if (this.state.ambiguity) this.state.ambiguity = false; + } + else { + this.updateTree({ + error: `${str} is unknown`, + position: [startPosition, startPosition + str.length - 1], + }); + } + } + } + } + } + } + + /** + * Method to check for errors in parse 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 bytes 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 += 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; + } + } + } + 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; + } +} 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/1_initSDK.test.ts b/test/0_Init.test.ts similarity index 81% rename from test/1_initSDK.test.ts rename to test/0_Init.test.ts index 407bbae..09b6296 100644 --- a/test/1_initSDK.test.ts +++ b/test/0_Init.test.ts @@ -8,27 +8,26 @@ import { deployErc1155, zeroAddress, } from './utils'; - import { VM, AddressBook, Sale, + Stake, Verify, - GatedNFT, + OrderBook, VerifyTier, CombineTier, NoticeBoard, EmissionsERC20, RedeemableERC20, - ERC20BalanceTier, - ERC20TransferTier, - ERC721BalanceTier, RedeemableERC20ClaimEscrow, ERC20, ERC721, ERC1155, + AutoApprove, } from '../src'; + /** * Addresses saved that are in SDK BookAddresses deployed to Hardhat network. * **These addresses are deterministically generated with the HH signers.** @@ -37,6 +36,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' ); @@ -47,26 +50,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' ); @@ -79,34 +66,63 @@ 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'); + + 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(); 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 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(); + const EmissionsERC20Factory = await EmissionsERC20FactoryFactory.deploy( + vmStateBuilder.address + ); + const SaleFactory = await SaleFactoryFactory.deploy({ maximumSaleTimeout: 10000, maximumCooldownDuration: 1000, redeemableERC20Factory: RedeemableERC20Factory.address, + vmStateBuilder: vmStateBuilder.address, }); + const StakeFactory = await StakeFactoryFactory.deploy(); + + 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 sourceAlways = VM.createVMSources([[CombineTier.Opcodes.ALWAYS]]); const alwaysArg = { - sources: sourceAlways, - constants: [], - stackLength: 1, - argumentsLength: 0, + combinedTiersLength: 0, + sourceConfig: VM.combiner( + VM.constant(0), + VM.constant(0), + { numberOfSources: 0 } + ) }; const tx = await CombineTierFactory.createChildTyped(alwaysArg); @@ -117,36 +133,43 @@ 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, - 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, + AutoApproveFactory: AutoApproveFactory.address, }; }); + + describe('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.' ); }); - 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); @@ -162,37 +185,17 @@ 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 () => { + 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); }); @@ -202,6 +205,21 @@ 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 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); @@ -396,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 76% rename from test/2_sale.test.ts rename to test/1_Sale.test.ts index f06852a..b7f5070 100644 --- a/test/2_sale.test.ts +++ b/test/1_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,17 +10,16 @@ import { Time, SaleStatus, } from './utils'; - -import { ReserveTokenTest } from '../typechain'; - import { VM, Sale, CombineTier, - SaleDurationInTimestamp, - SaleDurationInBlocks, + BetweenTimestamps, + BetweenBlocks, + SaleVmFrom, + BuyAmount, } from '../src'; -import { BigNumber } from 'ethers'; + describe('SDK - Sale', () => { let reserve: ReserveTokenTest, tier: CombineTier; @@ -48,18 +49,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.CONSTANT, 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 SaleVmFrom( + new BetweenBlocks(startBlock, startBlock + saleDuration), + new BuyAmount(), + { sources, constants } + ), recipient: recipient.address, reserve: reserve.address, cooldownDuration: 1, @@ -102,18 +100,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.CONSTANT, 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 SaleVmFrom( + new BetweenBlocks(startBlock, endBlock), + new BuyAmount(), + { sources, constants } + ), recipient: recipient.address, reserve: reserve.address, cooldownDuration: 1, @@ -132,7 +127,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 +135,22 @@ 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 +174,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.CONSTANT, 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 SaleVmFrom( + new BetweenTimestamps(startTimestamp, endTimestamp), + new BuyAmount(), + { sources, constants } + ), recipient: recipient.address, reserve: reserve.address, cooldownDuration: 1, @@ -207,24 +201,30 @@ 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)); + 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 +248,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.CONSTANT, 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 SaleVmFrom( + new BetweenBlocks(startBlock, endBlock), + new BuyAmount(), + { sources, constants } + ), recipient: recipient.address, reserve: reserve.address, cooldownDuration: 1, @@ -281,7 +278,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,18 +291,20 @@ 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); 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 94% rename from test/5_escrow.test.ts rename to test/2_Escrow.test.ts index 0c9148b..ece0e99 100644 --- a/test/5_escrow.test.ts +++ b/test/2_Escrow.test.ts @@ -1,7 +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 { ONE, Time, @@ -13,19 +14,20 @@ import { SaleStatus, getEventArgs, } from './utils'; - import { FixedPrice, RedeemableERC20ClaimEscrow, Sale, RedeemableERC20, - SaleDurationInBlocks, + BetweenBlocks, AddressBook, ERC20, + SaleVmFrom, + BuyAmount, } from '../src'; -import { RedeemableERC20ClaimEscrow__factory } from '../src/typechain/factories/RedeemableERC20ClaimEscrow__factory'; -import type { DepositEvent } from '../src/typechain/RedeemableERC20ClaimEscrow'; + + const EscrowInterface = RedeemableERC20ClaimEscrow__factory.createInterface(); /** @@ -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 SaleVmFrom( + new BetweenBlocks(startBlock, endBlock), + new BuyAmount(), + new FixedPrice(75, 6), + ), + // canStartStateConfig: new BetweenBlocks(startBlock), + // canEndStateConfig: new BetweenBlocks(endBlock), + // calculatePriceStateConfig: new FixedPrice('75', 6), recipient: recipient.address, reserve: saleReserve.address, cooldownDuration: 1, @@ -95,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(); @@ -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 @@ -321,4 +328,4 @@ describe('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 9f66b1c..6b2238f 100644 --- a/test/3_verify.test.ts +++ b/test/3_verify.test.ts @@ -1,10 +1,10 @@ import { expect } from 'chai'; import { ethers } from 'hardhat'; - 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, { @@ -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 ); }); @@ -65,4 +65,4 @@ describe('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 859718e..8de7702 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 { chainId } from './utils'; +import { AddressBook, Verify, VerifyTier, CombineTier } from '../src'; -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); - }); -}); describe('SDK - VerifyTier', () => { it('should deploy an VerifyTier child', async () => { @@ -592,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(); @@ -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( @@ -683,129 +109,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'); - }); -}); +}); \ 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/6_Stake.test.ts b/test/6_Stake.test.ts new file mode 100644 index 0000000..63652ec --- /dev/null +++ b/test/6_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)); + }); +}); \ No newline at end of file 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_Orderbook.test.ts b/test/7_Orderbook.test.ts new file mode 100644 index 0000000..5ad4074 --- /dev/null +++ b/test/7_Orderbook.test.ts @@ -0,0 +1,555 @@ +import { assert } from 'chai'; +import { ethers } from 'hardhat'; +import { concat, op } from '../src/utils'; +import { OrderBook__factory, ReserveTokenTest } from '../typechain'; +import { + OrderBook, + OrderConfig, + ClearConfig, + 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 = { + validInputs: [{ + token: tokenA.address, + vaultId: aliceInputVault + }], + validOutputs: [{ + token: tokenB.address, + vaultId: aliceOutputVault, + }], + 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 = { + validInputs: [{ + token: tokenB.address, + vaultId: bobInputVault, + }], + validOutputs: [{ + token: tokenA.address, + vaultId: bobOutputVault, + }], + 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 = { + validInputs: [{ + token: tokenA.address, + vaultId: aliceInputVault, + }], + validOutputs: [{ + token: tokenB.address, + vaultId: aliceOutputVault, + }], + 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 = { + validInputs: [{ + token: tokenA.address, + vaultId: aliceInputVault, + }], + validOutputs: [{ + token: tokenB.address, + vaultId: aliceOutputVault, + }], + 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 = { + validInputs: [{ + token: tokenB.address, + vaultId: bobInputVault, + }], + validOutputs: [{ + token: tokenA.address, + vaultId: bobOutputVault, + }], + 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: ClearConfig = { + aInputIndex: 0, + aOutputIndex: 0, + bInputIndex: 0, + bOutputIndex: 0, + aBountyVaultId: bountyBotVaultA, + bBountyVaultId: bountyBotVaultB, + }; + + const txClearOrder = await orderBook + .connect(bountyBot) + .clear(askConfig, bidConfig, bountyConfig); + + const { + sender: clearSender, + a_: clearA_, + b_: clearB_, + clearConfig: 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); + }); + +}); \ No newline at end of file diff --git a/test/7_RainJS.test.ts b/test/7_RainJS.test.ts deleted file mode 100644 index d076c6b..0000000 --- a/test/7_RainJS.test.ts +++ /dev/null @@ -1,895 +0,0 @@ -import { assert } from 'chai'; -import { ethers } from 'hardhat'; -import { Tier, Time } from './utils'; -import { BigNumber } from 'ethers'; -import { - op, - paddedUInt32, - selectLte, - arg, - concat, - callSize, - tierRange, - 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 () => { - - const customBlockNumber: OpcodeFN = (state, operand, data) => { - state.stack.push( - BigNumber.from(data.blockNumber) - ) - } - const applyOpFn: ApplyOpFn = {}; - applyOpFn[VM.Opcodes.BLOCK_NUMBER] = customBlockNumber; - - const script: StateConfig = { - 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), - ]) - ], - stackLength: 6, - argumentsLength: 0 - } - - const rainJs = new RainJS(script, {applyOpFn}); - - const result = await rainJs.run({blockNumber: 111}); - - const expected = BigNumber.from(111 + 111 + (1 + 2 + 3)); - - assert( - expected.eq(result), - ` - The addition operation failed: - expected ${expected} - got ${result}` - ); - }) - - 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) - ) - const val2 = BigNumber.from( - "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) - ) - 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 a0 = op(RainJS.Opcodes.VAL, arg(0)); - const a1 = op(RainJS.Opcodes.VAL, arg(1)); - const a2 = op(RainJS.Opcodes.VAL, arg(2)); - - // zero-based counting - const sourceIndex = 1; // 1 - const loopSize = 2; // 1 - const valSize = 2; // 3 - - const sources = [ - concat([ - v1, - v2, - v3, - op(RainJS.Opcodes.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), - op(RainJS.Opcodes.ADD, 4), - ]), - concat([ - // (arg0 arg1 arg2 add) - a0, - a1, - a2, - op(RainJS.Opcodes.ADD, 3), - ]), - ]; - - const script = { - sources, - 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)); - - 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(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), - ]) - ], - stackLength: 8, - argumentsLength: 0 - } - - const rainJs = new RainJS(script, {signer}); - - const result = await rainJs.run(); - const block = await Time.currentBlock(); - const expected = BigNumber.from(block + (1 + 2 + 3)); - - assert( - expected.eq(result), - ` - The addition operation failed: - 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(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), - ]) - ], - stackLength: 6, - argumentsLength: 0 - } - - const rainJs = new RainJS(script, {signer}); - - 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)); - - // advancing the blocks - await Time.advanceBlock(1); - - assert( - expected.eq(result), - ` - The addition operation failed: - expected ${expected} - 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(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), - ]) - ], - stackLength: 6, - argumentsLength: 0 - } - - const rainJs = new RainJS(script, {signer}); - - 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); - - // advancing the blocks - await Time.advanceBlock(1); - - assert( - expected.eq(result), - ` - The subtraction operation failed: - expected ${expected} - 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(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.BLOCK_TIMESTAMP), - op(RainJS.Opcodes.MUL, 2), - ]) - ], - stackLength: 3, - argumentsLength: 0 - } - - const rainJs = new RainJS(script, {signer}); - - for (let i = 0 ; i < 100; i++) { - const result = await rainJs.run(); - const time = await Time.currentTime(); - const expected = BigNumber.from(2 * time); - - // advancing the blocks - await Time.advanceBlock(1); - - assert( - expected.eq(result), - ` - The multiplication operation failed: - expected ${expected} - 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(RainJS.Opcodes.BLOCK_TIMESTAMP), - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.DIV, 3), - ]) - ], - stackLength: 4, - argumentsLength: 0 - } - - const rainJs = new RainJS(script, {signer}); - - 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); - - // advancing the blocks - await Time.advanceBlock(1); - - assert( - expected.eq(result), - ` - The division operation failed: - expected ${expected} - got ${result}` - ); - } - }) - - it('should perform saturating add operation correctly', async () => { - - const script: StateConfig = { - constants: [ - "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0", - "0x4a3bc6def" - ], - sources: [ - concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SATURATING_ADD, 2), - ]) - ], - stackLength: 3, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - - const result = await rainJs.run(); - - const expected = ethers.constants.MaxUint256; - - assert( - expected.eq(result), - ` - The saturating add operation failed: - expected ${expected} - got ${result}` - ); - }) - - it('should perform saturating mul operation correctly', async () => { - - const script: StateConfig = { - constants: [ - "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0", - "0x4a3bc6def" - ], - sources: [ - concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SATURATING_MUL, 2), - ]) - ], - stackLength: 3, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - - const result = await rainJs.run(); - - const expected = ethers.constants.MaxUint256; - - assert( - expected.eq(result), - ` - The saturating mul operation failed: - expected ${expected} - got ${result}` - ); - }) - - it('should perform saturating sub operation correctly', async () => { - - const script: StateConfig = { - constants: [ - "0x22", - "0x44" - ], - sources: [ - concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SATURATING_SUB, 2), - ]) - ], - stackLength: 3, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - - const result = await rainJs.run(); - - const expected = ethers.constants.Zero; - - assert( - expected.eq(result), - ` - The saturating sub operation failed: - expected ${expected} - got ${result}` - ); - }) - - it('should perform mod operation correctly', async () => { - - const script: StateConfig = { - constants: [ - "90", - "44" - ], - sources: [ - concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.MOD, 2), - ]) - ], - stackLength: 3, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - - const result = await rainJs.run(); - - const expected = ethers.constants.Two; - - assert( - expected.eq(result), - ` - The mod operation failed: - expected ${expected} - got ${result}` - ); - }) - - it('should perform exponention operation correctly', async () => { - - const script: StateConfig = { - constants: [ - "2", - "5" - ], - sources: [ - concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.EXP, 2), - ]) - ], - stackLength: 3, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - - const result = await rainJs.run(); - - const expected = BigNumber.from("32"); - - assert( - expected.eq(result), - ` - The exponention operation failed: - expected ${expected} - got ${result}` - ); - }) - - it('should perform scale18_mul operation correctly', async () => { - - const script: StateConfig = { - constants: [ - "0x22", - "0x44" - ], - sources: [ - concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SCALE18_MUL, 5), - ]) - ], - stackLength: 3, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - const result = await rainJs.run(); - - const expected = BigNumber.from("0x22").mul("10000000000000").mul("0x44"); - - assert( - expected.eq(result), - ` - The scale18 mul operation failed: - expected ${expected} - got ${result}` - ); - }) - - it('should perform scale18_div operation correctly', async () => { - - const script: StateConfig = { - constants: [ - "0x22", - "0x44" - ], - sources: [ - concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SCALE18_DIV, 10), - ]) - ], - stackLength: 3, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - const result = await rainJs.run(); - - const expected = BigNumber.from("0x22").mul("100000000").div("0x44"); - - assert( - expected.eq(result), - ` - The scale18 div operation failed: - expected ${expected} - got ${result}` - ); - }) - - it('should perform scale18 operation correctly', async () => { - - const script: StateConfig = { - constants: [ - "220000000000000000012345", - ], - sources: [ - concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.SCALE18, 22), - ]) - ], - stackLength: 2, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - const result = await rainJs.run(); - - const expected = BigNumber.from("22000000000000000001"); - - assert( - expected.eq(result), - ` - The scale18 operation failed: - expected ${expected} - got ${result}` - ); - }) - - it('should perform scalen operation correctly', async () => { - - const script: StateConfig = { - constants: [ - "44371183800000000001", - ], - sources: [ - concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.SCALEN, 3), - ]) - ], - stackLength: 2, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - const result = await rainJs.run(); - - const expected = BigNumber.from("44371"); - - assert( - expected.eq(result), - ` - The scalen operation failed: - expected ${expected} - got ${result}` - ); - }) - - it('should perform scale_by operation correctly', async () => { - - const script: StateConfig = { - constants: [ - "44371183800127436851408839", - ], - sources: [ - concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.SCALE_BY, 136), - ]) - ], - stackLength: 2, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - const result = await rainJs.run(); - - const expected = BigNumber.from("443711838001274368"); - - assert( - expected.eq(result), - ` - The scale_by operation failed: - 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(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), - ]) - ], - stackLength: 6, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - const result = await rainJs.run(); - - const expected = BigNumber.from("10"); - - assert( - expected.eq(result), - ` - The min operation failed: - 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(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), - ]) - ], - stackLength: 7, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - const result = await rainJs.run(); - - const expected = BigNumber.from("60"); - - assert( - expected.eq(result), - ` - The max operation failed: - 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(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), - ]) - ], - stackLength: 7, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - const result = await rainJs.run(); - - const expected = BigNumber.from("30"); - - assert( - expected.eq(result), - ` - The eager_if operation failed: - 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(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), - ]) - ], - stackLength: 20, - argumentsLength: 0 - } - - const rainJs = new RainJS(script); - const result = await rainJs.run(); - - const expected = BigNumber.from("30"); - - assert( - expected.eq(result), - ` - The operation failed: - 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], - 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), - ]) - ], - stackLength: 7, - argumentsLength: 0 - } - - const rainJs = new RainJS(script, {signer}); - const result = await rainJs.run(); - - const expected = BigNumber.from( - "0x" + paddedUInt32(await Time.currentBlock() - 50).repeat(8) - ); - - assert( - expected.eq(result), - ` - The operation failed: - 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], - 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)), - ]) - ], - stackLength: 7, - argumentsLength: 0 - } - - 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) - ); - - assert( - expected.eq(result), - ` - The operation failed: - expected ${expected} - got ${result}` - ); - }) - -}) - - - - diff --git a/test/8_RainJSVM.test.ts b/test/8_RainJSVM.test.ts new file mode 100644 index 0000000..e147681 --- /dev/null +++ b/test/8_RainJSVM.test.ts @@ -0,0 +1,816 @@ +import { assert } from 'chai'; +import { ethers } from 'hardhat'; +import { BigNumber } from 'ethers'; +import { expectAsyncError, ONE, Tier, Time } from './utils'; +import { StateConfig, RainJSVM, OpJSVM, FnPtrsJSVM, VM } from '../src'; +import { + op, + paddedUInt32, + selectLte, + concat, + callSize, + tierRange, + selectLteLogic, + selectLteMode, +} from '../src/utils'; + + +describe('SDK - RainJSVM', () => { + it('should perform correctly with custom opcode function', async () => { + const customBlockNumber: OpJSVM = (state, operand, data) => { + state.stack.push(BigNumber.from(data.blockNumber)); + }; + const applyOpFn: FnPtrsJSVM = {}; + applyOpFn[VM.Opcodes.BLOCK_NUMBER] = customBlockNumber; + + const script: StateConfig = { + constants: [1, 2, 3], + sources: [ + concat([ + op(VM.Opcodes.BLOCK_NUMBER), + 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 RainJSVM(script, { applyOpFn }); + + const result = await rainJs.run({ blockNumber: 111 }); + + const expected = BigNumber.from(111 + 111 + (1 + 2 + 3)); + + assert( + expected.eq(result[0]), + ` + The addition operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + 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) + ); + const val2 = BigNumber.from( + '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) + ); + const constants = [val1, val2, val3]; + + 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.CONSTANT, 3); + const a1 = op(VM.Opcodes.CONSTANT, 4); + const a2 = op(VM.Opcodes.CONSTANT, 5); + + // zero-based counting + const sourceIndex = 1; // 1 + const loopSize = 2; // 1 + const valSize = 2; // 3 + + const sources = [ + concat([ + v1, + v2, + v3, + op(VM.Opcodes.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), + op(VM.Opcodes.ADD, 4), + ]), + concat([ + // (arg0 arg1 arg2 add) + a0, + a1, + a2, + op(VM.Opcodes.ADD, 3), + ]), + ]; + + const script = { + sources, + constants, + argumentsLength: 3, + stackLength: 3, + }; + + const rainJs = new RainJSVM(script); + + const result = await rainJs.run(); + + const expected = BigNumber.from( + 9 + 5 + 1 + (10 + 6 + 2) + (11 + 7 + 3) + (12 + 8 + 4) + ); + + assert( + expected.eq(result[0]), + ` + 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.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 RainJSVM(script, { signer }); + + const result = await rainJs.run(); + const block = await Time.currentBlock(); + const expected = BigNumber.from(block + (1 + 2 + 3)); + + assert( + expected.eq(result[0]), + ` + The addition operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + 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.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 RainJSVM(script, { signer }); + + 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)); + + // advancing the blocks + await Time.advanceBlock(1); + + assert( + expected.eq(result[0]), + ` + The addition operation failed: + expected ${expected} + got ${result[0]}` + ); + } + }); + + 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.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 RainJSVM(script, { signer }); + + 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); + + // advancing the blocks + await Time.advanceBlock(1); + + assert( + expected.eq(result[0]), + ` + The subtraction operation failed: + expected ${expected} + got ${result[0]}` + ); + } + }); + + 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.CONSTANT, 0), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.MUL, 2), + ]), + ], + }; + + const rainJs = new RainJSVM(script, { signer }); + + for (let i = 0; i < 100; i++) { + const result = await rainJs.run(); + const time = await Time.currentTime(); + const expected = BigNumber.from(2 * time); + + // advancing the blocks + await Time.advanceBlock(1); + + assert( + expected.eq(result[0]), + ` + The multiplication operation failed: + expected ${expected} + got ${result[0]}` + ); + } + }); + + 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.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.DIV, 3), + ]), + ], + }; + + const rainJs = new RainJSVM(script, { signer }); + + 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); + + // advancing the blocks + await Time.advanceBlock(1); + + assert( + expected.eq(result[0]), + ` + The division operation failed: + expected ${expected} + got ${result[0]}` + ); + } + }); + + it('should perform saturating add operation correctly', async () => { + const script: StateConfig = { + constants: [ + '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0', + '0x4a3bc6def', + ], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SATURATING_ADD, 2), + ]), + ], + }; + + const rainJs = new RainJSVM(script); + + const result = await rainJs.run(); + + const expected = ethers.constants.MaxUint256; + + assert( + expected.eq(result[0]), + ` + The saturating add operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + it('should perform saturating mul operation correctly', async () => { + const script: StateConfig = { + constants: [ + '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0', + '0x4a3bc6def', + ], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SATURATING_MUL, 2), + ]), + ], + }; + + const rainJs = new RainJSVM(script); + + const result = await rainJs.run(); + + const expected = ethers.constants.MaxUint256; + + assert( + expected.eq(result[0]), + ` + The saturating mul operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + it('should perform saturating sub operation correctly', async () => { + const script: StateConfig = { + constants: ['0x22', '0x44'], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SATURATING_SUB, 2), + ]), + ], + }; + + const rainJs = new RainJSVM(script); + + const result = await rainJs.run(); + + const expected = ethers.constants.Zero; + + assert( + expected.eq(result[0]), + ` + The saturating sub operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + it('should perform mod operation correctly', async () => { + const script: StateConfig = { + constants: ['90', '44'], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.MOD, 2), + ]), + ], + }; + + const rainJs = new RainJSVM(script); + + const result = await rainJs.run(); + + const expected = ethers.constants.Two; + + assert( + expected.eq(result[0]), + ` + The mod operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + it('should perform exponention operation correctly', async () => { + const script: StateConfig = { + constants: ['2', '5'], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.EXP, 2), + ]), + ], + }; + + const rainJs = new RainJSVM(script); + + const result = await rainJs.run(); + + const expected = BigNumber.from('32'); + + assert( + expected.eq(result[0]), + ` + The exponention operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + it('should perform scale18_mul operation correctly', async () => { + const script: StateConfig = { + constants: ['0x22', BigNumber.from('0x44').mul(ONE)], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SCALE18_MUL, 5), + ]), + ], + }; + + const rainJs = new RainJSVM(script); + const result = await rainJs.run(); + + const expected = BigNumber.from('0x22').mul('10000000000000').mul('0x44'); + + assert( + expected.eq(result[0]), + ` + The scale18 mul operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + it('should perform scale18_div operation correctly', async () => { + const script: StateConfig = { + constants: ['0x22', '0x44'], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SCALE18_DIV, 10), + ]), + ], + }; + + const rainJs = new RainJSVM(script); + const result = await rainJs.run(); + + const expected = BigNumber.from('0x22').mul('100000000').mul(ONE).div('0x44'); + + assert( + expected.eq(result[0]), + ` + The scale18 div operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + it('should perform scale18 operation correctly', async () => { + const script: StateConfig = { + constants: ['220000000000000000012345'], + sources: [ + concat([op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.SCALE18, 22)]), + ], + }; + + const rainJs = new RainJSVM(script); + const result = await rainJs.run(); + + const expected = BigNumber.from('22000000000000000001'); + + assert( + expected.eq(result[0]), + ` + The scale18 operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + it('should perform scalen operation correctly', async () => { + const script: StateConfig = { + constants: ['44371183800000000001'], + sources: [concat([op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.SCALEN, 3)])], + }; + + const rainJs = new RainJSVM(script); + const result = await rainJs.run(); + + const expected = BigNumber.from('44371'); + + assert( + expected.eq(result[0]), + ` + The scalen operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + it('should perform scale_by operation correctly', async () => { + const script: StateConfig = { + constants: ['44371183800127436851408839'], + sources: [ + concat([op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.SCALE_BY, 248)]), + ], + }; + + const rainJs = new RainJSVM(script); + const result = await rainJs.run(); + + const expected = BigNumber.from('443711838001274368'); + + assert( + expected.eq(result[0]), + ` + The scale_by operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + 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.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 RainJSVM(script); + const result = await rainJs.run(); + + const expected = BigNumber.from('10'); + + assert( + expected.eq(result[0]), + ` + The min operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + 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.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 RainJSVM(script); + const result = await rainJs.run(); + + const expected = BigNumber.from('60'); + + assert( + expected.eq(result[0]), + ` + The max operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + it('eager_if and is_zero should work fine', async () => { + const script: StateConfig = { + constants: [10, 20, 30, 35], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.ISZERO), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.EAGER_IF), + ]), + ], + }; + + const rainJs = new RainJSVM(script); + const result = await rainJs.run(); + + const expected = BigNumber.from('30'); + + assert( + expected.eq(result[0]), + ` + The eager_if operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + 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.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.EQUAL_TO), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.EVERY, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.EAGER_IF), + ]), + ], + }; + + const rainJs = new RainJSVM(script); + const result = await rainJs.run(); + + const expected = BigNumber.from('30'); + + assert( + expected.eq(result[0]), + ` + The operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + 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.CONSTANT, 1), + op(VM.Opcodes.BLOCK_NUMBER), + op( + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, + tierRange(Tier.ZERO, Tier.EIGHT) + ), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 0), + op( + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, + tierRange(Tier.ZERO, Tier.EIGHT) + ), + op(VM.Opcodes.SATURATING_DIFF), + ]), + ], + }; + + const rainJs = new RainJSVM(script, { signer }); + const result = await rainJs.run(); + + const expected = BigNumber.from( + '0x' + paddedUInt32((await Time.currentBlock()) - 50).repeat(8) + ); + + assert( + expected.eq(result[0]), + ` + The operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + 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.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 0), + op( + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, + tierRange(Tier.TWO, Tier.FOUR) + ), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 1), + op( + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, + tierRange(Tier.TWO, Tier.SIX) + ), + op(VM.Opcodes.BLOCK_NUMBER), + op( + VM.Opcodes.SELECT_LTE, + selectLte(selectLteLogic.any, selectLteMode.min, 2) + ), + ]), + ], + }; + + const rainJs = new RainJSVM(script, { signer }); + const result = await rainJs.run(); + + const expected = BigNumber.from( + '0x' + + paddedUInt32('0xffffffff').repeat(2) + + paddedUInt32(50).repeat(4) + + paddedUInt32('0xffffffff').repeat(2) + ); + + assert( + expected.eq(result[0]), + ` + The operation failed: + expected ${expected} + got ${result[0]}` + ); + }); + + 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.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.EXP, 2), + ]), + ], + }; + const rainJs = new RainJSVM(script, { signer }); + + await expectAsyncError(rainJs.run(), 'max numeric range overflow'); + }); +}); \ No newline at end of file diff --git a/test/9_Formatter.test.ts b/test/9_Formatter.test.ts new file mode 100644 index 0000000..edc95cb --- /dev/null +++ b/test/9_Formatter.test.ts @@ -0,0 +1,1923 @@ +// import { expect } from 'chai'; +// import { ethers } from 'hardhat'; +// import { +// VM, +// utils, +// AllStandardOps, +// StateConfig, +// SaleStorage, +// SaleContext, +// Formatter, +// } 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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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 = Formatter.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(() => { +// // Formatter.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 = Formatter.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 diff --git a/test/OB_MatchMaker.test.ts b/test/OB_MatchMaker.test.ts new file mode 100644 index 0000000..4523280 --- /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/RuleBuilder.test.ts b/test/RuleBuilder.test.ts new file mode 100644 index 0000000..a1439f3 --- /dev/null +++ b/test/RuleBuilder.test.ts @@ -0,0 +1,1822 @@ +import { ethers } from "hardhat" +import { assert } from "chai"; +import { Tier } from "./utils"; +import { BigNumber } from "ethers"; +import { RuleBuilder, StateConfig, VM } from "../src"; +import { Currency, eCurrency } from "../src/rule-builder/types"; +import { areEqualConfigs, concat, op, paddedUInt32 } from "../src/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: 'input', + 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: 'input', + 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(5), + BigNumber.from(10), + '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), + // 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.STACK, 4), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 2), + op(VM.Opcodes.CONTEXT, 1), + 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, 5), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 3), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.STACK, 5), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 5), + 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: 'input', + 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: 'input', + 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: 'input', + 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(7) + } + } + } + }, + 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 default quantity and price + ethers.constants.Zero, + BigNumber.from(5), + // currency2 default quantity and price + ethers.constants.Zero, + BigNumber.from(7), + // currency1 prices constants + BigNumber.from(5), + BigNumber.from(10), + // currency1 prices global modifier + '0x123456789abcdef', + ethers.constants.MaxUint256, + 7500, + 10000, + // currency2 quantities global modifier + '0x123456789abcdef', + ethers.constants.MaxUint256, + 7500, + 10000, + // currency2 prices + 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 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.STACK, 6), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 2), + op(VM.Opcodes.CONTEXT, 1), + 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, 15), + op(VM.Opcodes.STACK, 7), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 3), + op(VM.Opcodes.CONSTANT, 16), + op(VM.Opcodes.STACK, 7), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 7), + op(VM.Opcodes.MIN, 3), + // currency1 prices global modifier + op(VM.Opcodes.CONSTANT, 17), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.ITIERV2_REPORT), + 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, 20), + op(VM.Opcodes.DIV, 2), + // currency2 quantities + op(VM.Opcodes.STACK, 4), + op(VM.Opcodes.CONTEXT, 1), + 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), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.ITIERV2_REPORT), + 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, 24), + op(VM.Opcodes.DIV, 2), + // currency2 prices + op(VM.Opcodes.STACK, 5), + op(VM.Opcodes.CONSTANT, 25), + 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), + 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` + ); + }); + + 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: [ + { + 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) + } + }, + modifier: { + type: 'multiplier', + values: 2, + condition: { + conditions: [ + { + struct: { + subject: 'constant', + args: { value: ethers.constants.One } + }, + operator: 'true', + } + ], + operator: 'true', + } + } + } + }, + ], + 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) + } + }, + 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(10) + } + } + ], + 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)}` + ); + }); + + 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)}` + ); + }); +}); diff --git a/test/utils.ts b/test/utils.ts index 9e55d62..5021ec9 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 @@ -47,23 +49,25 @@ export enum SaleStatus { * **These addresses are deterministically generated with the HH signers.** */ export interface Addresses { + 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; + StakeFactory: string; + OrderBook: string; AlwaysTier: string; + AutoApproveFactory: string; } 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 +93,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 { @@ -255,3 +267,199 @@ 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; +} + +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 d5ff244..8d324eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,99 +3,100 @@ "@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" - 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.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.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.17.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" - integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== + 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.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/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.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@^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.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.17.0" + "@babel/types" "^7.18.9" + "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" - source-map "^0.5.0" -"@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.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.16.7" - "@babel/types" "^7.16.7" + "@babel/helper-explode-assignable-expression" "^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.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.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.17.7" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" + "@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.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.18.6": + 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.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.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@^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.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" @@ -125,302 +126,302 @@ 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== +"@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" + 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-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.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.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== - 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.17.3" - "@babel/types" "^7.17.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.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-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": - 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== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@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== - dependencies: - "@babel/types" "^7.17.0" - -"@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.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== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" - -"@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== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/types" "^7.18.6" + +"@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.9" + +"@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.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.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" + 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", "@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.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@^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.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.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.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@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.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@^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.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.9" + +"@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.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.9" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@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.9" + "@babel/types" "^7.18.9" + +"@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.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.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.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.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.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@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.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.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@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.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.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.16.7" - "@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.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.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.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@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.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.17.6" - "@babel/helper-plugin-utils" "^7.16.7" + "@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.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.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.16.7" + "@babel/helper-plugin-utils" "^7.18.9" "@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.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.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@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.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.16.7" + "@babel/helper-plugin-utils" "^7.18.9" "@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.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.16.7" + "@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.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.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.17.0" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@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.16.7" + "@babel/plugin-transform-parameters" "^7.18.8" -"@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.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.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.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@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.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.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.16.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@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.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.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@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.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.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.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-syntax-async-generators@^7.8.4": version "7.8.4" @@ -464,6 +465,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@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.18.6" + "@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,305 +543,296 @@ "@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== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@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== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@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== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@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.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== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@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== - 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-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@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.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.9" + +"@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.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@^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.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.16.7" + "@babel/helper-plugin-utils" "^7.18.9" -"@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.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.16.7" + "@babel/helper-plugin-utils" "^7.18.9" -"@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.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.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.16.7" + "@babel/helper-plugin-utils" "^7.18.9" -"@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.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.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.16.7" + "@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.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.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@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.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.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.16.7" + "@babel/helper-plugin-utils" "^7.18.9" -"@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.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.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.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@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.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.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.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" + "@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.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.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.16.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" + "@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@^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.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.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@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.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.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@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.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.16.7" + "@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.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.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== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@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.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.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.18.6" 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.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.16.7" - -"@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== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - 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/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.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.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.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" -"@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.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.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.16.7" + "@babel/helper-plugin-utils" "^7.18.9" -"@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.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.16.7" + "@babel/helper-plugin-utils" "^7.18.9" -"@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.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== - dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@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-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-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" - "@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" + 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.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" @@ -843,44 +842,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-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-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" - "@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-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" - "@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-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" - "@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-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.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.16.8" - 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" + "@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" "@babel/preset-modules@^0.1.5": @@ -895,51 +894,51 @@ 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.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.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== +"@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== 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.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== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-environment-visitor" "^7.16.7" - "@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/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.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.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@^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.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.16.7" + "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -947,68 +946,26 @@ 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/2dd7102e9addf0662bc0aef2a6aacb8b82edf089" - 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#a7b7213dfa7c2b847ebedf79e89f642ace0548da": 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#a7b7213dfa7c2b847ebedf79e89f642ace0548da" 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" + "@openzeppelin/contracts" "=4.7.0" + "@openzeppelin/contracts-upgradeable" "=4.7.0" -"@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-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== +"@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.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": +"@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== @@ -1087,37 +1044,37 @@ 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": - 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.0", "@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" -"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.6.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== +"@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" @@ -1130,27 +1087,27 @@ 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": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.1.tgz#8d941b83a602b4a89949c879615f7ea9a90e6671" - integrity sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA== +"@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.6.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== +"@ethereumjs/vm@^5.9.0": + 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/blockchain" "^5.5.2" - "@ethereumjs/common" "^2.6.4" - "@ethereumjs/tx" "^3.5.1" + "@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.4" + ethereumjs-util "^7.1.5" functional-red-black-tree "^1.0.1" mcl-wasm "^0.7.1" merkle-patricia-tree "^4.2.4" @@ -1171,167 +1128,270 @@ "@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.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.0" - -"@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/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" + 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/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/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" + 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/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/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" + "@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" + 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.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/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/bytes" "^5.6.0" + "@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/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/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/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.6.0" + "@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" + integrity sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA== + dependencies: + "@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/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.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/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/bignumber" "^5.6.0" + "@ethersproject/logger" "^5.7.0" -"@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/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/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" + 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/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/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" + 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.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.6.0" + "@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": @@ -1339,20 +1399,32 @@ 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/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" + integrity sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ== 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/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/bytes" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" + "@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" + 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" @@ -1361,155 +1433,218 @@ 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/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" + 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/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.6.0" + "@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" + 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.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/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" + 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/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" + 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/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/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" + 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/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/bytes" "^5.6.0" - "@ethersproject/hash" "^5.6.0" + "@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" + 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.0" + "@ethersproject/strings" "^5.6.1" "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -1727,17 +1862,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", "@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.1" + "@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.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", "@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" + 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.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.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 +1910,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.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" + "@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 +1929,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.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.45.4" + "@rushstack/node-core-library" "3.49.0" "@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.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.17.2" + "@microsoft/api-extractor-model" "7.22.1" "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.45.4" - "@rushstack/rig-package" "0.3.11" - "@rushstack/ts-command-line" "4.10.10" + "@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" @@ -1803,6 +1976,16 @@ 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.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== + "@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" @@ -1825,9 +2008,22 @@ 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.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-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" @@ -1837,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" @@ -1914,15 +2117,15 @@ chalk "^4.1.0" 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== +"@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.4.2": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.5.0.tgz#3fd75d57de172b3743cdfc1206883f56430409cc" - integrity sha512-fdkzKPYMjrRiPK6K4y64e6GzULR7R7RwxSigHS8DDp7aWDeoReqsQI+cxHV1UuhAqX69L1lAaWDxenfP+xiqzA== +"@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== "@princjef/api-documenter@^1.0.2": version "1.0.2" @@ -2029,10 +2232,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.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" @@ -2044,24 +2247,46 @@ 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.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.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.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" @@ -2178,10 +2403,10 @@ style-loader "^3.3.1" 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== +"@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== dependencies: antlr4ts "^0.5.0-alpha.4" @@ -2190,129 +2415,127 @@ 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.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.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.7" + 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.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.19.0" + "@statoscope/helpers" "5.24.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.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.19.0" + "@statoscope/helpers" "5.24.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.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.19.0" + "@statoscope/helpers" "5.24.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.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.19.0" + "@statoscope/helpers" "5.24.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.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.19.0" + "@statoscope/helpers" "5.24.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.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" 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.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.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.24.0" + "@statoscope/stats-extension-custom-reports" "5.24.0" + "@statoscope/types" "5.22.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.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.19.0" - "@statoscope/webpack-model" "5.20.1" + "@statoscope/stats-extension-compressed" "5.24.0" + "@statoscope/webpack-model" "5.24.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.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.19.3" - "@statoscope/webpack-model" "5.20.1" + "@statoscope/stats-extension-package-info" "5.24.0" + "@statoscope/webpack-model" "5.24.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.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.14.1" - highcharts "^9.2.2" + "@statoscope/types" "5.22.0" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -2326,122 +2549,30 @@ 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.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" @@ -2507,12 +2638,19 @@ "@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" +"@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" @@ -2532,32 +2670,51 @@ 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.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.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.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/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" @@ -2608,7 +2765,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" @@ -2642,32 +2799,42 @@ 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.25" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.25.tgz#527051f3c2f77aa52e5dc74e45a3da5fb2301448" - integrity sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w== + 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" 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.48" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.48.tgz#55f70bd432b6515828c0298689776861b90ca4fa" - integrity sha512-4kxzqkrpwYtn6okJUcb2lfUu9ilnb3yhUOH6qX3nug8D2DupZ2drIkff2yJzYcNJVl3begnlcaBJ7tqiTTzjnQ== + 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.27" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.27.tgz#5da19383bdbeda99bc0d09cfbb88cab7297ebc51" - integrity sha512-C1pD3kgLoZ56Uuy5lhfOxie4aZlA3UMGLX9rXteq4WitEZH6Rl80mwactt9QG0w0gLFlN/kLBTFnGXtDVWvWQw== + 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/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" @@ -2682,9 +2849,14 @@ "@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/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" @@ -2707,10 +2879,10 @@ dependencies: "@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== +"@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== "@types/sinon-chai@^3.2.3": version "3.2.8" @@ -2721,9 +2893,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.13" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.13.tgz#60a7a87a70d9372d0b7b38cc03e825f46981fb83" + integrity sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ== dependencies: "@types/sinonjs__fake-timers" "*" @@ -2742,6 +2914,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" @@ -2775,99 +2952,90 @@ "@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.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.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.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.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.7" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/typescript-estree" "5.30.7" + debug "^4.3.4" + +"@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.7" + "@typescript-eslint/visitor-keys" "5.30.7" + +"@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.7" + 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.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.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.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.20.0" - "@typescript-eslint/visitor-keys" "5.20.0" - debug "^4.3.2" - globby "^11.0.4" + "@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.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.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.20.0" - "@typescript-eslint/types" "5.20.0" - "@typescript-eslint/typescript-estree" "5.20.0" + "@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.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.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.20.0" - eslint-visitor-keys "^3.0.0" + "@typescript-eslint/types" "5.30.7" + 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" @@ -3113,9 +3281,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.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" @@ -3125,9 +3293,9 @@ 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: +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== @@ -3176,7 +3344,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.8.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== @@ -3186,11 +3354,21 @@ 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@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" 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" @@ -3203,10 +3381,10 @@ 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 sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^3.0.0: version "3.0.1" @@ -3226,7 +3404,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" @@ -3247,12 +3425,12 @@ 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== -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== @@ -3263,7 +3441,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 +3471,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 +3481,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 +3510,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 +3531,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 +3543,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 +3553,22 @@ 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" + +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" @@ -3395,7 +3589,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 +3599,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 +3633,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 +3645,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" @@ -3468,32 +3662,20 @@ 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" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + 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.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" - integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== - -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" +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== axobject-query@^2.2.0: version "2.2.0" @@ -3503,7 +3685,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 +3745,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 +3754,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 +3764,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 +3774,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 +3783,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 +3794,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 +3802,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 +3810,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 +3818,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 +3827,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 +3838,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 +3850,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 +3872,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 +3884,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" @@ -3748,7 +3930,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== @@ -3757,7 +3939,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== @@ -3772,7 +3954,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== @@ -3782,22 +3964,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 +3988,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 +4013,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 +4028,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 +4036,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 +4051,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 +4067,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 +4093,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 +4102,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 +4111,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 +4119,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 +4131,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 +4139,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 +4155,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 +4178,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 +4187,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 +4199,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 +4269,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 +4282,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 +4290,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 +4301,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 +4316,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 +4326,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 +4339,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" @@ -4178,11 +4360,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" @@ -4199,7 +4376,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" @@ -4208,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" @@ -4242,35 +4424,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 +4457,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" @@ -4301,6 +4467,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" @@ -4327,7 +4500,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,16 +4574,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, 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== dependencies: - caniuse-lite "^1.0.30001317" - electron-to-chromium "^1.4.84" - escalade "^3.1.1" - node-releases "^2.0.2" - 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" @@ -4422,7 +4594,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" @@ -4442,11 +4614,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" @@ -4455,12 +4622,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 +4652,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 +4669,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 +4712,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 +4728,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 +4745,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 +4767,23 @@ 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.30001366: + 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: +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 sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + 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" @@ -4626,7 +4801,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,30 +4842,45 @@ 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" 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 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" +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" @@ -4722,9 +4912,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.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" @@ -4755,11 +4945,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 sha1-fad6+Yu96c5LWzWM1Va13e0tMUk= - 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" @@ -4792,22 +4977,10 @@ 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" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== dependencies: restore-cursor "^2.0.0" @@ -4818,19 +4991,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 sha1-CX8OEbByx8aYomxH9YiinCC0iws= - 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 sha1-a82TsJ+y7RAl0woRVdWZeVSlNRI= - cli-spinners@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" @@ -4841,12 +5001,24 @@ 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 sha1-QtaeNqBAoyH8nPhRwVE8rcUJMFQ= +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: - cli-regexp "~0.1.0" + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" cli-width@^2.0.0: version "2.2.1" @@ -4861,7 +5033,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" @@ -4886,31 +5058,31 @@ 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 sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + 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" -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 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 +5092,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 +5114,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" @@ -4954,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" @@ -5010,11 +5187,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" @@ -5023,7 +5195,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,9 +5205,9 @@ 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: +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== @@ -5050,10 +5222,17 @@ 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" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + integrity sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg== content-disposition@0.5.4: version "0.5.4" @@ -5086,9 +5265,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.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.2, cookie@^0.4.1: +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 +5285,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.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.20.2" + browserslist "^4.21.2" 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.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" @@ -5124,7 +5308,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" @@ -5199,7 +5383,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== @@ -5219,10 +5403,10 @@ 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 sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== crypto-browserify@3.12.0: version "3.12.0" @@ -5241,10 +5425,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" @@ -5301,36 +5485,36 @@ 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.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" - 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.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.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" - 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" @@ -5342,11 +5526,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.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.7" + cssnano-preset-default "^5.2.12" lilconfig "^2.0.3" yaml "^1.10.2" @@ -5382,7 +5566,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== @@ -5390,7 +5574,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 +5590,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,27 +5606,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.2, debug@^4.3.3: +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: - 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" @@ -5453,14 +5623,14 @@ 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" 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== @@ -5468,19 +5638,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 +5689,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 +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.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== @@ -5567,14 +5737,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 +5759,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" @@ -5603,26 +5773,16 @@ 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" - 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 +5796,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" @@ -5663,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" @@ -5692,7 +5852,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" @@ -5753,10 +5913,10 @@ 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== +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" @@ -5766,9 +5926,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 sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + 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" @@ -5778,7 +5938,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 +5946,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.188: + 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" @@ -5829,7 +5989,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,10 +6026,10 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^5.9.2: - 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== +enhanced-resolve@^5.9.3: + 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" @@ -5905,17 +6065,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 +6089,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" @@ -5952,7 +6120,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== @@ -5964,7 +6132,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" @@ -5978,16 +6146,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" @@ -5996,18 +6154,18 @@ 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@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 sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - 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" @@ -6116,22 +6274,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.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.16.3" + "@babel/runtime" "^7.18.9" 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.3" 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.2" 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" @@ -6163,24 +6322,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.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.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 +6397,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 +6554,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" @@ -6410,39 +6569,34 @@ 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" - integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= + 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== +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: - fast-safe-stringify "^2.0.6" + "@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" @@ -6497,18 +6651,11 @@ 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" -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" @@ -6524,21 +6671,11 @@ 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" -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" @@ -6580,9 +6717,9 @@ 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: +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== @@ -6603,10 +6740,15 @@ 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-cryptography@^1.0.3: + 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.3" + "@scure/bip32" "1.1.0" + "@scure/bip39" "1.1.0" ethereum-waffle@^3.4.0: version "3.4.4" @@ -6622,7 +6764,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" @@ -6716,7 +6858,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== @@ -6761,10 +6903,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.3, 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.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" @@ -6825,20 +6967,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" @@ -6855,45 +6983,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.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.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.4" + "@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" @@ -6906,14 +7034,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 sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - 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" @@ -6937,19 +7057,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" @@ -6983,12 +7090,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 +7116,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 +7162,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 +7214,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 +7224,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,12 +7257,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= - -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== + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: version "1.13.0" @@ -7173,14 +7276,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 +7297,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 +7312,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 +7326,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 +7351,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" @@ -7265,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" @@ -7276,7 +7386,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,17 +7394,10 @@ 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" -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" @@ -7337,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" @@ -7350,19 +7460,12 @@ 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= - -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" + integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== 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 +7477,21 @@ 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@^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" @@ -7417,16 +7529,16 @@ 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: +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== @@ -7438,7 +7550,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" @@ -7481,40 +7593,51 @@ 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" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + 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== +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" 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" 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" @@ -7570,22 +7693,27 @@ 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" - 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" 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" @@ -7594,9 +7722,9 @@ 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: +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== @@ -7626,16 +7754,16 @@ 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" -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== @@ -7647,7 +7775,19 @@ 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.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" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -7659,7 +7799,19 @@ 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" -global@^4.4.0, global@~4.4.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: version "4.4.0" resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== @@ -7689,7 +7841,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 +7915,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" @@ -7773,20 +7925,43 @@ 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.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.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" + "@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" + "@solidity-parser/parser" "^0.14.2" "@types/bn.js" "^5.1.0" "@types/lru-cache" "^5.1.0" abort-controller "^3.0.0" @@ -7799,19 +7974,19 @@ 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.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" + mocha "^10.0.0" p-map "^4.0.0" qs "^6.7.0" raw-body "^2.4.1" @@ -7823,18 +7998,18 @@ 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" 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 +8017,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" @@ -7861,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== @@ -7883,7 +8058,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 +8067,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 +8076,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,17 +8126,12 @@ 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= - -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== + integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== 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 +8140,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" @@ -7992,22 +8162,21 @@ 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" 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 +8191,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" @@ -8033,10 +8202,17 @@ 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" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -8061,9 +8237,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 +8287,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 +8300,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 +8331,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 +8341,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,12 +8413,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= - -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== + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== io-ts@1.10.4: version "1.10.4" @@ -8259,7 +8430,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 +8452,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" @@ -8310,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" @@ -8322,7 +8498,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== @@ -8332,7 +8508,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 +8552,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 +8564,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 +8574,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 +8613,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 +8623,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 +8640,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 +8657,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" @@ -8500,11 +8676,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" @@ -8537,10 +8708,10 @@ 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 sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-stream@^2.0.0: version "2.0.1" @@ -8564,7 +8735,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 +8750,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 +8774,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" @@ -8667,9 +8838,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" @@ -9168,12 +9339,12 @@ 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" - resolved "https://registry.yarnpkg.com/jora/-/jora-1.0.0-beta.6.tgz#c2dfa27773421279ba0c7eed452c2fe17dba8537" - integrity sha512-2FkqL/aVGKpZAYPwaElAV8x8P34E9NfxWCNl8VjimTfiftEjRb5xohNuosUyDMg2ukdn3iXKm2I6rNF7UQKM7A== +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== dependencies: "@discoveryjs/natural-compare" "^1.0.0" @@ -9185,7 +9356,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 +9371,15 @@ 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@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" @@ -9220,7 +9399,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 +9437,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 +9447,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== @@ -9297,25 +9476,17 @@ 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" - 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: +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 sha1-uknZat7RRE27jaPSA3SKy7zeyMg= + integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== json-schema-traverse@^0.4.1: version "0.4.1" @@ -9335,19 +9506,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 +9528,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 +9540,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 +9563,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" @@ -9412,12 +9583,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.2.2" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz#6ab1e52c71dfc0c0707008a91729a9491fe9f76c" - integrity sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw== +"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== dependencies: - array-includes "^3.1.4" + array-includes "^3.1.5" object.assign "^4.1.2" keccak@3.0.1: @@ -9447,14 +9618,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 +9649,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" @@ -9488,31 +9659,24 @@ 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" 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" -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" @@ -9563,7 +9727,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 +9817,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,15 +9882,15 @@ 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" 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" @@ -9736,7 +9900,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 +9911,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 +9921,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 +9936,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 +9966,32 @@ 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= - -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-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== 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 +10001,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" @@ -9854,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" @@ -9862,17 +10028,10 @@ 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" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== dependencies: ansi-escapes "^3.0.0" cli-cursor "^2.0.0" @@ -9881,12 +10040,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 +10088,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" @@ -9938,29 +10097,22 @@ lru-cache@^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 sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= - dependencies: - es5-ext "~0.10.2" + yallist "^4.0.0" 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" @@ -9988,25 +10140,23 @@ 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" - 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" +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" @@ -10038,21 +10188,12 @@ 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= - -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" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 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" @@ -10085,29 +10226,15 @@ 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" - 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 +10273,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 +10288,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" @@ -10220,7 +10347,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== @@ -10233,7 +10360,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,23 +10372,30 @@ 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" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== +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@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.2: +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 "^2.0.1" + +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: +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== @@ -10292,7 +10426,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 "*" @@ -10301,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" @@ -10315,36 +10456,64 @@ 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" +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" @@ -10358,7 +10527,12 @@ 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.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" @@ -10413,7 +10587,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,18 +10597,18 @@ 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= - -nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== -nanoid@^3.1.30, nanoid@^3.3.1: +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" + 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" @@ -10462,7 +10636,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" @@ -10474,7 +10648,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== @@ -10497,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" @@ -10513,19 +10695,24 @@ 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 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.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== + +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" @@ -10552,13 +10739,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 sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - 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" @@ -10567,29 +10747,29 @@ 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" 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" @@ -10599,21 +10779,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" @@ -10623,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== @@ -10631,15 +10811,25 @@ 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" +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" @@ -10668,27 +10858,28 @@ object.fromentries@^2.0.5: define-properties "^1.1.3" 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== +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== 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 +10893,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 +10911,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" @@ -10756,7 +10940,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== @@ -10794,28 +10978,19 @@ 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" -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 sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== p-cancelable@^0.3.0: version "0.3.0" @@ -10827,20 +11002,10 @@ 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 sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - 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= - -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== + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-limit@^1.1.0: version "1.3.0" @@ -10866,7 +11031,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 +11066,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" @@ -10933,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" @@ -10941,14 +11111,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 +11154,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 +11201,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 +11218,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: +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 +11243,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 +11257,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 +11285,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 +11300,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 +11327,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 +11335,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 +11356,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 +11376,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 +11404,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.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.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 +11438,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" @@ -11323,17 +11494,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" @@ -11374,10 +11545,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" @@ -11426,11 +11597,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 +11613,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" @@ -11472,9 +11643,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" @@ -11508,7 +11679,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,11 +11699,18 @@ 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" +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" @@ -11561,17 +11739,17 @@ 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" - 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" @@ -11588,7 +11766,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 +11789,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 +11797,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 +11807,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,29 +11822,31 @@ 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" 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.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.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== + dependencies: + side-channel "^1.0.4" qs@~6.5.2: version "6.5.3" @@ -11685,7 +11865,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 +11892,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" @@ -11745,7 +11915,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" @@ -11753,7 +11923,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" @@ -11761,7 +11931,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" @@ -11770,7 +11940,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" @@ -11779,7 +11949,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" @@ -11811,13 +11981,20 @@ 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" 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" @@ -11828,7 +12005,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" @@ -11883,7 +12060,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== @@ -11905,16 +12082,16 @@ 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" 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" @@ -11926,7 +12103,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" @@ -11936,7 +12113,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" @@ -11955,16 +12132,46 @@ 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" -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== @@ -11993,12 +12200,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" @@ -12008,7 +12215,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" @@ -12018,7 +12225,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" @@ -12033,7 +12240,12 @@ 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@^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" @@ -12048,7 +12260,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" @@ -12063,21 +12275,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" @@ -12090,14 +12303,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" @@ -12113,7 +12326,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" @@ -12267,7 +12480,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" @@ -12315,7 +12528,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" @@ -12336,14 +12549,14 @@ 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" 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== @@ -12360,7 +12573,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 +12590,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 +12623,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" @@ -12434,12 +12647,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" @@ -12454,12 +12667,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" @@ -12474,10 +12687,18 @@ 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" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" @@ -12491,7 +12712,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" @@ -12516,7 +12737,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== @@ -12535,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" @@ -12556,7 +12782,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" @@ -12614,19 +12840,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" @@ -12719,20 +12932,20 @@ 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= + 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, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +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" @@ -12775,7 +12988,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" @@ -12854,7 +13067,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" @@ -12864,10 +13077,10 @@ 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= +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" @@ -12880,7 +13093,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" @@ -12911,13 +13124,13 @@ 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" 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== @@ -12943,7 +13156,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 +13171,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" @@ -12992,7 +13207,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" @@ -13004,14 +13219,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" @@ -13032,25 +13247,20 @@ 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" 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 sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - 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" @@ -13059,20 +13269,20 @@ 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" +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 sha1-PFMZQukIwml8DsNEhYwobHygpgo= - style-loader@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" @@ -13086,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" @@ -13096,7 +13313,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" @@ -13165,13 +13382,29 @@ 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" 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" @@ -13252,33 +13485,33 @@ 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: - 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.12.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c" - integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ== + 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" commander "^2.20.0" - source-map "~0.7.2" source-map-support "~0.5.20" test-exclude@^6.0.0: @@ -13293,7 +13526,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" @@ -13306,7 +13539,24 @@ 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== + +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" @@ -13324,25 +13574,17 @@ 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= - -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" + 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 sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== tiny-glob@^0.2.6: version "0.2.9" @@ -13374,17 +13616,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" @@ -13396,7 +13638,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" @@ -13423,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" @@ -13432,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" @@ -13450,33 +13692,22 @@ 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" 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.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 +13745,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 +13759,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.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.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 +13774,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: @@ -13636,7 +13867,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" @@ -13648,7 +13879,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" @@ -13660,7 +13891,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" @@ -13670,7 +13901,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" @@ -13751,34 +13982,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.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== + 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" @@ -13795,14 +14026,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: @@ -13815,6 +14046,11 @@ undici@^4.14.1: 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" + integrity sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q== + 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" @@ -13851,7 +14087,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" @@ -13871,16 +14107,24 @@ 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" +update-browserslist-db@^1.0.4: + 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" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -13891,36 +14135,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" @@ -13945,7 +14189,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" @@ -13961,12 +14205,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" @@ -13983,7 +14227,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== @@ -14023,12 +14267,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" @@ -14056,9 +14300,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" @@ -14066,7 +14310,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" @@ -14323,11 +14567,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" @@ -14351,7 +14595,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" @@ -14369,9 +14613,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 +14626,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" @@ -14442,7 +14686,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" @@ -14470,26 +14714,33 @@ 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: +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== + 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" -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +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: - isexe "^2.0.0" + string-width "^1.0.2 || 2" widest-line@^3.1.0: version "3.1.0" @@ -14501,7 +14752,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" @@ -14516,15 +14767,15 @@ 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" 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" @@ -14532,7 +14783,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" @@ -14567,7 +14818,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" @@ -14589,7 +14840,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" @@ -14615,9 +14866,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.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" @@ -14642,7 +14893,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" @@ -14669,7 +14920,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" @@ -14679,7 +14930,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" @@ -14701,7 +14952,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" @@ -14718,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" @@ -14728,22 +14987,23 @@ 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" - integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= + integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== dependencies: 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" @@ -14754,22 +15014,21 @@ 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== +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" - 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-parser "^13.1.2" yargs@16.2.0, yargs@^16.2.0: version "16.2.0" @@ -14787,7 +15046,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" @@ -14804,11 +15063,6 @@ yargs@^4.7.1: y18n "^3.2.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== - yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"