├── .env ├── .gitignore ├── CHANGELOG.md ├── README.md ├── jest.config.js ├── package-lock.json ├── package.json ├── package.json.prod ├── src ├── builder │ ├── index.ts │ ├── instruction-builder.ts │ └── job-builder.ts ├── config │ ├── error.ts │ ├── index.ts │ ├── job-config.ts │ ├── job-constants.ts │ └── program-id.ts ├── idl │ ├── index.ts │ └── snowflake.json ├── index.ts ├── model │ ├── index.ts │ ├── job-layout.ts │ └── job.ts ├── service │ ├── finder.ts │ ├── index.ts │ ├── snowflake.ts │ └── transaction-sender.ts └── tsconfig.json ├── test-env.js ├── test ├── job-builder.test.ts ├── model.test.ts ├── snowflake.test.ts └── test-data.ts ├── tsconfig.json └── yarn.lock /.env: -------------------------------------------------------------------------------- 1 | ANCHOR_WALLET="/Users/{user}/.config/solana/id.json" 2 | ANCHOR_PROVIDER_URL="https://api.devnet.solana.com" 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | 4 | # production 5 | /dist 6 | /logs 7 | 8 | # misc 9 | .DS_Store 10 | *.iml -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | ## [1.0.12] - 2022-05-10 6 | * Upgrade Anchor to version 0.24.2 7 | 8 | ## [1.0.11] - 2022-04-20 9 | * Support self-funded job [https://github.com/snowflake-so/snowflake-sdk/pull/10] 10 | * Add finding jobs by appId [https://github.com/snowflake-so/snowflake-sdk/pull/12] 11 | 12 | ## [1.0.10] - 2022-03-29 13 | 14 | 15 | ### Updates 16 | 17 | * Allow developers to specify custom job account sizes at creation [https://github.com/snowflake-so/snowflake-sdk/pull/7] 18 | * Update Snowflake PDA account calculation to support context isolation at the app-id level [https://github.com/snowflake-so/snowflake-sdk/pull/8] 19 | 20 | ## [1.0.9] - 2022-03-20 21 | 22 | ### Features 23 | 24 | * New API - locate Snowflake PDA for user [https://github.com/snowflake-so/snowflake-sdk/pull/4] 25 | * Enable cron support for weekday [https://github.com/snowflake-so/snowflake-sdk/pull/3] 26 | * New API - deposit to user fee's account [https://github.com/snowflake-so/snowflake-sdk/pull/5] 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Snowflake TypeScript SDK 2 | 3 | Snowflake SDK provides services and a set of APIs used for interacting with the automation infrastructure of Snowflake on Solana blockchain. Learn more about Snowflake here. 4 | 5 | ## Installation 6 | 7 | Install with npm 8 | 9 | ```bash 10 | npm i @snowflake-so/snowflake-sdk 11 | ``` 12 | 13 | Install with yarn 14 | 15 | ```bash 16 | yarn add @snowflake-so/snowflake-sdk 17 | ``` 18 | 19 | ## Quick start guide 20 | 21 | ### Initialize Snowflake 22 | 23 | To create a new Snowflake service, we would need to initialize with the Provider. 24 | 25 | 26 | ```typescript 27 | // if your Anchor version is older than 0.24.2, 28 | // please use Snowflake SDK version 1.0.11 and initialize the provider as below 29 | let provider: Provider = Provider.local(API_URL); 30 | 31 | // if your Anchor version is 0.24.2 or later, 32 | // please use the latest version of Snowflake SDK and initialize the provider as below 33 | let provider: Provider = AnchorProvider.local(API_URL); 34 | ``` 35 | 36 | The `API_URL` is the endpoint to the Solana cluster. Empty API_URL is pointed to the `local testnet` 37 | 38 | - Mainnet Beta: `https://api.mainnet-beta.solana.com` 39 | - Testnet: `https://api.testnet.solana.com` 40 | - Devnet: `https://api.devnet.solana.com` 41 | 42 | ```typescript 43 | let snowflake: Snowflake = new Snowflake(provider); 44 | ``` 45 | 46 | ### Build an once-off scheduled job 47 | 48 | With Snowflake SDK, you can create a job with two line of code. 49 | 50 | ```typescript 51 | const job = new JobBuilder() 52 | .jobName("hello world") 53 | .jobInstructions(instructions) 54 | .scheduleOnce(tomorrow()) 55 | .build(); 56 | 57 | await snowflake.createJob(job); 58 | ``` 59 | 60 | ### Build a recurring scheduled job 61 | 62 | Schedule a job that runs every minute for 10 times. 63 | 64 | ```typescript 65 | const job = new JobBuilder() 66 | .jobName("hello world") 67 | .jobInstructions(instructions) 68 | .scheduleCron("* * * * *", 10) 69 | .build(); 70 | 71 | await snowflake.createJob(job); 72 | ``` 73 | 74 | Schedule a job that runs at 10:00 AM on the first day of every month . 75 | 76 | ```typescript 77 | const job = new JobBuilder() 78 | .jobName("hello world") 79 | .jobInstructions(instructions) 80 | .scheduleCron("0 10 1 * *") 81 | .build(); 82 | 83 | await snowflake.createJob(job); 84 | ``` 85 | 86 | ### Build a program condition triggered job 87 | 88 | Schedule a job that is triggered based on an arbitrary condition defined within the user program. 89 | 90 | ```typescript 91 | const job = new JobBuilder() 92 | .jobName("hello world") 93 | .jobInstructions(instructions) 94 | .scheduleConditional(1) 95 | .build(); 96 | 97 | await snowflake.createJob(job); 98 | ``` 99 | 100 | ### Build a self-funded job 101 | 102 | Self-funded job will take an account to pay fees on its own by using the initial fund. Fee account is no longer used for paying the job's fee. 103 | 104 | ```typescript 105 | const job = new JobBuilder() 106 | .jobName("hello world") 107 | .jobInstruction(instructions) 108 | .scheduleConditional(1); 109 | .selfFunded(true) 110 | .initialFund(100000) // 1000000 lamports 111 | .build() 112 | 113 | await snowflake.createJob(job) 114 | ``` 115 | 116 | ### Update a job 117 | 118 | ```typescript 119 | await snowflake.updateJob(jobPubkey); 120 | ``` 121 | 122 | ### Delete a job 123 | 124 | ```typescript 125 | await snowflake.deleteJob(jobPubkey); 126 | ``` 127 | 128 | ### Fetch Job by public key 129 | 130 | ```typescript 131 | await snowflake.fetch(jobPubkey); 132 | ``` 133 | 134 | ### Fetch Job by owner 135 | 136 | ```typescript 137 | await snowflake.fetchByOwner(owner); 138 | ``` 139 | 140 | ### Get Snowflake PDA 141 | 142 | ```typescript 143 | await snowflake.getSnowflakePDAForUser(userPublicKey); 144 | ``` 145 | 146 | ### Deposit fee account 147 | 148 | ```typescript 149 | await snowflake.depositFeeAccount(lamports); 150 | ``` 151 | 152 | ## Usage 153 | 154 | ```typescript 155 | import { JobBuilder, Snowflake } from "@snowflake-so/snowflake-sdk"; 156 | import { Provider } from "@project-serum/anchor"; 157 | 158 | /** Initialize a Snowflake service on Devnet **/ 159 | const API_URL: string = "https://api.devnet.solana.com"; 160 | const provider: Provider = new Provider(API_URL); 161 | const snowflake: Snowflake = new Snowflake(); 162 | 163 | async function main() { 164 | /** Create a sample instruction **/ 165 | const instructions = [ 166 | { 167 | programId: new PublicKey("ETwBdF9X2eABzmKmpT3ZFYyUtmve7UWWgzbERAyd4gAC"), 168 | data: Buffer.from("74b89fceb3e0b22a", "hex"), 169 | keys: [ 170 | { 171 | pubkey: new PublicKey("5jo4Lh2Z9FGQ87sDhUBwZjNZdL15MwdeT5WUXKfwFSZY"), 172 | isSigner: false, 173 | isWritable: false, 174 | }, 175 | ], 176 | }, 177 | ]; 178 | 179 | /** Create a new once-off scheduled job **/ 180 | const onceOffJob = new JobBuilder() 181 | .jobName("once-off job") 182 | .jobInstructions(instructions) 183 | .scheduleOnce(1646034062) 184 | // Timestamp: Monday, 28-Feb-22 07:41:02 UTC 185 | .build(); 186 | 187 | const onceOffJobTxID = await snowflake.createJob(onceOffJob); 188 | console.log("Create a recurring job with txId: " + onceOffJobTxID); 189 | 190 | /** Create a new recurring scheduled job **/ 191 | const recurringJob = new JobBuilder() 192 | .jobName("recurring job") 193 | .jobInstruction(instructions) 194 | .scheduleCron("* * * * *") 195 | // Every minute 196 | .build(); 197 | 198 | const recurringJobTxID = await snowflake.createJob(recurringJob); 199 | console.log("Create a recurring job with txId: " + recurringJobTxID); 200 | 201 | /** Fetch an once-off job **/ 202 | const fetchedOnceOffJob = await snowflake.fetch(onceOffJob.pubkey); 203 | 204 | // Build from an existing job 205 | const updatedJob = new JobBuilder() 206 | .fromExistingJob(fetchedOnceOffJob) 207 | .jobName("hello world 2") 208 | .scheduleCron("0 * * * *", 2) 209 | .build(); 210 | 211 | /** Update a job **/ 212 | await snowflake.updateJob(updatedJob); 213 | 214 | /** Delete a job **/ 215 | await snowflake.deleteJob(job.pubKey); 216 | 217 | /** Get Snowflake PDA for user **/ 218 | const walletAddress: PublicKey = provider.wallet.publicKey; 219 | await snowflake.getSnowflakePDAforUser(walletAddress); 220 | 221 | /** Deposit to fee account (5000000 lamports) **/ 222 | await snowflake.depositFeeAccount(5000000); 223 | } 224 | ``` 225 | 226 | ## Support 227 | 228 | **Struggle with the SDK integration?** 229 | 230 | If you have any problem with using the SDK in your system, drop a question our Snowflake Discord `#sdk` to receive a support from our engineers. 231 | 232 | **Find a bug? Find a new idea for Snowflake?** 233 | 234 | If you find a bug or have any problem and idea while using the SDK, you can create an issue on Snowflake SDK Github. 235 | 236 | ## License 237 | 238 | MIT 239 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | roots: ["/src", "/test"], 3 | testMatch: [ 4 | "**/__tests__/**/*.+(ts|tsx|js)", 5 | "**/?(*.)+(spec|test).+(ts|tsx|js)", 6 | ], 7 | transform: { 8 | "^.+\\.(ts|tsx)$": "ts-jest", 9 | }, 10 | setupFiles: ["./test-env"], 11 | }; 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@snowflake-so/snowflake-sdk", 3 | "description": "Typescript SDK for Snowflake automation protocol", 4 | "version": "1.0.12", 5 | "main": "dist/index.js", 6 | "types": "dist/index.d.ts", 7 | "scripts": { 8 | "build": "tsc -p src", 9 | "watch": "tsc -w -p src", 10 | "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' --write", 11 | "prepublish": "tsc -p src", 12 | "test": "jest" 13 | }, 14 | "dependencies": { 15 | "@project-serum/anchor": "^0.24.2", 16 | "@solana/web3.js": "^1.41.4", 17 | "lodash": "^4.17.21" 18 | }, 19 | "devDependencies": { 20 | "@types/bn.js": "^5.1.0", 21 | "@types/jest": "^27.4.0", 22 | "@types/mocha": "^9.1.0", 23 | "buffer-layout": "^1.2.2", 24 | "dotenv": "^16.0.0", 25 | "jest": "^27.5.1", 26 | "ts-jest": "^27.1.3", 27 | "ts-node": "^10.5.0", 28 | "typescript": "^4.5.5" 29 | }, 30 | "files": [ 31 | "/dist" 32 | ], 33 | "repository": { 34 | "type": "git", 35 | "url": "https://github.com/snowflake-so/" 36 | }, 37 | "keywords": [ 38 | "solana", 39 | "automation", 40 | "sdk", 41 | "cron" 42 | ], 43 | "author": "team@snowflake.so", 44 | "license": "MIT" 45 | } 46 | -------------------------------------------------------------------------------- /package.json.prod: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@project-serum/anchor": "^0.17.0", 4 | "log4js": "^6.3.0", 5 | "node-cron": "^3.0.0" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/builder/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./instruction-builder"; 2 | export * from "./job-builder"; 3 | -------------------------------------------------------------------------------- /src/builder/instruction-builder.ts: -------------------------------------------------------------------------------- 1 | import { Keypair, PublicKey, SystemProgram } from "@solana/web3.js"; 2 | import { Program, AnchorProvider } from '@project-serum/anchor'; 3 | import { FeeSource, InstructionsAndSigners, Job } from "../model/job"; 4 | import { JOB_ACCOUNT_DEFAULT_SIZE } from "../config/job-config"; 5 | 6 | export class InstructionBuilder { 7 | program: Program; 8 | provider: AnchorProvider; 9 | constructor(program: Program, provider: AnchorProvider) { 10 | this.program = program; 11 | this.provider = provider; 12 | } 13 | 14 | buildCreateJobInstruction( 15 | job: Job, 16 | accountSize: number 17 | ): InstructionsAndSigners { 18 | const serializableJob = job.toSerializableJob(); 19 | let newFlowKeyPair = Keypair.generate(); 20 | 21 | let createContext: any = { 22 | accounts: { 23 | flow: newFlowKeyPair.publicKey, 24 | owner: this.provider.wallet.publicKey, 25 | systemProgram: SystemProgram.programId, 26 | }, 27 | }; 28 | 29 | const createIx = this.program.instruction.createFlow( 30 | accountSize, 31 | serializableJob, 32 | createContext 33 | ); 34 | 35 | let instructions = [createIx]; 36 | let signers = [newFlowKeyPair]; 37 | 38 | let fundFlowTx; 39 | if (job.payFeeFrom == FeeSource.FromFlow) { 40 | const walletPubkey = this.provider.wallet.publicKey; 41 | fundFlowTx = this.buildSystemTransferInstruction( 42 | walletPubkey, 43 | newFlowKeyPair.publicKey, 44 | job.initialFund 45 | ); 46 | } 47 | 48 | if (fundFlowTx) { 49 | instructions.push(...fundFlowTx.instructions); 50 | signers.push(...fundFlowTx.signers); 51 | } 52 | return { instructions: instructions, signers: signers }; 53 | } 54 | 55 | buildUpdateJobInstruction(job: Job) { 56 | const serializableJob = job.toSerializableJob(); 57 | let updateContext: any = { 58 | accounts: { 59 | flow: job.pubKey, 60 | owner: this.provider.wallet.publicKey, 61 | }, 62 | signers: [], 63 | }; 64 | 65 | const updateIx = this.program.instruction.updateFlow( 66 | serializableJob, 67 | updateContext 68 | ); 69 | return { instructions: [updateIx], signers: [] }; 70 | } 71 | 72 | buildDeleteJobInstruction(jobPubKey: PublicKey) { 73 | let deleteContext: any = { 74 | accounts: { 75 | flow: jobPubKey, 76 | owner: this.provider.wallet.publicKey, 77 | }, 78 | signers: [], 79 | }; 80 | 81 | const deleteIx = this.program.instruction.deleteFlow(deleteContext); 82 | return { instructions: [deleteIx], signers: [] }; 83 | } 84 | 85 | buildSystemTransferInstruction( 86 | from: PublicKey, 87 | to: PublicKey, 88 | amount: number 89 | ) { 90 | let depositTx = SystemProgram.transfer({ 91 | fromPubkey: from, 92 | toPubkey: to, 93 | lamports: amount, 94 | }); 95 | 96 | return { instructions: [depositTx], signers: [] }; 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /src/builder/job-builder.ts: -------------------------------------------------------------------------------- 1 | import { PublicKey, TransactionInstruction } from "@solana/web3.js"; 2 | import { FeeSource, Job, TriggerType, UnixTimeStamp } from "../model/job"; 3 | import { RECURRING_FOREVER } from "../config"; 4 | import { ErrorMessage } from "../config/error"; 5 | 6 | export class JobBuilder { 7 | private job: Job = new Job(); 8 | 9 | constructor() {} 10 | 11 | fromExistingJob(job: Job): JobBuilder { 12 | this.job = job; 13 | return this; 14 | } 15 | 16 | jobName(name: string): JobBuilder { 17 | this.job.name = name; 18 | return this; 19 | } 20 | 21 | jobInstructions(instructions: TransactionInstruction[]): JobBuilder { 22 | this.job.instructions = instructions; 23 | return this; 24 | } 25 | 26 | scheduleOnce(executionTime: UnixTimeStamp): JobBuilder { 27 | this.job.triggerType = TriggerType.Time; 28 | this.job.recurring = false; 29 | this.job.nextExecutionTime = executionTime; 30 | return this; 31 | } 32 | 33 | scheduleCron( 34 | cron: string, 35 | numberOfExecutions?: number, 36 | userTimezoneOffset?: UnixTimeStamp 37 | ): JobBuilder { 38 | this.job.triggerType = TriggerType.Time; 39 | this.job.recurring = true; 40 | this.job.cron = cron; 41 | this.job.remainingRuns = 42 | numberOfExecutions === undefined ? RECURRING_FOREVER : numberOfExecutions; 43 | 44 | this.job.userUtcOffset = 45 | userTimezoneOffset === undefined 46 | ? new Date().getTimezoneOffset() * 60 47 | : userTimezoneOffset; 48 | return this; 49 | } 50 | 51 | scheduleConditional(numberOfExecutions: number): JobBuilder { 52 | this.job.triggerType = TriggerType.ProgramCondition; 53 | this.job.remainingRuns = numberOfExecutions; 54 | return this; 55 | } 56 | 57 | selfFunded(isSelfFunded: boolean): JobBuilder { 58 | this.job.payFeeFrom = isSelfFunded 59 | ? FeeSource.FromFlow 60 | : FeeSource.FromFeeAccount; 61 | return this; 62 | } 63 | 64 | initialFund(amount: number): JobBuilder { 65 | if (this.job.payFeeFrom !== FeeSource.FromFlow) { 66 | throw new Error(ErrorMessage.JobNotBuiltAsSelfFunded); 67 | } 68 | this.job.initialFund = amount; 69 | return this; 70 | } 71 | 72 | byAppId(appId: PublicKey): JobBuilder { 73 | this.job.appId = appId; 74 | return this; 75 | } 76 | 77 | build() { 78 | return this.job; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/config/error.ts: -------------------------------------------------------------------------------- 1 | export enum ErrorMessage { 2 | CreateJobWithExistingPubkey = "Can't create new job with an existing pubkey. Remove pubKey attribute and try again.", 3 | UpdateJobWithoutExistingPubkey = "Can't update job without an existing pubkey.", 4 | CreateJobWithWeekdayCron = "Can't create job with weekday cron.", 5 | UpdateJobWithWeekdayCron = "Can't update job with weekday cron.", 6 | InvalidCron = "Invalid cron.", 7 | JobNotBuiltAsSelfFunded = "Job is not built as self-funded.", 8 | } 9 | -------------------------------------------------------------------------------- /src/config/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./job-config"; 2 | export * from "./job-constants"; 3 | export * from "./program-id"; 4 | -------------------------------------------------------------------------------- /src/config/job-config.ts: -------------------------------------------------------------------------------- 1 | export const RETRY_WINDOW = 900; 2 | export const JOB_ACCOUNT_DEFAULT_SIZE = 1800; 3 | -------------------------------------------------------------------------------- /src/config/job-constants.ts: -------------------------------------------------------------------------------- 1 | import { PublicKey } from "@solana/web3.js"; 2 | 3 | export const CUSTOM_ACTION_CODE = 100; 4 | export const RECURRING_FOREVER = -999; 5 | export const DEFAULT_DEVELOPER_APP_ID = new PublicKey( 6 | "11111111111111111111111111111111" 7 | ); 8 | -------------------------------------------------------------------------------- /src/config/program-id.ts: -------------------------------------------------------------------------------- 1 | export const SNOWFLAKE_PROGRAM_ID = 2 | "BiVwqu45yQTxqTTTAD1UrMZNyZ3qsEVqKwTEfG9BvUs6"; 3 | -------------------------------------------------------------------------------- /src/idl/index.ts: -------------------------------------------------------------------------------- 1 | import programIdl from "../idl/snowflake.json"; 2 | 3 | export const SNOWFLAKE_IDL = programIdl; 4 | -------------------------------------------------------------------------------- /src/idl/snowflake.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "name": "snowflake", 4 | "instructions": [ 5 | { 6 | "name": "createFlow", 7 | "accounts": [ 8 | { 9 | "name": "flow", 10 | "isMut": true, 11 | "isSigner": true 12 | }, 13 | { 14 | "name": "owner", 15 | "isMut": true, 16 | "isSigner": true 17 | }, 18 | { 19 | "name": "systemProgram", 20 | "isMut": false, 21 | "isSigner": false 22 | } 23 | ], 24 | "args": [ 25 | { 26 | "name": "accountSize", 27 | "type": "u32" 28 | }, 29 | { 30 | "name": "clientFlow", 31 | "type": { 32 | "defined": "Flow" 33 | } 34 | } 35 | ] 36 | }, 37 | { 38 | "name": "updateFlow", 39 | "accounts": [ 40 | { 41 | "name": "flow", 42 | "isMut": true, 43 | "isSigner": false 44 | }, 45 | { 46 | "name": "owner", 47 | "isMut": false, 48 | "isSigner": true 49 | } 50 | ], 51 | "args": [ 52 | { 53 | "name": "clientFlow", 54 | "type": { 55 | "defined": "Flow" 56 | } 57 | } 58 | ] 59 | }, 60 | { 61 | "name": "deleteFlow", 62 | "accounts": [ 63 | { 64 | "name": "flow", 65 | "isMut": true, 66 | "isSigner": false 67 | }, 68 | { 69 | "name": "owner", 70 | "isMut": false, 71 | "isSigner": true 72 | } 73 | ], 74 | "args": [] 75 | }, 76 | { 77 | "name": "executeFlow", 78 | "accounts": [ 79 | { 80 | "name": "flow", 81 | "isMut": true, 82 | "isSigner": false 83 | }, 84 | { 85 | "name": "pda", 86 | "isMut": true, 87 | "isSigner": false 88 | }, 89 | { 90 | "name": "caller", 91 | "isMut": false, 92 | "isSigner": true 93 | }, 94 | { 95 | "name": "systemProgram", 96 | "isMut": false, 97 | "isSigner": false 98 | }, 99 | { 100 | "name": "programSettings", 101 | "isMut": false, 102 | "isSigner": false 103 | } 104 | ], 105 | "args": [] 106 | }, 107 | { 108 | "name": "executeScheduledFlow", 109 | "accounts": [ 110 | { 111 | "name": "flow", 112 | "isMut": true, 113 | "isSigner": false 114 | }, 115 | { 116 | "name": "pda", 117 | "isMut": true, 118 | "isSigner": false 119 | }, 120 | { 121 | "name": "caller", 122 | "isMut": false, 123 | "isSigner": true 124 | }, 125 | { 126 | "name": "systemProgram", 127 | "isMut": false, 128 | "isSigner": false 129 | }, 130 | { 131 | "name": "programSettings", 132 | "isMut": false, 133 | "isSigner": false 134 | } 135 | ], 136 | "args": [] 137 | }, 138 | { 139 | "name": "markTimedFlowAsError", 140 | "accounts": [ 141 | { 142 | "name": "flow", 143 | "isMut": true, 144 | "isSigner": false 145 | }, 146 | { 147 | "name": "pda", 148 | "isMut": true, 149 | "isSigner": false 150 | }, 151 | { 152 | "name": "caller", 153 | "isMut": false, 154 | "isSigner": true 155 | }, 156 | { 157 | "name": "systemProgram", 158 | "isMut": false, 159 | "isSigner": false 160 | }, 161 | { 162 | "name": "programSettings", 163 | "isMut": false, 164 | "isSigner": false 165 | } 166 | ], 167 | "args": [] 168 | }, 169 | { 170 | "name": "withdrawNative", 171 | "accounts": [ 172 | { 173 | "name": "caller", 174 | "isMut": false, 175 | "isSigner": true 176 | }, 177 | { 178 | "name": "appId", 179 | "isMut": false, 180 | "isSigner": false 181 | }, 182 | { 183 | "name": "pda", 184 | "isMut": true, 185 | "isSigner": false 186 | }, 187 | { 188 | "name": "systemProgram", 189 | "isMut": false, 190 | "isSigner": false 191 | } 192 | ], 193 | "args": [ 194 | { 195 | "name": "amount", 196 | "type": "u64" 197 | } 198 | ] 199 | }, 200 | { 201 | "name": "withdraw", 202 | "accounts": [ 203 | { 204 | "name": "caller", 205 | "isMut": false, 206 | "isSigner": true 207 | }, 208 | { 209 | "name": "appId", 210 | "isMut": false, 211 | "isSigner": false 212 | }, 213 | { 214 | "name": "pda", 215 | "isMut": false, 216 | "isSigner": false 217 | }, 218 | { 219 | "name": "destinationAta", 220 | "isMut": true, 221 | "isSigner": false 222 | }, 223 | { 224 | "name": "sourceAta", 225 | "isMut": true, 226 | "isSigner": false 227 | }, 228 | { 229 | "name": "tokenProgram", 230 | "isMut": false, 231 | "isSigner": false 232 | } 233 | ], 234 | "args": [ 235 | { 236 | "name": "amount", 237 | "type": "u64" 238 | } 239 | ] 240 | }, 241 | { 242 | "name": "initProgramSettings", 243 | "accounts": [ 244 | { 245 | "name": "programSettings", 246 | "isMut": true, 247 | "isSigner": true 248 | }, 249 | { 250 | "name": "snfFoundation", 251 | "isMut": true, 252 | "isSigner": true 253 | }, 254 | { 255 | "name": "systemProgram", 256 | "isMut": false, 257 | "isSigner": false 258 | } 259 | ], 260 | "args": [] 261 | }, 262 | { 263 | "name": "registerOperator", 264 | "accounts": [ 265 | { 266 | "name": "programSettings", 267 | "isMut": true, 268 | "isSigner": false 269 | }, 270 | { 271 | "name": "snfFoundation", 272 | "isMut": false, 273 | "isSigner": true 274 | }, 275 | { 276 | "name": "operator", 277 | "isMut": false, 278 | "isSigner": false 279 | } 280 | ], 281 | "args": [] 282 | } 283 | ], 284 | "accounts": [ 285 | { 286 | "name": "Flow", 287 | "type": { 288 | "kind": "struct", 289 | "fields": [ 290 | { 291 | "name": "owner", 292 | "type": "publicKey" 293 | }, 294 | { 295 | "name": "lastUpdatedDate", 296 | "type": "i64" 297 | }, 298 | { 299 | "name": "createdDate", 300 | "type": "i64" 301 | }, 302 | { 303 | "name": "triggerType", 304 | "type": "u8" 305 | }, 306 | { 307 | "name": "nextExecutionTime", 308 | "type": "i64" 309 | }, 310 | { 311 | "name": "retryWindow", 312 | "type": "u32" 313 | }, 314 | { 315 | "name": "recurring", 316 | "type": "bool" 317 | }, 318 | { 319 | "name": "remainingRuns", 320 | "type": "i16" 321 | }, 322 | { 323 | "name": "scheduleEndDate", 324 | "type": "i64" 325 | }, 326 | { 327 | "name": "clientAppId", 328 | "type": "u32" 329 | }, 330 | { 331 | "name": "lastRentCharged", 332 | "type": "i64" 333 | }, 334 | { 335 | "name": "lastScheduledExecution", 336 | "type": "i64" 337 | }, 338 | { 339 | "name": "expiryDate", 340 | "type": "i64" 341 | }, 342 | { 343 | "name": "expireOnComplete", 344 | "type": "bool" 345 | }, 346 | { 347 | "name": "appId", 348 | "type": "publicKey" 349 | }, 350 | { 351 | "name": "payFeeFrom", 352 | "type": "u8" 353 | }, 354 | { 355 | "name": "userUtcOffset", 356 | "type": "i32" 357 | }, 358 | { 359 | "name": "customComputeBudget", 360 | "type": "u32" 361 | }, 362 | { 363 | "name": "customFee", 364 | "type": "u32" 365 | }, 366 | { 367 | "name": "customField1", 368 | "type": "i32" 369 | }, 370 | { 371 | "name": "customField2", 372 | "type": "i32" 373 | }, 374 | { 375 | "name": "externalId", 376 | "type": "string" 377 | }, 378 | { 379 | "name": "cron", 380 | "type": "string" 381 | }, 382 | { 383 | "name": "name", 384 | "type": "string" 385 | }, 386 | { 387 | "name": "extra", 388 | "type": "string" 389 | }, 390 | { 391 | "name": "actions", 392 | "type": { 393 | "vec": { 394 | "defined": "Action" 395 | } 396 | } 397 | } 398 | ] 399 | } 400 | }, 401 | { 402 | "name": "ProgramSettings", 403 | "type": { 404 | "kind": "struct", 405 | "fields": [ 406 | { 407 | "name": "snfFoundation", 408 | "type": "publicKey" 409 | }, 410 | { 411 | "name": "operators", 412 | "type": { 413 | "vec": "publicKey" 414 | } 415 | }, 416 | { 417 | "name": "operatorToCheckIndex", 418 | "type": "i32" 419 | }, 420 | { 421 | "name": "lastCheckTime", 422 | "type": "i64" 423 | } 424 | ] 425 | } 426 | } 427 | ], 428 | "types": [ 429 | { 430 | "name": "Action", 431 | "type": { 432 | "kind": "struct", 433 | "fields": [ 434 | { 435 | "name": "name", 436 | "type": "string" 437 | }, 438 | { 439 | "name": "actionCode", 440 | "type": "u32" 441 | }, 442 | { 443 | "name": "instruction", 444 | "type": "bytes" 445 | }, 446 | { 447 | "name": "program", 448 | "type": "publicKey" 449 | }, 450 | { 451 | "name": "accounts", 452 | "type": { 453 | "vec": { 454 | "defined": "TargetAccountSpec" 455 | } 456 | } 457 | }, 458 | { 459 | "name": "extra", 460 | "type": "string" 461 | } 462 | ] 463 | } 464 | }, 465 | { 466 | "name": "TargetAccountSpec", 467 | "type": { 468 | "kind": "struct", 469 | "fields": [ 470 | { 471 | "name": "pubkey", 472 | "type": "publicKey" 473 | }, 474 | { 475 | "name": "isSigner", 476 | "type": "bool" 477 | }, 478 | { 479 | "name": "isWritable", 480 | "type": "bool" 481 | } 482 | ] 483 | } 484 | }, 485 | { 486 | "name": "ErrorCode", 487 | "type": { 488 | "kind": "enum", 489 | "variants": [ 490 | { 491 | "name": "InvalidJobData" 492 | }, 493 | { 494 | "name": "JobIsNotAssignedToOperator" 495 | }, 496 | { 497 | "name": "JobIsNotDueForExecution" 498 | }, 499 | { 500 | "name": "CannotMarkJobAsErrorIfItsWithinSchedule" 501 | }, 502 | { 503 | "name": "OperatorIsAlreadyRegistered" 504 | }, 505 | { 506 | "name": "ExecuteNowCanOnlyBePerformedByFlowOwner" 507 | }, 508 | { 509 | "name": "UserInstructionMustNotReferenceTheNodeOperator" 510 | } 511 | ] 512 | } 513 | }, 514 | { 515 | "name": "TriggerType", 516 | "type": { 517 | "kind": "enum", 518 | "variants": [ 519 | { 520 | "name": "None" 521 | }, 522 | { 523 | "name": "Time" 524 | }, 525 | { 526 | "name": "Program" 527 | } 528 | ] 529 | } 530 | }, 531 | { 532 | "name": "FeeSource", 533 | "type": { 534 | "kind": "enum", 535 | "variants": [ 536 | { 537 | "name": "FromFeeAccount" 538 | }, 539 | { 540 | "name": "FromFlow" 541 | } 542 | ] 543 | } 544 | } 545 | ], 546 | "metadata": { 547 | "address": "BiVwqu45yQTxqTTTAD1UrMZNyZ3qsEVqKwTEfG9BvUs6" 548 | } 549 | } -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./service"; 2 | export * from "./model"; 3 | export * from "./builder"; 4 | export * from "./config"; 5 | export * from "./idl"; 6 | -------------------------------------------------------------------------------- /src/model/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./job"; 2 | export * from "./job-layout"; 3 | -------------------------------------------------------------------------------- /src/model/job-layout.ts: -------------------------------------------------------------------------------- 1 | // @ts-ignore 2 | import BufferLayout from "buffer-layout"; 3 | 4 | export const JOB_ACCOUNT_LAYOUT = BufferLayout.struct([ 5 | BufferLayout.blob(8, "discriminator"), 6 | BufferLayout.blob(32, "owner"), 7 | BufferLayout.blob(8, "lastUpdatedDate"), 8 | BufferLayout.blob(8, "createdDate"), 9 | BufferLayout.blob(1, "triggerType"), 10 | BufferLayout.blob(8, "nextExecutionTime"), 11 | BufferLayout.blob(4, "retryWindow"), 12 | BufferLayout.blob(1, "recurring"), 13 | BufferLayout.blob(2, "remainingRuns"), 14 | BufferLayout.blob(8, "scheduleEndDate"), 15 | BufferLayout.blob(4, "clientAppId"), 16 | BufferLayout.blob(8, "lastRentCharged"), 17 | BufferLayout.blob(8, "lastScheduledExecution"), 18 | BufferLayout.blob(8, "expiryDate"), 19 | BufferLayout.blob(1, "expireOnComplete"), 20 | BufferLayout.blob(32, "appId"), 21 | BufferLayout.blob(1, "payFeeFrom"), 22 | BufferLayout.blob(4, "userUtcOffset"), 23 | BufferLayout.blob(4, "customComputeBudget"), 24 | BufferLayout.blob(4, "customFee"), 25 | BufferLayout.blob(4, "customField1"), 26 | BufferLayout.blob(4, "customField2"), 27 | ]); 28 | -------------------------------------------------------------------------------- /src/model/job.ts: -------------------------------------------------------------------------------- 1 | import { BN } from "@project-serum/anchor"; 2 | import { 3 | AccountMeta, 4 | PublicKey, 5 | Signer, 6 | TransactionInstruction, 7 | } from "@solana/web3.js"; 8 | import { Buffer } from "buffer"; 9 | import _ from "lodash"; 10 | import { RETRY_WINDOW } from "../config/job-config"; 11 | import { ErrorMessage } from "../config/error"; 12 | import { CUSTOM_ACTION_CODE, DEFAULT_DEVELOPER_APP_ID } from "../config";; 13 | 14 | export type UnixTimeStamp = number; 15 | export type UTCOffset = number; 16 | 17 | export enum FeeSource { 18 | FromFeeAccount = 0, 19 | FromFlow = 1, 20 | } 21 | 22 | export enum TriggerType { 23 | None = 1, 24 | Time = 2, 25 | ProgramCondition = 3, 26 | } 27 | 28 | const NON_BN_FIELDS = [ 29 | "remainingRuns", 30 | "triggerType", 31 | "retryWindow", 32 | "clientAppId", 33 | "userUtcOffset", 34 | "payFeeFrom", 35 | ]; 36 | 37 | export class Job { 38 | pubKey: PublicKey; 39 | owner: PublicKey; 40 | nextExecutionTime: UnixTimeStamp = 0; 41 | recurring: boolean = false; 42 | retryWindow: number = RETRY_WINDOW; 43 | remainingRuns: number = 0; 44 | dedicatedOperator: PublicKey; 45 | clientAppId: number = 0; 46 | expiryDate: UnixTimeStamp = 0; 47 | expireOnComplete: boolean = false; 48 | scheduleEndDate: UnixTimeStamp = 0; 49 | userUtcOffset: UTCOffset = new Date().getTimezoneOffset() * 60; 50 | lastScheduledExecution: UnixTimeStamp = 0; 51 | createdDate: UnixTimeStamp = 0; 52 | lastRentCharged: UnixTimeStamp = 0; 53 | lastUpdatedDate: UnixTimeStamp = 0; 54 | externalId: String = ""; 55 | cron: string = ""; 56 | name: string = "job - " + new Date().toLocaleDateString(); 57 | extra: String = ""; 58 | triggerType: TriggerType = TriggerType.None; 59 | payFeeFrom: FeeSource = FeeSource.FromFeeAccount; 60 | initialFund: number = 0; 61 | appId: PublicKey = DEFAULT_DEVELOPER_APP_ID; 62 | instructions: TransactionInstruction[] = []; 63 | 64 | isBNType(property: string): boolean { 65 | return ( 66 | typeof (this as any)[property] === "number" && 67 | NON_BN_FIELDS.indexOf(property) < 0 68 | ); 69 | } 70 | 71 | toSerializableJob(): SerializableJob { 72 | const serJob = _.cloneDeepWith( 73 | this, 74 | function customizer(value, key: any, obj: any): any { 75 | if (!key) return; 76 | if (obj.isBNType(key)) return new BN(obj[key]); 77 | if (obj[key] instanceof PublicKey) return obj[key]; 78 | if (key === "instructions") return []; 79 | } 80 | ); 81 | serJob.actions = []; 82 | for (let instruction of this.instructions) { 83 | const serAction = SerializableAction.fromInstruction(instruction); 84 | serJob.actions.push(serAction); 85 | } 86 | delete serJob.instructions; 87 | delete serJob.jobId; 88 | return serJob; 89 | } 90 | 91 | validateForCreate() { 92 | if (this.pubKey) throw new Error(ErrorMessage.CreateJobWithExistingPubkey); 93 | } 94 | 95 | validateForUpdate() { 96 | if (!this.pubKey) 97 | throw new Error(ErrorMessage.UpdateJobWithoutExistingPubkey); 98 | } 99 | 100 | static fromJobJson(jobJson: any): Job { 101 | const job: Job = new Job(); 102 | Object.assign(job, jobJson); 103 | return job; 104 | } 105 | 106 | static fromSerializableJob( 107 | serJob: SerializableJob, 108 | jobPubKey: PublicKey 109 | ): Job { 110 | const template = new Job(); 111 | const job: Job = _.cloneDeepWith( 112 | serJob, 113 | function customizer(value, key: any, obj: any): any { 114 | if (!key) return; 115 | if (template.isBNType(key)) { 116 | return (obj[key] as BN).toNumber(); 117 | } 118 | if (obj[key] instanceof PublicKey) return obj[key]; 119 | if (key === "actions") return []; 120 | } 121 | ); 122 | job.instructions = []; 123 | for (let action of serJob.actions) { 124 | const instruction = SerializableAction.toInstruction(action); 125 | job.instructions.push(instruction); 126 | } 127 | delete (job as any).actions; 128 | job.pubKey = jobPubKey; 129 | 130 | return Job.fromJobJson(job); 131 | } 132 | } 133 | 134 | export type SerializableJob = any; 135 | 136 | export class SerializableAction { 137 | program: PublicKey; 138 | instruction: Buffer; 139 | accounts: Array = []; 140 | actionCode: number; 141 | name: string; 142 | extra: string; 143 | 144 | static fromInstruction( 145 | instruction: TransactionInstruction 146 | ): SerializableAction { 147 | const serAction = new SerializableAction(); 148 | serAction.program = instruction.programId; 149 | serAction.accounts = instruction.keys; 150 | serAction.instruction = instruction.data; 151 | const openInstruction = instruction as any; 152 | serAction.actionCode = openInstruction.code 153 | ? openInstruction.code 154 | : CUSTOM_ACTION_CODE; 155 | serAction.name = openInstruction.name ? openInstruction.name : ""; 156 | serAction.extra = openInstruction.extra ? openInstruction.extra : ""; 157 | return serAction; 158 | } 159 | 160 | static toInstruction(serAction: SerializableAction): TransactionInstruction { 161 | const instruction: TransactionInstruction = { 162 | data: serAction.instruction, 163 | keys: serAction.accounts, 164 | programId: serAction.program, 165 | }; 166 | return instruction; 167 | } 168 | } 169 | 170 | export type InstructionsAndSigners = { 171 | instructions: TransactionInstruction[]; 172 | signers: Signer[]; 173 | }; 174 | -------------------------------------------------------------------------------- /src/service/finder.ts: -------------------------------------------------------------------------------- 1 | import { BN, Program, ProgramAccount } from "@project-serum/anchor"; 2 | import { bs58 } from "@project-serum/anchor/dist/cjs/utils/bytes"; 3 | import { GetProgramAccountsFilter, PublicKey } from "@solana/web3.js"; 4 | import { Job, SerializableJob } from "../model/job"; 5 | import { JOB_ACCOUNT_LAYOUT } from "../model/job-layout"; 6 | 7 | export default class Finder { 8 | program: Program; 9 | constructor(program: Program) { 10 | this.program = program; 11 | } 12 | 13 | async findByJobPubKey(jobPubKey: PublicKey): Promise { 14 | let serJob: SerializableJob = await this.program.account.flow.fetch( 15 | jobPubKey 16 | ); 17 | console.log("SerJob", serJob); 18 | return Job.fromSerializableJob(serJob, jobPubKey); 19 | } 20 | 21 | async findByJobOwner(owner: PublicKey): Promise { 22 | let ownerFilter = this.getOwnerFilter(owner); 23 | let serJobs: ProgramAccount[] = 24 | await this.program.account.flow.all([ownerFilter]); 25 | console.log("SerJob", serJobs); 26 | return serJobs.map((v) => Job.fromSerializableJob(v.account, v.publicKey)); 27 | } 28 | 29 | async findByJobAppId(appId: PublicKey): Promise { 30 | let appIdFilter = this.getAppIdFilter(appId); 31 | let serJobs: ProgramAccount[] = 32 | await this.program.account.flow.all([appIdFilter]); 33 | return serJobs.map((v) => Job.fromSerializableJob(v.account, v.publicKey)); 34 | } 35 | 36 | async findByJobOwnerAndAppId( 37 | owner: PublicKey, 38 | appId: PublicKey 39 | ): Promise { 40 | let ownerFilter = this.getOwnerFilter(owner); 41 | let appIdFilter = this.getAppIdFilter(appId); 42 | let serJobs: ProgramAccount[] = 43 | await this.program.account.flow.all([appIdFilter, ownerFilter]); 44 | return serJobs.map((v) => Job.fromSerializableJob(v.account, v.publicKey)); 45 | } 46 | 47 | async findAll(): Promise { 48 | let serJobs: ProgramAccount[] = 49 | await this.program.account.flow.all([]); 50 | return serJobs.map((v) => Job.fromSerializableJob(v.account, v.publicKey)); 51 | } 52 | 53 | private getOwnerFilter(publicKey: PublicKey): GetProgramAccountsFilter { 54 | return { 55 | memcmp: { 56 | offset: JOB_ACCOUNT_LAYOUT.offsetOf("owner"), 57 | bytes: publicKey.toBase58(), 58 | }, 59 | }; 60 | } 61 | 62 | private getAppIdFilter(appId: PublicKey): GetProgramAccountsFilter { 63 | return { 64 | memcmp: { 65 | offset: JOB_ACCOUNT_LAYOUT.offsetOf("appId"), 66 | bytes: appId.toBase58(), 67 | }, 68 | }; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/service/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./snowflake"; 2 | -------------------------------------------------------------------------------- /src/service/snowflake.ts: -------------------------------------------------------------------------------- 1 | import { PublicKey, TransactionSignature } from "@solana/web3.js"; 2 | import { AnchorProvider, Idl, Program, Provider } from "@project-serum/anchor"; 3 | import { TransactionSender } from "./transaction-sender"; 4 | import Finder from "./finder"; 5 | import { InstructionBuilder } from "../builder/instruction-builder"; 6 | import { SNOWFLAKE_PROGRAM_ID } from "../config/program-id"; 7 | import { FeeSource, Job } from "../model/job"; 8 | import { SNOWFLAKE_IDL } from "../idl"; 9 | import { DEFAULT_DEVELOPER_APP_ID, JOB_ACCOUNT_DEFAULT_SIZE } from "../config"; 10 | 11 | export class Snowflake { 12 | program: Program; 13 | instructionBuilder: InstructionBuilder; 14 | transactionSender: TransactionSender; 15 | provider: AnchorProvider; 16 | finder: Finder; 17 | constructor(provider: AnchorProvider) { 18 | this.provider = provider; 19 | this.program = new Program( 20 | SNOWFLAKE_IDL as Idl, 21 | SNOWFLAKE_PROGRAM_ID, 22 | this.provider 23 | ); 24 | this.instructionBuilder = new InstructionBuilder(this.program, this.provider); 25 | this.transactionSender = new TransactionSender(this.provider); 26 | this.finder = new Finder(this.program); 27 | } 28 | 29 | async createJob( 30 | job: Job, 31 | accountSize: number = JOB_ACCOUNT_DEFAULT_SIZE 32 | ): Promise { 33 | job.validateForCreate(); 34 | 35 | const { instructions, signers } = 36 | this.instructionBuilder.buildCreateJobInstruction(job, accountSize); 37 | 38 | const tx = await this.transactionSender.sendWithWallet({ 39 | instructions, 40 | signers, 41 | }); 42 | 43 | job.pubKey = signers[0].publicKey; 44 | return tx; 45 | } 46 | 47 | async deleteJob(jobPubKey: PublicKey): Promise { 48 | const { instructions, signers } = 49 | this.instructionBuilder.buildDeleteJobInstruction(jobPubKey); 50 | const tx = await this.transactionSender.sendWithWallet({ 51 | instructions, 52 | signers, 53 | }); 54 | 55 | return tx; 56 | } 57 | 58 | async updateJob(job: Job): Promise { 59 | job.validateForUpdate(); 60 | const { instructions, signers } = 61 | this.instructionBuilder.buildUpdateJobInstruction(job); 62 | const tx = await this.transactionSender.sendWithWallet({ 63 | instructions, 64 | signers, 65 | }); 66 | 67 | return tx; 68 | } 69 | 70 | async fetch(jobPubKey: PublicKey): Promise { 71 | return await this.finder.findByJobPubKey(jobPubKey); 72 | } 73 | 74 | async findByOwner(owner: PublicKey): Promise { 75 | return await this.finder.findByJobOwner(owner); 76 | } 77 | 78 | async findByJobAppId(appId: PublicKey): Promise { 79 | return await this.finder.findByJobAppId(appId); 80 | } 81 | 82 | async findByOwnerAndAppId(owner: PublicKey, appId: PublicKey): Promise { 83 | return await this.finder.findByJobOwnerAndAppId(owner, appId); 84 | } 85 | 86 | async findGlobal(): Promise { 87 | return await this.finder.findAll(); 88 | } 89 | 90 | async getSnowflakePDAForUser( 91 | user: PublicKey, 92 | developerAppId: PublicKey = DEFAULT_DEVELOPER_APP_ID 93 | ): Promise { 94 | const [pda] = await PublicKey.findProgramAddress( 95 | [user.toBuffer(), developerAppId.toBuffer()], 96 | new PublicKey(SNOWFLAKE_PROGRAM_ID) 97 | ); 98 | return pda; 99 | } 100 | 101 | async depositFeeAccount( 102 | lamports: number, 103 | developerAppId: PublicKey = DEFAULT_DEVELOPER_APP_ID 104 | ): Promise { 105 | const walletPubkey = this.provider.wallet.publicKey; 106 | const pda = await this.getSnowflakePDAForUser(walletPubkey, developerAppId); 107 | const depositTx = this.instructionBuilder.buildSystemTransferInstruction( 108 | walletPubkey, 109 | pda, 110 | lamports 111 | ); 112 | const tx = await this.transactionSender.sendWithWallet({ 113 | instructions: depositTx.instructions, 114 | signers: depositTx.signers, 115 | }); 116 | 117 | return tx; 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /src/service/transaction-sender.ts: -------------------------------------------------------------------------------- 1 | import { Transaction, TransactionSignature } from "@solana/web3.js"; 2 | import { AnchorProvider, Provider } from "@project-serum/anchor"; 3 | import { InstructionsAndSigners } from "../model/job"; 4 | 5 | export class TransactionSender { 6 | provider: AnchorProvider; 7 | constructor(provider: AnchorProvider) { 8 | this.provider = provider; 9 | } 10 | 11 | async sendWithWallet( 12 | instructionsAndSigners: InstructionsAndSigners 13 | ): Promise { 14 | const transaction = new Transaction(); 15 | transaction.add(...instructionsAndSigners.instructions); 16 | return await this.provider.sendAndConfirm( 17 | transaction, 18 | instructionsAndSigners.signers 19 | ); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json" 3 | } -------------------------------------------------------------------------------- /test-env.js: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | -------------------------------------------------------------------------------- /test/job-builder.test.ts: -------------------------------------------------------------------------------- 1 | import { instructions, rightNow, tomorrow } from "./test-data"; 2 | import { JobBuilder } from "../src/builder/job-builder"; 3 | import { ErrorMessage } from "../src/config/error"; 4 | import { FeeSource, TriggerType } from "../src/model/job"; 5 | 6 | test("build once-off scheduled job", async function () { 7 | const job = new JobBuilder() 8 | .jobName("hello world") 9 | .jobInstructions(instructions) 10 | .scheduleOnce(tomorrow()) 11 | .build(); 12 | 13 | expect(job.recurring).toBe(false); 14 | expect(job.name).toBe("hello world"); 15 | expect(job.nextExecutionTime).toBeGreaterThan(rightNow()); 16 | }); 17 | 18 | test("build recurring scheduled job", async function () { 19 | const job = new JobBuilder() 20 | .jobName("hello world") 21 | .jobInstructions(instructions) 22 | .scheduleCron("0 * * * *", 2) 23 | .build(); 24 | 25 | expect(job.recurring).toBe(true); 26 | expect(job.remainingRuns).toBe(2); 27 | expect(job.name).toBe("hello world"); 28 | }); 29 | 30 | test("build cron weekday job", () => { 31 | const job = new JobBuilder() 32 | .jobName("hello world") 33 | .jobInstructions(instructions) 34 | .scheduleCron("0 * * * 2", 2) 35 | .build(); 36 | 37 | console.log(job); 38 | 39 | expect(job.recurring).toBe(true); 40 | expect(job.name).toBe("hello world"); 41 | expect(job.triggerType).toBe(TriggerType.Time); 42 | }); 43 | 44 | test("build self-funded job", () => { 45 | const job = new JobBuilder() 46 | .jobName("hello world") 47 | .jobInstructions(instructions) 48 | .scheduleCron("0 * * * 2", 2) 49 | .selfFunded(true) 50 | .initialFund(10000) 51 | .build(); 52 | 53 | console.log(job); 54 | 55 | expect(job.payFeeFrom).toBe(FeeSource.FromFlow); 56 | expect(job.name).toBe("hello world"); 57 | expect(job.initialFund).toBe(10000); 58 | }); 59 | 60 | test("build invalid self-funded job", () => { 61 | try { 62 | const job = new JobBuilder() 63 | .jobName("hello world") 64 | .jobInstructions(instructions) 65 | .scheduleCron("0 * * * 2", 2) 66 | .initialFund(10000) 67 | .selfFunded(true) 68 | .build(); 69 | 70 | console.log(job); 71 | } catch (error: any) { 72 | expect(error.message).toBe(ErrorMessage.JobNotBuiltAsSelfFunded); 73 | } 74 | }); 75 | -------------------------------------------------------------------------------- /test/model.test.ts: -------------------------------------------------------------------------------- 1 | import { BN } from "@project-serum/anchor"; 2 | import { instructions, tomorrow } from "./test-data"; 3 | import { JobBuilder } from "../src/builder/job-builder"; 4 | import { TriggerType } from "../src/model/job"; 5 | 6 | test("job conversion test", async function () { 7 | const job = new JobBuilder() 8 | .jobName("hello world") 9 | .jobInstructions(instructions) 10 | .scheduleOnce(tomorrow()) 11 | .build(); 12 | 13 | const serJob = job.toSerializableJob(); 14 | console.log("serJob = ", serJob); 15 | expect(serJob.name).toBe("hello world"); 16 | expect(serJob.triggerType).toBe(TriggerType.Time); 17 | expect(serJob.recurring).toBe(false); 18 | const nextExecutionTime: BN = serJob.nextExecutionTime as BN; 19 | expect(nextExecutionTime.toNumber()).toBe(job.nextExecutionTime); 20 | expect(serJob.actions).toHaveLength(1); 21 | }); 22 | -------------------------------------------------------------------------------- /test/snowflake.test.ts: -------------------------------------------------------------------------------- 1 | import { AnchorProvider, Provider } from "@project-serum/anchor"; 2 | import { instructions, tomorrow } from "./test-data"; 3 | import { clusterApiUrl, PublicKey } from "@solana/web3.js"; 4 | import { Snowflake } from "../src/service/snowflake"; 5 | import { JobBuilder } from "../src/builder/job-builder"; 6 | import { Job, TriggerType } from "../src/model/job"; 7 | 8 | let provider: AnchorProvider; 9 | let snowflake: Snowflake; 10 | let owner: PublicKey; 11 | let testJobs: Job[] = []; 12 | 13 | jest.setTimeout(60 * 1000); 14 | 15 | beforeAll(() => { 16 | const API_URL = clusterApiUrl("devnet"); 17 | provider = AnchorProvider.local(API_URL); 18 | snowflake = new Snowflake(provider); 19 | owner = provider.wallet.publicKey; 20 | }); 21 | 22 | afterEach(async () => { 23 | if (testJobs && testJobs.length) { 24 | console.log('Jobs to be cleaned up', testJobs.length); 25 | 26 | for (let i = testJobs.length - 1; i >= 0; i--) { 27 | const jobToBeDeleted = testJobs[i]; 28 | try { 29 | await snowflake.deleteJob(jobToBeDeleted.pubKey); 30 | testJobs.pop(); 31 | } catch (error) { 32 | console.log('Clean up error', jobToBeDeleted?.pubKey, error); 33 | } 34 | } 35 | } 36 | }); 37 | 38 | test("create job", async function () { 39 | const job = new JobBuilder() 40 | .jobName("hello world") 41 | .jobInstructions(instructions) 42 | .scheduleOnce(tomorrow()) 43 | .build(); 44 | 45 | const txId = await snowflake.createJob(registerTestJob(job)); 46 | console.log("create job txn signature ", txId); 47 | 48 | const fetchedJob = await snowflake.fetch(job.pubKey); 49 | 50 | console.log(fetchedJob); 51 | 52 | expect(fetchedJob.name).toBe("hello world"); 53 | expect(fetchedJob.triggerType).toBe(TriggerType.Time); 54 | expect(fetchedJob.recurring).toBe(false); 55 | expect(fetchedJob.pubKey).toBeDefined(); 56 | expect(fetchedJob); 57 | }); 58 | 59 | test("create self-funded job", async function () { 60 | const job = new JobBuilder() 61 | .jobName("Self-funded automation") 62 | .jobInstructions(instructions) 63 | .scheduleConditional(5) 64 | .selfFunded(true) 65 | .initialFund(1000000000) 66 | .build(); 67 | 68 | const txId = await snowflake.createJob(registerTestJob(job)); 69 | console.log("create job txn signature ", txId); 70 | 71 | const fetchedJob = await snowflake.fetch(job.pubKey); 72 | 73 | console.log(fetchedJob); 74 | 75 | expect(fetchedJob.name).toBe("Self-funded automation"); 76 | expect(fetchedJob.triggerType).toBe(TriggerType.ProgramCondition); 77 | expect(fetchedJob.recurring).toBe(false); 78 | expect(fetchedJob.pubKey).toBeDefined(); 79 | expect(fetchedJob); 80 | }); 81 | 82 | test("create job with specific size", async function () { 83 | const job = new JobBuilder() 84 | .jobName("hello world") 85 | .jobInstructions(instructions) 86 | .scheduleOnce(tomorrow()) 87 | .build(); 88 | 89 | const txId = await snowflake.createJob(registerTestJob(job), 500); 90 | console.log("create job with of with specific size txn signature ", txId); 91 | const fetchedJob = await snowflake.fetch(job.pubKey); 92 | console.log(fetchedJob); 93 | expect(fetchedJob.name).toBe("hello world"); 94 | }); 95 | 96 | test("get job by owner and app id", async function () { 97 | const SAMPLE_APP_ID = new PublicKey('BxUeMg5etjmiDX25gbGi2pn1MyzkcQx3ZCCiUifTUhyj'); 98 | const job = new JobBuilder() 99 | .jobName("hello world") 100 | .jobInstructions(instructions) 101 | .scheduleOnce(tomorrow()) 102 | .byAppId(SAMPLE_APP_ID) 103 | .build(); 104 | 105 | const txId = await snowflake.createJob(job, 500); 106 | console.log("create job with of with specific size txn signature ", txId); 107 | 108 | const jobs = await snowflake.findByOwnerAndAppId(owner, SAMPLE_APP_ID); 109 | 110 | expect(jobs.length).toBeGreaterThan(0); 111 | }); 112 | 113 | test("update job", async function () { 114 | const job = new JobBuilder() 115 | .jobName("hello world") 116 | .jobInstructions(instructions) 117 | .scheduleOnce(tomorrow()) 118 | .build(); 119 | 120 | await snowflake.createJob(registerTestJob(job)); 121 | 122 | let fetchedJob = await snowflake.fetch(job.pubKey); 123 | 124 | expect(fetchedJob.name).toBe("hello world"); 125 | expect(fetchedJob.triggerType).toBe(TriggerType.Time); 126 | expect(fetchedJob.recurring).toBe(false); 127 | 128 | fetchedJob = new JobBuilder() 129 | .fromExistingJob(fetchedJob) 130 | .jobName("hello world 2") 131 | .scheduleCron("0 * * * *", 2) 132 | .build(); 133 | 134 | await snowflake.updateJob(fetchedJob); 135 | fetchedJob = await snowflake.fetch(job.pubKey); 136 | 137 | expect(fetchedJob.name).toBe("hello world 2"); 138 | expect(fetchedJob.triggerType).toBe(TriggerType.Time); 139 | expect(fetchedJob.recurring).toBe(true); 140 | }); 141 | 142 | test("delete job", async function () { 143 | const job = new JobBuilder() 144 | .jobName("hello world") 145 | .jobInstructions(instructions) 146 | .scheduleOnce(tomorrow()) 147 | .build(); 148 | 149 | await snowflake.createJob(job); 150 | 151 | // Before delete 152 | let beforeDeleteFetchJobsByOwner = await snowflake.findByOwner(owner); 153 | expect(beforeDeleteFetchJobsByOwner.length > 0).toBeTruthy(); 154 | 155 | // After delete 156 | await snowflake.deleteJob(job.pubKey); 157 | let fetchJob = await snowflake.fetch(job.pubKey).catch((err) => { 158 | expect(err).toBeDefined(); 159 | expect(err.message).toBe(`Account does not exist ${job.pubKey.toString()}`); 160 | }); 161 | 162 | expect(fetchJob).toBeUndefined(); 163 | 164 | let afterDeleteFetchJobsByOwner = await snowflake.findByOwner(owner); 165 | expect(afterDeleteFetchJobsByOwner.length).toBe( 166 | beforeDeleteFetchJobsByOwner.length - 1 167 | ); 168 | }); 169 | 170 | test("get Snowflake PDA for user", async function () { 171 | let pda = await snowflake.getSnowflakePDAForUser( 172 | new PublicKey("EpmRY1vzTajbur4hkipMi3MbvjbJHKzqEAAqXj12ccZQ") 173 | ); 174 | expect(pda.toString()).toBe("Bf4nWuxMhAeSPR68viDcZkjh9svsdqPZJCAUWtkvvoko"); 175 | }); 176 | 177 | test("deposit fee account", async function () { 178 | const amount = 100000; 179 | const owner = provider.wallet.publicKey; 180 | let pda = await snowflake.getSnowflakePDAForUser(owner); 181 | const balanceBeforeDeposit = await provider.connection.getBalance(pda); 182 | await snowflake.depositFeeAccount(amount); 183 | const balanceAfterDeposit = await provider.connection.getBalance(pda); 184 | 185 | expect(balanceAfterDeposit).toBe(balanceBeforeDeposit + amount); 186 | }); 187 | 188 | function registerTestJob(job: Job) { 189 | testJobs.push(job); 190 | return job; 191 | } 192 | -------------------------------------------------------------------------------- /test/test-data.ts: -------------------------------------------------------------------------------- 1 | import { Buffer } from "buffer"; 2 | import { PublicKey } from "@solana/web3.js"; 3 | import { UnixTimeStamp } from "../src/model/job"; 4 | 5 | export const instructions = [ 6 | { 7 | programId: new PublicKey("ETwBdF9X2eABzmKmpT3ZFYyUtmve7UWWgzbERAyd4gAC"), 8 | data: Buffer.from("74b89fceb3e0b22a", "hex"), 9 | keys: [ 10 | { 11 | pubkey: new PublicKey("5jo4Lh2Z9FGQ87sDhUBwZjNZdL15MwdeT5WUXKfwFSZY"), 12 | isSigner: false, 13 | isWritable: false, 14 | }, 15 | ], 16 | }, 17 | ]; 18 | 19 | export function tomorrow(): UnixTimeStamp { 20 | let tomorrow = new Date(); 21 | tomorrow.setDate(tomorrow.getDate() + 1); 22 | return Math.floor(+tomorrow / 1000); 23 | } 24 | 25 | export function rightNow(): UnixTimeStamp { 26 | return +new Date() / 1000; 27 | } 28 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "declaration": true, 5 | "module": "commonjs", 6 | "outDir": "./dist", 7 | "strict": true, 8 | "baseUrl": "./", 9 | "typeRoots": ["node_modules/@types"], 10 | "types": ["node", "@types/jest", "jest"], 11 | "esModuleInterop": true, 12 | "inlineSourceMap": true, 13 | "strictPropertyInitialization": false, 14 | "resolveJsonModule": true 15 | }, 16 | "include": ["src"] 17 | } 18 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.1.0": 6 | version "2.1.2" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" 8 | integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== 9 | dependencies: 10 | "@jridgewell/trace-mapping" "^0.3.0" 11 | 12 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": 13 | version "7.16.7" 14 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" 15 | integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== 16 | dependencies: 17 | "@babel/highlight" "^7.16.7" 18 | 19 | "@babel/compat-data@^7.17.7": 20 | version "7.17.7" 21 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" 22 | integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== 23 | 24 | "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": 25 | version "7.17.9" 26 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" 27 | integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== 28 | dependencies: 29 | "@ampproject/remapping" "^2.1.0" 30 | "@babel/code-frame" "^7.16.7" 31 | "@babel/generator" "^7.17.9" 32 | "@babel/helper-compilation-targets" "^7.17.7" 33 | "@babel/helper-module-transforms" "^7.17.7" 34 | "@babel/helpers" "^7.17.9" 35 | "@babel/parser" "^7.17.9" 36 | "@babel/template" "^7.16.7" 37 | "@babel/traverse" "^7.17.9" 38 | "@babel/types" "^7.17.0" 39 | convert-source-map "^1.7.0" 40 | debug "^4.1.0" 41 | gensync "^1.0.0-beta.2" 42 | json5 "^2.2.1" 43 | semver "^6.3.0" 44 | 45 | "@babel/generator@^7.17.9", "@babel/generator@^7.7.2": 46 | version "7.17.9" 47 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" 48 | integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== 49 | dependencies: 50 | "@babel/types" "^7.17.0" 51 | jsesc "^2.5.1" 52 | source-map "^0.5.0" 53 | 54 | "@babel/helper-compilation-targets@^7.17.7": 55 | version "7.17.7" 56 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" 57 | integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== 58 | dependencies: 59 | "@babel/compat-data" "^7.17.7" 60 | "@babel/helper-validator-option" "^7.16.7" 61 | browserslist "^4.17.5" 62 | semver "^6.3.0" 63 | 64 | "@babel/helper-environment-visitor@^7.16.7": 65 | version "7.16.7" 66 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" 67 | integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== 68 | dependencies: 69 | "@babel/types" "^7.16.7" 70 | 71 | "@babel/helper-function-name@^7.17.9": 72 | version "7.17.9" 73 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" 74 | integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== 75 | dependencies: 76 | "@babel/template" "^7.16.7" 77 | "@babel/types" "^7.17.0" 78 | 79 | "@babel/helper-hoist-variables@^7.16.7": 80 | version "7.16.7" 81 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" 82 | integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== 83 | dependencies: 84 | "@babel/types" "^7.16.7" 85 | 86 | "@babel/helper-module-imports@^7.16.7": 87 | version "7.16.7" 88 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" 89 | integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== 90 | dependencies: 91 | "@babel/types" "^7.16.7" 92 | 93 | "@babel/helper-module-transforms@^7.17.7": 94 | version "7.17.7" 95 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" 96 | integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== 97 | dependencies: 98 | "@babel/helper-environment-visitor" "^7.16.7" 99 | "@babel/helper-module-imports" "^7.16.7" 100 | "@babel/helper-simple-access" "^7.17.7" 101 | "@babel/helper-split-export-declaration" "^7.16.7" 102 | "@babel/helper-validator-identifier" "^7.16.7" 103 | "@babel/template" "^7.16.7" 104 | "@babel/traverse" "^7.17.3" 105 | "@babel/types" "^7.17.0" 106 | 107 | "@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.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0": 108 | version "7.16.7" 109 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" 110 | integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== 111 | 112 | "@babel/helper-simple-access@^7.17.7": 113 | version "7.17.7" 114 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" 115 | integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== 116 | dependencies: 117 | "@babel/types" "^7.17.0" 118 | 119 | "@babel/helper-split-export-declaration@^7.16.7": 120 | version "7.16.7" 121 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" 122 | integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== 123 | dependencies: 124 | "@babel/types" "^7.16.7" 125 | 126 | "@babel/helper-validator-identifier@^7.16.7": 127 | version "7.16.7" 128 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" 129 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== 130 | 131 | "@babel/helper-validator-option@^7.16.7": 132 | version "7.16.7" 133 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" 134 | integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== 135 | 136 | "@babel/helpers@^7.17.9": 137 | version "7.17.9" 138 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" 139 | integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== 140 | dependencies: 141 | "@babel/template" "^7.16.7" 142 | "@babel/traverse" "^7.17.9" 143 | "@babel/types" "^7.17.0" 144 | 145 | "@babel/highlight@^7.16.7": 146 | version "7.17.9" 147 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" 148 | integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== 149 | dependencies: 150 | "@babel/helper-validator-identifier" "^7.16.7" 151 | chalk "^2.0.0" 152 | js-tokens "^4.0.0" 153 | 154 | "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": 155 | version "7.17.9" 156 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" 157 | integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== 158 | 159 | "@babel/plugin-syntax-async-generators@^7.8.4": 160 | version "7.8.4" 161 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 162 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 163 | dependencies: 164 | "@babel/helper-plugin-utils" "^7.8.0" 165 | 166 | "@babel/plugin-syntax-bigint@^7.8.3": 167 | version "7.8.3" 168 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" 169 | integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== 170 | dependencies: 171 | "@babel/helper-plugin-utils" "^7.8.0" 172 | 173 | "@babel/plugin-syntax-class-properties@^7.8.3": 174 | version "7.12.13" 175 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" 176 | integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== 177 | dependencies: 178 | "@babel/helper-plugin-utils" "^7.12.13" 179 | 180 | "@babel/plugin-syntax-import-meta@^7.8.3": 181 | version "7.10.4" 182 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" 183 | integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== 184 | dependencies: 185 | "@babel/helper-plugin-utils" "^7.10.4" 186 | 187 | "@babel/plugin-syntax-json-strings@^7.8.3": 188 | version "7.8.3" 189 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 190 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 191 | dependencies: 192 | "@babel/helper-plugin-utils" "^7.8.0" 193 | 194 | "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": 195 | version "7.10.4" 196 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" 197 | integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== 198 | dependencies: 199 | "@babel/helper-plugin-utils" "^7.10.4" 200 | 201 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 202 | version "7.8.3" 203 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 204 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 205 | dependencies: 206 | "@babel/helper-plugin-utils" "^7.8.0" 207 | 208 | "@babel/plugin-syntax-numeric-separator@^7.8.3": 209 | version "7.10.4" 210 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" 211 | integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== 212 | dependencies: 213 | "@babel/helper-plugin-utils" "^7.10.4" 214 | 215 | "@babel/plugin-syntax-object-rest-spread@^7.8.3": 216 | version "7.8.3" 217 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 218 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 219 | dependencies: 220 | "@babel/helper-plugin-utils" "^7.8.0" 221 | 222 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3": 223 | version "7.8.3" 224 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 225 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 226 | dependencies: 227 | "@babel/helper-plugin-utils" "^7.8.0" 228 | 229 | "@babel/plugin-syntax-optional-chaining@^7.8.3": 230 | version "7.8.3" 231 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 232 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 233 | dependencies: 234 | "@babel/helper-plugin-utils" "^7.8.0" 235 | 236 | "@babel/plugin-syntax-top-level-await@^7.8.3": 237 | version "7.14.5" 238 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" 239 | integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== 240 | dependencies: 241 | "@babel/helper-plugin-utils" "^7.14.5" 242 | 243 | "@babel/plugin-syntax-typescript@^7.7.2": 244 | version "7.16.7" 245 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" 246 | integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== 247 | dependencies: 248 | "@babel/helper-plugin-utils" "^7.16.7" 249 | 250 | "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5": 251 | version "7.17.9" 252 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" 253 | integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== 254 | dependencies: 255 | regenerator-runtime "^0.13.4" 256 | 257 | "@babel/template@^7.16.7", "@babel/template@^7.3.3": 258 | version "7.16.7" 259 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" 260 | integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== 261 | dependencies: 262 | "@babel/code-frame" "^7.16.7" 263 | "@babel/parser" "^7.16.7" 264 | "@babel/types" "^7.16.7" 265 | 266 | "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": 267 | version "7.17.9" 268 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" 269 | integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== 270 | dependencies: 271 | "@babel/code-frame" "^7.16.7" 272 | "@babel/generator" "^7.17.9" 273 | "@babel/helper-environment-visitor" "^7.16.7" 274 | "@babel/helper-function-name" "^7.17.9" 275 | "@babel/helper-hoist-variables" "^7.16.7" 276 | "@babel/helper-split-export-declaration" "^7.16.7" 277 | "@babel/parser" "^7.17.9" 278 | "@babel/types" "^7.17.0" 279 | debug "^4.1.0" 280 | globals "^11.1.0" 281 | 282 | "@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": 283 | version "7.17.0" 284 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" 285 | integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== 286 | dependencies: 287 | "@babel/helper-validator-identifier" "^7.16.7" 288 | to-fast-properties "^2.0.0" 289 | 290 | "@bcoe/v8-coverage@^0.2.3": 291 | version "0.2.3" 292 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 293 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 294 | 295 | "@cspotcode/source-map-consumer@0.8.0": 296 | version "0.8.0" 297 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" 298 | integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== 299 | 300 | "@cspotcode/source-map-support@0.7.0": 301 | version "0.7.0" 302 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" 303 | integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== 304 | dependencies: 305 | "@cspotcode/source-map-consumer" "0.8.0" 306 | 307 | "@ethersproject/bytes@^5.6.0": 308 | version "5.6.1" 309 | resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" 310 | integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== 311 | dependencies: 312 | "@ethersproject/logger" "^5.6.0" 313 | 314 | "@ethersproject/logger@^5.6.0": 315 | version "5.6.0" 316 | resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" 317 | integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== 318 | 319 | "@ethersproject/sha2@^5.5.0": 320 | version "5.6.0" 321 | resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.0.tgz#364c4c11cc753bda36f31f001628706ebadb64d9" 322 | integrity sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA== 323 | dependencies: 324 | "@ethersproject/bytes" "^5.6.0" 325 | "@ethersproject/logger" "^5.6.0" 326 | hash.js "1.1.7" 327 | 328 | "@istanbuljs/load-nyc-config@^1.0.0": 329 | version "1.1.0" 330 | resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" 331 | integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== 332 | dependencies: 333 | camelcase "^5.3.1" 334 | find-up "^4.1.0" 335 | get-package-type "^0.1.0" 336 | js-yaml "^3.13.1" 337 | resolve-from "^5.0.0" 338 | 339 | "@istanbuljs/schema@^0.1.2": 340 | version "0.1.3" 341 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 342 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== 343 | 344 | "@jest/console@^27.5.1": 345 | version "27.5.1" 346 | resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" 347 | integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== 348 | dependencies: 349 | "@jest/types" "^27.5.1" 350 | "@types/node" "*" 351 | chalk "^4.0.0" 352 | jest-message-util "^27.5.1" 353 | jest-util "^27.5.1" 354 | slash "^3.0.0" 355 | 356 | "@jest/core@^27.5.1": 357 | version "27.5.1" 358 | resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" 359 | integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== 360 | dependencies: 361 | "@jest/console" "^27.5.1" 362 | "@jest/reporters" "^27.5.1" 363 | "@jest/test-result" "^27.5.1" 364 | "@jest/transform" "^27.5.1" 365 | "@jest/types" "^27.5.1" 366 | "@types/node" "*" 367 | ansi-escapes "^4.2.1" 368 | chalk "^4.0.0" 369 | emittery "^0.8.1" 370 | exit "^0.1.2" 371 | graceful-fs "^4.2.9" 372 | jest-changed-files "^27.5.1" 373 | jest-config "^27.5.1" 374 | jest-haste-map "^27.5.1" 375 | jest-message-util "^27.5.1" 376 | jest-regex-util "^27.5.1" 377 | jest-resolve "^27.5.1" 378 | jest-resolve-dependencies "^27.5.1" 379 | jest-runner "^27.5.1" 380 | jest-runtime "^27.5.1" 381 | jest-snapshot "^27.5.1" 382 | jest-util "^27.5.1" 383 | jest-validate "^27.5.1" 384 | jest-watcher "^27.5.1" 385 | micromatch "^4.0.4" 386 | rimraf "^3.0.0" 387 | slash "^3.0.0" 388 | strip-ansi "^6.0.0" 389 | 390 | "@jest/environment@^27.5.1": 391 | version "27.5.1" 392 | resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" 393 | integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== 394 | dependencies: 395 | "@jest/fake-timers" "^27.5.1" 396 | "@jest/types" "^27.5.1" 397 | "@types/node" "*" 398 | jest-mock "^27.5.1" 399 | 400 | "@jest/fake-timers@^27.5.1": 401 | version "27.5.1" 402 | resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" 403 | integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== 404 | dependencies: 405 | "@jest/types" "^27.5.1" 406 | "@sinonjs/fake-timers" "^8.0.1" 407 | "@types/node" "*" 408 | jest-message-util "^27.5.1" 409 | jest-mock "^27.5.1" 410 | jest-util "^27.5.1" 411 | 412 | "@jest/globals@^27.5.1": 413 | version "27.5.1" 414 | resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" 415 | integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== 416 | dependencies: 417 | "@jest/environment" "^27.5.1" 418 | "@jest/types" "^27.5.1" 419 | expect "^27.5.1" 420 | 421 | "@jest/reporters@^27.5.1": 422 | version "27.5.1" 423 | resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" 424 | integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== 425 | dependencies: 426 | "@bcoe/v8-coverage" "^0.2.3" 427 | "@jest/console" "^27.5.1" 428 | "@jest/test-result" "^27.5.1" 429 | "@jest/transform" "^27.5.1" 430 | "@jest/types" "^27.5.1" 431 | "@types/node" "*" 432 | chalk "^4.0.0" 433 | collect-v8-coverage "^1.0.0" 434 | exit "^0.1.2" 435 | glob "^7.1.2" 436 | graceful-fs "^4.2.9" 437 | istanbul-lib-coverage "^3.0.0" 438 | istanbul-lib-instrument "^5.1.0" 439 | istanbul-lib-report "^3.0.0" 440 | istanbul-lib-source-maps "^4.0.0" 441 | istanbul-reports "^3.1.3" 442 | jest-haste-map "^27.5.1" 443 | jest-resolve "^27.5.1" 444 | jest-util "^27.5.1" 445 | jest-worker "^27.5.1" 446 | slash "^3.0.0" 447 | source-map "^0.6.0" 448 | string-length "^4.0.1" 449 | terminal-link "^2.0.0" 450 | v8-to-istanbul "^8.1.0" 451 | 452 | "@jest/source-map@^27.5.1": 453 | version "27.5.1" 454 | resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" 455 | integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== 456 | dependencies: 457 | callsites "^3.0.0" 458 | graceful-fs "^4.2.9" 459 | source-map "^0.6.0" 460 | 461 | "@jest/test-result@^27.5.1": 462 | version "27.5.1" 463 | resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" 464 | integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== 465 | dependencies: 466 | "@jest/console" "^27.5.1" 467 | "@jest/types" "^27.5.1" 468 | "@types/istanbul-lib-coverage" "^2.0.0" 469 | collect-v8-coverage "^1.0.0" 470 | 471 | "@jest/test-sequencer@^27.5.1": 472 | version "27.5.1" 473 | resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" 474 | integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== 475 | dependencies: 476 | "@jest/test-result" "^27.5.1" 477 | graceful-fs "^4.2.9" 478 | jest-haste-map "^27.5.1" 479 | jest-runtime "^27.5.1" 480 | 481 | "@jest/transform@^27.5.1": 482 | version "27.5.1" 483 | resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" 484 | integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== 485 | dependencies: 486 | "@babel/core" "^7.1.0" 487 | "@jest/types" "^27.5.1" 488 | babel-plugin-istanbul "^6.1.1" 489 | chalk "^4.0.0" 490 | convert-source-map "^1.4.0" 491 | fast-json-stable-stringify "^2.0.0" 492 | graceful-fs "^4.2.9" 493 | jest-haste-map "^27.5.1" 494 | jest-regex-util "^27.5.1" 495 | jest-util "^27.5.1" 496 | micromatch "^4.0.4" 497 | pirates "^4.0.4" 498 | slash "^3.0.0" 499 | source-map "^0.6.1" 500 | write-file-atomic "^3.0.0" 501 | 502 | "@jest/types@^27.5.1": 503 | version "27.5.1" 504 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" 505 | integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== 506 | dependencies: 507 | "@types/istanbul-lib-coverage" "^2.0.0" 508 | "@types/istanbul-reports" "^3.0.0" 509 | "@types/node" "*" 510 | "@types/yargs" "^16.0.0" 511 | chalk "^4.0.0" 512 | 513 | "@jridgewell/resolve-uri@^3.0.3": 514 | version "3.0.5" 515 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" 516 | integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== 517 | 518 | "@jridgewell/sourcemap-codec@^1.4.10": 519 | version "1.4.11" 520 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" 521 | integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== 522 | 523 | "@jridgewell/trace-mapping@^0.3.0": 524 | version "0.3.4" 525 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" 526 | integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== 527 | dependencies: 528 | "@jridgewell/resolve-uri" "^3.0.3" 529 | "@jridgewell/sourcemap-codec" "^1.4.10" 530 | 531 | "@project-serum/anchor@^0.24.2": 532 | version "0.24.2" 533 | resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.24.2.tgz#a3c52a99605c80735f446ca9b3a4885034731004" 534 | integrity sha512-0/718g8/DnEuwAidUwh5wLYphUYXhUbiClkuRNhvNoa+1Y8a4g2tJyxoae+emV+PG/Gikd/QUBNMkIcimiIRTA== 535 | dependencies: 536 | "@project-serum/borsh" "^0.2.5" 537 | "@solana/web3.js" "^1.36.0" 538 | base64-js "^1.5.1" 539 | bn.js "^5.1.2" 540 | bs58 "^4.0.1" 541 | buffer-layout "^1.2.2" 542 | camelcase "^5.3.1" 543 | cross-fetch "^3.1.5" 544 | crypto-hash "^1.3.0" 545 | eventemitter3 "^4.0.7" 546 | js-sha256 "^0.9.0" 547 | pako "^2.0.3" 548 | snake-case "^3.0.4" 549 | toml "^3.0.0" 550 | 551 | "@project-serum/borsh@^0.2.5": 552 | version "0.2.5" 553 | resolved "https://registry.yarnpkg.com/@project-serum/borsh/-/borsh-0.2.5.tgz#6059287aa624ecebbfc0edd35e4c28ff987d8663" 554 | integrity sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q== 555 | dependencies: 556 | bn.js "^5.1.2" 557 | buffer-layout "^1.2.0" 558 | 559 | "@sinonjs/commons@^1.7.0": 560 | version "1.8.3" 561 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" 562 | integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== 563 | dependencies: 564 | type-detect "4.0.8" 565 | 566 | "@sinonjs/fake-timers@^8.0.1": 567 | version "8.1.0" 568 | resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" 569 | integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== 570 | dependencies: 571 | "@sinonjs/commons" "^1.7.0" 572 | 573 | "@solana/buffer-layout-utils@^0.2.0": 574 | version "0.2.0" 575 | resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" 576 | integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== 577 | dependencies: 578 | "@solana/buffer-layout" "^4.0.0" 579 | "@solana/web3.js" "^1.32.0" 580 | bigint-buffer "^1.1.5" 581 | bignumber.js "^9.0.1" 582 | 583 | "@solana/buffer-layout@^4.0.0": 584 | version "4.0.0" 585 | resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz#75b1b11adc487234821c81dfae3119b73a5fd734" 586 | integrity sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ== 587 | dependencies: 588 | buffer "~6.0.3" 589 | 590 | "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.41.4": 591 | version "1.41.4" 592 | resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.41.4.tgz#595aa29a4a61c181b8c8f5cf0bbef80b4739cfab" 593 | integrity sha512-2/mjqUcGsBkLEvKxA+rWFE1vODBycAMa62r3wm3Uzb6nmsXQQNTotB+6YoeLQmF0mxVoy8ZA+/QENzBkGkPzSg== 594 | dependencies: 595 | "@babel/runtime" "^7.12.5" 596 | "@ethersproject/sha2" "^5.5.0" 597 | "@solana/buffer-layout" "^4.0.0" 598 | "@solana/buffer-layout-utils" "^0.2.0" 599 | bn.js "^5.0.0" 600 | borsh "^0.7.0" 601 | bs58 "^4.0.1" 602 | buffer "6.0.1" 603 | cross-fetch "^3.1.4" 604 | fast-stable-stringify "^1.0.0" 605 | jayson "^3.4.4" 606 | js-sha3 "^0.8.0" 607 | rpc-websockets "^7.4.2" 608 | secp256k1 "^4.0.2" 609 | sinon-chai "^3.7.0" 610 | superstruct "^0.14.2" 611 | tweetnacl "^1.0.0" 612 | 613 | "@tootallnate/once@1": 614 | version "1.1.2" 615 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 616 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 617 | 618 | "@tsconfig/node10@^1.0.7": 619 | version "1.0.8" 620 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" 621 | integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== 622 | 623 | "@tsconfig/node12@^1.0.7": 624 | version "1.0.9" 625 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" 626 | integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== 627 | 628 | "@tsconfig/node14@^1.0.0": 629 | version "1.0.1" 630 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" 631 | integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== 632 | 633 | "@tsconfig/node16@^1.0.2": 634 | version "1.0.2" 635 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" 636 | integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== 637 | 638 | "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": 639 | version "7.1.19" 640 | resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" 641 | integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== 642 | dependencies: 643 | "@babel/parser" "^7.1.0" 644 | "@babel/types" "^7.0.0" 645 | "@types/babel__generator" "*" 646 | "@types/babel__template" "*" 647 | "@types/babel__traverse" "*" 648 | 649 | "@types/babel__generator@*": 650 | version "7.6.4" 651 | resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" 652 | integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== 653 | dependencies: 654 | "@babel/types" "^7.0.0" 655 | 656 | "@types/babel__template@*": 657 | version "7.4.1" 658 | resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" 659 | integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== 660 | dependencies: 661 | "@babel/parser" "^7.1.0" 662 | "@babel/types" "^7.0.0" 663 | 664 | "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": 665 | version "7.17.0" 666 | resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.0.tgz#7a9b80f712fe2052bc20da153ff1e552404d8e4b" 667 | integrity sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA== 668 | dependencies: 669 | "@babel/types" "^7.3.0" 670 | 671 | "@types/bn.js@^5.1.0": 672 | version "5.1.0" 673 | resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" 674 | integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== 675 | dependencies: 676 | "@types/node" "*" 677 | 678 | "@types/connect@^3.4.33": 679 | version "3.4.35" 680 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" 681 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 682 | dependencies: 683 | "@types/node" "*" 684 | 685 | "@types/express-serve-static-core@^4.17.9": 686 | version "4.17.28" 687 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" 688 | integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== 689 | dependencies: 690 | "@types/node" "*" 691 | "@types/qs" "*" 692 | "@types/range-parser" "*" 693 | 694 | "@types/graceful-fs@^4.1.2": 695 | version "4.1.5" 696 | resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" 697 | integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== 698 | dependencies: 699 | "@types/node" "*" 700 | 701 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 702 | version "2.0.4" 703 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" 704 | integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== 705 | 706 | "@types/istanbul-lib-report@*": 707 | version "3.0.0" 708 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" 709 | integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== 710 | dependencies: 711 | "@types/istanbul-lib-coverage" "*" 712 | 713 | "@types/istanbul-reports@^3.0.0": 714 | version "3.0.1" 715 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" 716 | integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== 717 | dependencies: 718 | "@types/istanbul-lib-report" "*" 719 | 720 | "@types/jest@^27.4.0": 721 | version "27.4.1" 722 | resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" 723 | integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== 724 | dependencies: 725 | jest-matcher-utils "^27.0.0" 726 | pretty-format "^27.0.0" 727 | 728 | "@types/lodash@^4.14.159": 729 | version "4.14.181" 730 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.181.tgz#d1d3740c379fda17ab175165ba04e2d03389385d" 731 | integrity sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag== 732 | 733 | "@types/mocha@^9.1.0": 734 | version "9.1.0" 735 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.0.tgz#baf17ab2cca3fcce2d322ebc30454bff487efad5" 736 | integrity sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg== 737 | 738 | "@types/node@*": 739 | version "17.0.24" 740 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.24.tgz#20ba1bf69c1b4ab405c7a01e950c4f446b05029f" 741 | integrity sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g== 742 | 743 | "@types/node@^12.12.54": 744 | version "12.20.48" 745 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.48.tgz#55f70bd432b6515828c0298689776861b90ca4fa" 746 | integrity sha512-4kxzqkrpwYtn6okJUcb2lfUu9ilnb3yhUOH6qX3nug8D2DupZ2drIkff2yJzYcNJVl3begnlcaBJ7tqiTTzjnQ== 747 | 748 | "@types/prettier@^2.1.5": 749 | version "2.6.0" 750 | resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" 751 | integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== 752 | 753 | "@types/qs@*": 754 | version "6.9.7" 755 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" 756 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 757 | 758 | "@types/range-parser@*": 759 | version "1.2.4" 760 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 761 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 762 | 763 | "@types/stack-utils@^2.0.0": 764 | version "2.0.1" 765 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" 766 | integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== 767 | 768 | "@types/ws@^7.4.4": 769 | version "7.4.7" 770 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" 771 | integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== 772 | dependencies: 773 | "@types/node" "*" 774 | 775 | "@types/yargs-parser@*": 776 | version "21.0.0" 777 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" 778 | integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== 779 | 780 | "@types/yargs@^16.0.0": 781 | version "16.0.4" 782 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" 783 | integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== 784 | dependencies: 785 | "@types/yargs-parser" "*" 786 | 787 | JSONStream@^1.3.5: 788 | version "1.3.5" 789 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" 790 | integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== 791 | dependencies: 792 | jsonparse "^1.2.0" 793 | through ">=2.2.7 <3" 794 | 795 | abab@^2.0.3, abab@^2.0.5: 796 | version "2.0.5" 797 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" 798 | integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== 799 | 800 | acorn-globals@^6.0.0: 801 | version "6.0.0" 802 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" 803 | integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== 804 | dependencies: 805 | acorn "^7.1.1" 806 | acorn-walk "^7.1.1" 807 | 808 | acorn-walk@^7.1.1: 809 | version "7.2.0" 810 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" 811 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 812 | 813 | acorn-walk@^8.1.1: 814 | version "8.2.0" 815 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 816 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 817 | 818 | acorn@^7.1.1: 819 | version "7.4.1" 820 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 821 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 822 | 823 | acorn@^8.2.4, acorn@^8.4.1: 824 | version "8.7.0" 825 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" 826 | integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== 827 | 828 | agent-base@6: 829 | version "6.0.2" 830 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 831 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 832 | dependencies: 833 | debug "4" 834 | 835 | ansi-escapes@^4.2.1: 836 | version "4.3.2" 837 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 838 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 839 | dependencies: 840 | type-fest "^0.21.3" 841 | 842 | ansi-regex@^5.0.1: 843 | version "5.0.1" 844 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 845 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 846 | 847 | ansi-styles@^3.2.1: 848 | version "3.2.1" 849 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 850 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 851 | dependencies: 852 | color-convert "^1.9.0" 853 | 854 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 855 | version "4.3.0" 856 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 857 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 858 | dependencies: 859 | color-convert "^2.0.1" 860 | 861 | ansi-styles@^5.0.0: 862 | version "5.2.0" 863 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" 864 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 865 | 866 | anymatch@^3.0.3: 867 | version "3.1.2" 868 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 869 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 870 | dependencies: 871 | normalize-path "^3.0.0" 872 | picomatch "^2.0.4" 873 | 874 | arg@^4.1.0: 875 | version "4.1.3" 876 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 877 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 878 | 879 | argparse@^1.0.7: 880 | version "1.0.10" 881 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 882 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 883 | dependencies: 884 | sprintf-js "~1.0.2" 885 | 886 | asynckit@^0.4.0: 887 | version "0.4.0" 888 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 889 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 890 | 891 | babel-jest@^27.5.1: 892 | version "27.5.1" 893 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" 894 | integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== 895 | dependencies: 896 | "@jest/transform" "^27.5.1" 897 | "@jest/types" "^27.5.1" 898 | "@types/babel__core" "^7.1.14" 899 | babel-plugin-istanbul "^6.1.1" 900 | babel-preset-jest "^27.5.1" 901 | chalk "^4.0.0" 902 | graceful-fs "^4.2.9" 903 | slash "^3.0.0" 904 | 905 | babel-plugin-istanbul@^6.1.1: 906 | version "6.1.1" 907 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" 908 | integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== 909 | dependencies: 910 | "@babel/helper-plugin-utils" "^7.0.0" 911 | "@istanbuljs/load-nyc-config" "^1.0.0" 912 | "@istanbuljs/schema" "^0.1.2" 913 | istanbul-lib-instrument "^5.0.4" 914 | test-exclude "^6.0.0" 915 | 916 | babel-plugin-jest-hoist@^27.5.1: 917 | version "27.5.1" 918 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" 919 | integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== 920 | dependencies: 921 | "@babel/template" "^7.3.3" 922 | "@babel/types" "^7.3.3" 923 | "@types/babel__core" "^7.0.0" 924 | "@types/babel__traverse" "^7.0.6" 925 | 926 | babel-preset-current-node-syntax@^1.0.0: 927 | version "1.0.1" 928 | resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" 929 | integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== 930 | dependencies: 931 | "@babel/plugin-syntax-async-generators" "^7.8.4" 932 | "@babel/plugin-syntax-bigint" "^7.8.3" 933 | "@babel/plugin-syntax-class-properties" "^7.8.3" 934 | "@babel/plugin-syntax-import-meta" "^7.8.3" 935 | "@babel/plugin-syntax-json-strings" "^7.8.3" 936 | "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 937 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 938 | "@babel/plugin-syntax-numeric-separator" "^7.8.3" 939 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 940 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 941 | "@babel/plugin-syntax-optional-chaining" "^7.8.3" 942 | "@babel/plugin-syntax-top-level-await" "^7.8.3" 943 | 944 | babel-preset-jest@^27.5.1: 945 | version "27.5.1" 946 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" 947 | integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== 948 | dependencies: 949 | babel-plugin-jest-hoist "^27.5.1" 950 | babel-preset-current-node-syntax "^1.0.0" 951 | 952 | balanced-match@^1.0.0: 953 | version "1.0.2" 954 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 955 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 956 | 957 | base-x@^3.0.2: 958 | version "3.0.9" 959 | resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" 960 | integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== 961 | dependencies: 962 | safe-buffer "^5.0.1" 963 | 964 | base64-js@^1.3.1, base64-js@^1.5.1: 965 | version "1.5.1" 966 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 967 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 968 | 969 | bigint-buffer@^1.1.5: 970 | version "1.1.5" 971 | resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" 972 | integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== 973 | dependencies: 974 | bindings "^1.3.0" 975 | 976 | bignumber.js@^9.0.1: 977 | version "9.0.2" 978 | resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" 979 | integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== 980 | 981 | bindings@^1.3.0: 982 | version "1.5.0" 983 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 984 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 985 | dependencies: 986 | file-uri-to-path "1.0.0" 987 | 988 | bn.js@^4.11.9: 989 | version "4.12.0" 990 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" 991 | integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== 992 | 993 | bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0: 994 | version "5.2.0" 995 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" 996 | integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== 997 | 998 | borsh@^0.7.0: 999 | version "0.7.0" 1000 | resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" 1001 | integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== 1002 | dependencies: 1003 | bn.js "^5.2.0" 1004 | bs58 "^4.0.0" 1005 | text-encoding-utf-8 "^1.0.2" 1006 | 1007 | brace-expansion@^1.1.7: 1008 | version "1.1.11" 1009 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 1010 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 1011 | dependencies: 1012 | balanced-match "^1.0.0" 1013 | concat-map "0.0.1" 1014 | 1015 | braces@^3.0.2: 1016 | version "3.0.2" 1017 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 1018 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 1019 | dependencies: 1020 | fill-range "^7.0.1" 1021 | 1022 | brorand@^1.1.0: 1023 | version "1.1.0" 1024 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 1025 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 1026 | 1027 | browser-process-hrtime@^1.0.0: 1028 | version "1.0.0" 1029 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 1030 | integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== 1031 | 1032 | browserslist@^4.17.5: 1033 | version "4.20.2" 1034 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" 1035 | integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== 1036 | dependencies: 1037 | caniuse-lite "^1.0.30001317" 1038 | electron-to-chromium "^1.4.84" 1039 | escalade "^3.1.1" 1040 | node-releases "^2.0.2" 1041 | picocolors "^1.0.0" 1042 | 1043 | bs-logger@0.x: 1044 | version "0.2.6" 1045 | resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" 1046 | integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== 1047 | dependencies: 1048 | fast-json-stable-stringify "2.x" 1049 | 1050 | bs58@^4.0.0, bs58@^4.0.1: 1051 | version "4.0.1" 1052 | resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" 1053 | integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= 1054 | dependencies: 1055 | base-x "^3.0.2" 1056 | 1057 | bser@2.1.1: 1058 | version "2.1.1" 1059 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" 1060 | integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== 1061 | dependencies: 1062 | node-int64 "^0.4.0" 1063 | 1064 | buffer-from@^1.0.0: 1065 | version "1.1.2" 1066 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 1067 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 1068 | 1069 | buffer-layout@^1.2.0, buffer-layout@^1.2.2: 1070 | version "1.2.2" 1071 | resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" 1072 | integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== 1073 | 1074 | buffer@6.0.1: 1075 | version "6.0.1" 1076 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.1.tgz#3cbea8c1463e5a0779e30b66d4c88c6ffa182ac2" 1077 | integrity sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ== 1078 | dependencies: 1079 | base64-js "^1.3.1" 1080 | ieee754 "^1.2.1" 1081 | 1082 | buffer@~6.0.3: 1083 | version "6.0.3" 1084 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" 1085 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 1086 | dependencies: 1087 | base64-js "^1.3.1" 1088 | ieee754 "^1.2.1" 1089 | 1090 | bufferutil@^4.0.1: 1091 | version "4.0.6" 1092 | resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" 1093 | integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== 1094 | dependencies: 1095 | node-gyp-build "^4.3.0" 1096 | 1097 | callsites@^3.0.0: 1098 | version "3.1.0" 1099 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 1100 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 1101 | 1102 | camelcase@^5.3.1: 1103 | version "5.3.1" 1104 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 1105 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 1106 | 1107 | camelcase@^6.2.0: 1108 | version "6.3.0" 1109 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 1110 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 1111 | 1112 | caniuse-lite@^1.0.30001317: 1113 | version "1.0.30001332" 1114 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" 1115 | integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== 1116 | 1117 | chalk@^2.0.0: 1118 | version "2.4.2" 1119 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 1120 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 1121 | dependencies: 1122 | ansi-styles "^3.2.1" 1123 | escape-string-regexp "^1.0.5" 1124 | supports-color "^5.3.0" 1125 | 1126 | chalk@^4.0.0: 1127 | version "4.1.2" 1128 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 1129 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 1130 | dependencies: 1131 | ansi-styles "^4.1.0" 1132 | supports-color "^7.1.0" 1133 | 1134 | char-regex@^1.0.2: 1135 | version "1.0.2" 1136 | resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" 1137 | integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== 1138 | 1139 | ci-info@^3.2.0: 1140 | version "3.3.0" 1141 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" 1142 | integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== 1143 | 1144 | circular-json@^0.5.9: 1145 | version "0.5.9" 1146 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" 1147 | integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== 1148 | 1149 | cjs-module-lexer@^1.0.0: 1150 | version "1.2.2" 1151 | resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" 1152 | integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== 1153 | 1154 | cliui@^7.0.2: 1155 | version "7.0.4" 1156 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 1157 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 1158 | dependencies: 1159 | string-width "^4.2.0" 1160 | strip-ansi "^6.0.0" 1161 | wrap-ansi "^7.0.0" 1162 | 1163 | co@^4.6.0: 1164 | version "4.6.0" 1165 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 1166 | integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= 1167 | 1168 | collect-v8-coverage@^1.0.0: 1169 | version "1.0.1" 1170 | resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" 1171 | integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== 1172 | 1173 | color-convert@^1.9.0: 1174 | version "1.9.3" 1175 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 1176 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 1177 | dependencies: 1178 | color-name "1.1.3" 1179 | 1180 | color-convert@^2.0.1: 1181 | version "2.0.1" 1182 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1183 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1184 | dependencies: 1185 | color-name "~1.1.4" 1186 | 1187 | color-name@1.1.3: 1188 | version "1.1.3" 1189 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1190 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 1191 | 1192 | color-name@~1.1.4: 1193 | version "1.1.4" 1194 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1195 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1196 | 1197 | combined-stream@^1.0.8: 1198 | version "1.0.8" 1199 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 1200 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 1201 | dependencies: 1202 | delayed-stream "~1.0.0" 1203 | 1204 | commander@^2.20.3: 1205 | version "2.20.3" 1206 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 1207 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 1208 | 1209 | concat-map@0.0.1: 1210 | version "0.0.1" 1211 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1212 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 1213 | 1214 | convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: 1215 | version "1.8.0" 1216 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 1217 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 1218 | dependencies: 1219 | safe-buffer "~5.1.1" 1220 | 1221 | create-require@^1.1.0: 1222 | version "1.1.1" 1223 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 1224 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 1225 | 1226 | cross-fetch@^3.1.4, cross-fetch@^3.1.5: 1227 | version "3.1.5" 1228 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" 1229 | integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== 1230 | dependencies: 1231 | node-fetch "2.6.7" 1232 | 1233 | cross-spawn@^7.0.3: 1234 | version "7.0.3" 1235 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 1236 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 1237 | dependencies: 1238 | path-key "^3.1.0" 1239 | shebang-command "^2.0.0" 1240 | which "^2.0.1" 1241 | 1242 | crypto-hash@^1.3.0: 1243 | version "1.3.0" 1244 | resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" 1245 | integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== 1246 | 1247 | cssom@^0.4.4: 1248 | version "0.4.4" 1249 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" 1250 | integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== 1251 | 1252 | cssom@~0.3.6: 1253 | version "0.3.8" 1254 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" 1255 | integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== 1256 | 1257 | cssstyle@^2.3.0: 1258 | version "2.3.0" 1259 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" 1260 | integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== 1261 | dependencies: 1262 | cssom "~0.3.6" 1263 | 1264 | data-urls@^2.0.0: 1265 | version "2.0.0" 1266 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" 1267 | integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== 1268 | dependencies: 1269 | abab "^2.0.3" 1270 | whatwg-mimetype "^2.3.0" 1271 | whatwg-url "^8.0.0" 1272 | 1273 | debug@4, debug@^4.1.0, debug@^4.1.1: 1274 | version "4.3.4" 1275 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 1276 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 1277 | dependencies: 1278 | ms "2.1.2" 1279 | 1280 | decimal.js@^10.2.1: 1281 | version "10.3.1" 1282 | resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" 1283 | integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== 1284 | 1285 | dedent@^0.7.0: 1286 | version "0.7.0" 1287 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 1288 | integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= 1289 | 1290 | deep-is@~0.1.3: 1291 | version "0.1.4" 1292 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 1293 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 1294 | 1295 | deepmerge@^4.2.2: 1296 | version "4.2.2" 1297 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 1298 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 1299 | 1300 | delay@^5.0.0: 1301 | version "5.0.0" 1302 | resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" 1303 | integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== 1304 | 1305 | delayed-stream@~1.0.0: 1306 | version "1.0.0" 1307 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1308 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 1309 | 1310 | detect-newline@^3.0.0: 1311 | version "3.1.0" 1312 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 1313 | integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 1314 | 1315 | diff-sequences@^27.5.1: 1316 | version "27.5.1" 1317 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" 1318 | integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== 1319 | 1320 | diff@^4.0.1: 1321 | version "4.0.2" 1322 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 1323 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 1324 | 1325 | domexception@^2.0.1: 1326 | version "2.0.1" 1327 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" 1328 | integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== 1329 | dependencies: 1330 | webidl-conversions "^5.0.0" 1331 | 1332 | dot-case@^3.0.4: 1333 | version "3.0.4" 1334 | resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" 1335 | integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== 1336 | dependencies: 1337 | no-case "^3.0.4" 1338 | tslib "^2.0.3" 1339 | 1340 | dotenv@^16.0.0: 1341 | version "16.0.0" 1342 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411" 1343 | integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q== 1344 | 1345 | electron-to-chromium@^1.4.84: 1346 | version "1.4.111" 1347 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.111.tgz#897613f6504f3f17c9381c7499a635b413e4df4e" 1348 | integrity sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw== 1349 | 1350 | elliptic@^6.5.4: 1351 | version "6.5.4" 1352 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" 1353 | integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== 1354 | dependencies: 1355 | bn.js "^4.11.9" 1356 | brorand "^1.1.0" 1357 | hash.js "^1.0.0" 1358 | hmac-drbg "^1.0.1" 1359 | inherits "^2.0.4" 1360 | minimalistic-assert "^1.0.1" 1361 | minimalistic-crypto-utils "^1.0.1" 1362 | 1363 | emittery@^0.8.1: 1364 | version "0.8.1" 1365 | resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" 1366 | integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== 1367 | 1368 | emoji-regex@^8.0.0: 1369 | version "8.0.0" 1370 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1371 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1372 | 1373 | error-ex@^1.3.1: 1374 | version "1.3.2" 1375 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 1376 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1377 | dependencies: 1378 | is-arrayish "^0.2.1" 1379 | 1380 | es6-promise@^4.0.3: 1381 | version "4.2.8" 1382 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" 1383 | integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== 1384 | 1385 | es6-promisify@^5.0.0: 1386 | version "5.0.0" 1387 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 1388 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 1389 | dependencies: 1390 | es6-promise "^4.0.3" 1391 | 1392 | escalade@^3.1.1: 1393 | version "3.1.1" 1394 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1395 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1396 | 1397 | escape-string-regexp@^1.0.5: 1398 | version "1.0.5" 1399 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1400 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1401 | 1402 | escape-string-regexp@^2.0.0: 1403 | version "2.0.0" 1404 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1405 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1406 | 1407 | escodegen@^2.0.0: 1408 | version "2.0.0" 1409 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" 1410 | integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== 1411 | dependencies: 1412 | esprima "^4.0.1" 1413 | estraverse "^5.2.0" 1414 | esutils "^2.0.2" 1415 | optionator "^0.8.1" 1416 | optionalDependencies: 1417 | source-map "~0.6.1" 1418 | 1419 | esprima@^4.0.0, esprima@^4.0.1: 1420 | version "4.0.1" 1421 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1422 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1423 | 1424 | estraverse@^5.2.0: 1425 | version "5.3.0" 1426 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1427 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1428 | 1429 | esutils@^2.0.2: 1430 | version "2.0.3" 1431 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1432 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1433 | 1434 | eventemitter3@^4.0.7: 1435 | version "4.0.7" 1436 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" 1437 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 1438 | 1439 | execa@^5.0.0: 1440 | version "5.1.1" 1441 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 1442 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 1443 | dependencies: 1444 | cross-spawn "^7.0.3" 1445 | get-stream "^6.0.0" 1446 | human-signals "^2.1.0" 1447 | is-stream "^2.0.0" 1448 | merge-stream "^2.0.0" 1449 | npm-run-path "^4.0.1" 1450 | onetime "^5.1.2" 1451 | signal-exit "^3.0.3" 1452 | strip-final-newline "^2.0.0" 1453 | 1454 | exit@^0.1.2: 1455 | version "0.1.2" 1456 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1457 | integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= 1458 | 1459 | expect@^27.5.1: 1460 | version "27.5.1" 1461 | resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" 1462 | integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== 1463 | dependencies: 1464 | "@jest/types" "^27.5.1" 1465 | jest-get-type "^27.5.1" 1466 | jest-matcher-utils "^27.5.1" 1467 | jest-message-util "^27.5.1" 1468 | 1469 | eyes@^0.1.8: 1470 | version "0.1.8" 1471 | resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" 1472 | integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= 1473 | 1474 | fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: 1475 | version "2.1.0" 1476 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1477 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1478 | 1479 | fast-levenshtein@~2.0.6: 1480 | version "2.0.6" 1481 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1482 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1483 | 1484 | fast-stable-stringify@^1.0.0: 1485 | version "1.0.0" 1486 | resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" 1487 | integrity sha1-XFVDRisiru79NtBbNOUceMuG0xM= 1488 | 1489 | fb-watchman@^2.0.0: 1490 | version "2.0.1" 1491 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" 1492 | integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== 1493 | dependencies: 1494 | bser "2.1.1" 1495 | 1496 | file-uri-to-path@1.0.0: 1497 | version "1.0.0" 1498 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 1499 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 1500 | 1501 | fill-range@^7.0.1: 1502 | version "7.0.1" 1503 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1504 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1505 | dependencies: 1506 | to-regex-range "^5.0.1" 1507 | 1508 | find-up@^4.0.0, find-up@^4.1.0: 1509 | version "4.1.0" 1510 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1511 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1512 | dependencies: 1513 | locate-path "^5.0.0" 1514 | path-exists "^4.0.0" 1515 | 1516 | form-data@^3.0.0: 1517 | version "3.0.1" 1518 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 1519 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 1520 | dependencies: 1521 | asynckit "^0.4.0" 1522 | combined-stream "^1.0.8" 1523 | mime-types "^2.1.12" 1524 | 1525 | fs.realpath@^1.0.0: 1526 | version "1.0.0" 1527 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1528 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1529 | 1530 | fsevents@^2.3.2: 1531 | version "2.3.2" 1532 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1533 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1534 | 1535 | function-bind@^1.1.1: 1536 | version "1.1.1" 1537 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1538 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1539 | 1540 | gensync@^1.0.0-beta.2: 1541 | version "1.0.0-beta.2" 1542 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1543 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1544 | 1545 | get-caller-file@^2.0.5: 1546 | version "2.0.5" 1547 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1548 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1549 | 1550 | get-package-type@^0.1.0: 1551 | version "0.1.0" 1552 | resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" 1553 | integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== 1554 | 1555 | get-stream@^6.0.0: 1556 | version "6.0.1" 1557 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 1558 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 1559 | 1560 | glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: 1561 | version "7.2.0" 1562 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 1563 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 1564 | dependencies: 1565 | fs.realpath "^1.0.0" 1566 | inflight "^1.0.4" 1567 | inherits "2" 1568 | minimatch "^3.0.4" 1569 | once "^1.3.0" 1570 | path-is-absolute "^1.0.0" 1571 | 1572 | globals@^11.1.0: 1573 | version "11.12.0" 1574 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1575 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1576 | 1577 | graceful-fs@^4.2.9: 1578 | version "4.2.10" 1579 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 1580 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 1581 | 1582 | has-flag@^3.0.0: 1583 | version "3.0.0" 1584 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1585 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1586 | 1587 | has-flag@^4.0.0: 1588 | version "4.0.0" 1589 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1590 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1591 | 1592 | has@^1.0.3: 1593 | version "1.0.3" 1594 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1595 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1596 | dependencies: 1597 | function-bind "^1.1.1" 1598 | 1599 | hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: 1600 | version "1.1.7" 1601 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 1602 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 1603 | dependencies: 1604 | inherits "^2.0.3" 1605 | minimalistic-assert "^1.0.1" 1606 | 1607 | hmac-drbg@^1.0.1: 1608 | version "1.0.1" 1609 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 1610 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 1611 | dependencies: 1612 | hash.js "^1.0.3" 1613 | minimalistic-assert "^1.0.0" 1614 | minimalistic-crypto-utils "^1.0.1" 1615 | 1616 | html-encoding-sniffer@^2.0.1: 1617 | version "2.0.1" 1618 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" 1619 | integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== 1620 | dependencies: 1621 | whatwg-encoding "^1.0.5" 1622 | 1623 | html-escaper@^2.0.0: 1624 | version "2.0.2" 1625 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1626 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1627 | 1628 | http-proxy-agent@^4.0.1: 1629 | version "4.0.1" 1630 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 1631 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 1632 | dependencies: 1633 | "@tootallnate/once" "1" 1634 | agent-base "6" 1635 | debug "4" 1636 | 1637 | https-proxy-agent@^5.0.0: 1638 | version "5.0.1" 1639 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 1640 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 1641 | dependencies: 1642 | agent-base "6" 1643 | debug "4" 1644 | 1645 | human-signals@^2.1.0: 1646 | version "2.1.0" 1647 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 1648 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 1649 | 1650 | iconv-lite@0.4.24: 1651 | version "0.4.24" 1652 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1653 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1654 | dependencies: 1655 | safer-buffer ">= 2.1.2 < 3" 1656 | 1657 | ieee754@^1.2.1: 1658 | version "1.2.1" 1659 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1660 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1661 | 1662 | import-local@^3.0.2: 1663 | version "3.1.0" 1664 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" 1665 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== 1666 | dependencies: 1667 | pkg-dir "^4.2.0" 1668 | resolve-cwd "^3.0.0" 1669 | 1670 | imurmurhash@^0.1.4: 1671 | version "0.1.4" 1672 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1673 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1674 | 1675 | inflight@^1.0.4: 1676 | version "1.0.6" 1677 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1678 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1679 | dependencies: 1680 | once "^1.3.0" 1681 | wrappy "1" 1682 | 1683 | inherits@2, inherits@^2.0.3, inherits@^2.0.4: 1684 | version "2.0.4" 1685 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1686 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1687 | 1688 | is-arrayish@^0.2.1: 1689 | version "0.2.1" 1690 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1691 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1692 | 1693 | is-core-module@^2.8.1: 1694 | version "2.8.1" 1695 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" 1696 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== 1697 | dependencies: 1698 | has "^1.0.3" 1699 | 1700 | is-fullwidth-code-point@^3.0.0: 1701 | version "3.0.0" 1702 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1703 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1704 | 1705 | is-generator-fn@^2.0.0: 1706 | version "2.1.0" 1707 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" 1708 | integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== 1709 | 1710 | is-number@^7.0.0: 1711 | version "7.0.0" 1712 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1713 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1714 | 1715 | is-potential-custom-element-name@^1.0.1: 1716 | version "1.0.1" 1717 | resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" 1718 | integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== 1719 | 1720 | is-stream@^2.0.0: 1721 | version "2.0.1" 1722 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 1723 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 1724 | 1725 | is-typedarray@^1.0.0: 1726 | version "1.0.0" 1727 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1728 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1729 | 1730 | isexe@^2.0.0: 1731 | version "2.0.0" 1732 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1733 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1734 | 1735 | isomorphic-ws@^4.0.1: 1736 | version "4.0.1" 1737 | resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" 1738 | integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== 1739 | 1740 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 1741 | version "3.2.0" 1742 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" 1743 | integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== 1744 | 1745 | istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: 1746 | version "5.1.0" 1747 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" 1748 | integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== 1749 | dependencies: 1750 | "@babel/core" "^7.12.3" 1751 | "@babel/parser" "^7.14.7" 1752 | "@istanbuljs/schema" "^0.1.2" 1753 | istanbul-lib-coverage "^3.2.0" 1754 | semver "^6.3.0" 1755 | 1756 | istanbul-lib-report@^3.0.0: 1757 | version "3.0.0" 1758 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 1759 | integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 1760 | dependencies: 1761 | istanbul-lib-coverage "^3.0.0" 1762 | make-dir "^3.0.0" 1763 | supports-color "^7.1.0" 1764 | 1765 | istanbul-lib-source-maps@^4.0.0: 1766 | version "4.0.1" 1767 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" 1768 | integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== 1769 | dependencies: 1770 | debug "^4.1.1" 1771 | istanbul-lib-coverage "^3.0.0" 1772 | source-map "^0.6.1" 1773 | 1774 | istanbul-reports@^3.1.3: 1775 | version "3.1.4" 1776 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" 1777 | integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== 1778 | dependencies: 1779 | html-escaper "^2.0.0" 1780 | istanbul-lib-report "^3.0.0" 1781 | 1782 | jayson@^3.4.4: 1783 | version "3.6.6" 1784 | resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.6.6.tgz#189984f624e398f831bd2be8e8c80eb3abf764a1" 1785 | integrity sha512-f71uvrAWTtrwoww6MKcl9phQTC+56AopLyEenWvKVAIMz+q0oVGj6tenLZ7Z6UiPBkJtKLj4kt0tACllFQruGQ== 1786 | dependencies: 1787 | "@types/connect" "^3.4.33" 1788 | "@types/express-serve-static-core" "^4.17.9" 1789 | "@types/lodash" "^4.14.159" 1790 | "@types/node" "^12.12.54" 1791 | "@types/ws" "^7.4.4" 1792 | JSONStream "^1.3.5" 1793 | commander "^2.20.3" 1794 | delay "^5.0.0" 1795 | es6-promisify "^5.0.0" 1796 | eyes "^0.1.8" 1797 | isomorphic-ws "^4.0.1" 1798 | json-stringify-safe "^5.0.1" 1799 | lodash "^4.17.20" 1800 | uuid "^8.3.2" 1801 | ws "^7.4.5" 1802 | 1803 | jest-changed-files@^27.5.1: 1804 | version "27.5.1" 1805 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" 1806 | integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== 1807 | dependencies: 1808 | "@jest/types" "^27.5.1" 1809 | execa "^5.0.0" 1810 | throat "^6.0.1" 1811 | 1812 | jest-circus@^27.5.1: 1813 | version "27.5.1" 1814 | resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" 1815 | integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== 1816 | dependencies: 1817 | "@jest/environment" "^27.5.1" 1818 | "@jest/test-result" "^27.5.1" 1819 | "@jest/types" "^27.5.1" 1820 | "@types/node" "*" 1821 | chalk "^4.0.0" 1822 | co "^4.6.0" 1823 | dedent "^0.7.0" 1824 | expect "^27.5.1" 1825 | is-generator-fn "^2.0.0" 1826 | jest-each "^27.5.1" 1827 | jest-matcher-utils "^27.5.1" 1828 | jest-message-util "^27.5.1" 1829 | jest-runtime "^27.5.1" 1830 | jest-snapshot "^27.5.1" 1831 | jest-util "^27.5.1" 1832 | pretty-format "^27.5.1" 1833 | slash "^3.0.0" 1834 | stack-utils "^2.0.3" 1835 | throat "^6.0.1" 1836 | 1837 | jest-cli@^27.5.1: 1838 | version "27.5.1" 1839 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" 1840 | integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== 1841 | dependencies: 1842 | "@jest/core" "^27.5.1" 1843 | "@jest/test-result" "^27.5.1" 1844 | "@jest/types" "^27.5.1" 1845 | chalk "^4.0.0" 1846 | exit "^0.1.2" 1847 | graceful-fs "^4.2.9" 1848 | import-local "^3.0.2" 1849 | jest-config "^27.5.1" 1850 | jest-util "^27.5.1" 1851 | jest-validate "^27.5.1" 1852 | prompts "^2.0.1" 1853 | yargs "^16.2.0" 1854 | 1855 | jest-config@^27.5.1: 1856 | version "27.5.1" 1857 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" 1858 | integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== 1859 | dependencies: 1860 | "@babel/core" "^7.8.0" 1861 | "@jest/test-sequencer" "^27.5.1" 1862 | "@jest/types" "^27.5.1" 1863 | babel-jest "^27.5.1" 1864 | chalk "^4.0.0" 1865 | ci-info "^3.2.0" 1866 | deepmerge "^4.2.2" 1867 | glob "^7.1.1" 1868 | graceful-fs "^4.2.9" 1869 | jest-circus "^27.5.1" 1870 | jest-environment-jsdom "^27.5.1" 1871 | jest-environment-node "^27.5.1" 1872 | jest-get-type "^27.5.1" 1873 | jest-jasmine2 "^27.5.1" 1874 | jest-regex-util "^27.5.1" 1875 | jest-resolve "^27.5.1" 1876 | jest-runner "^27.5.1" 1877 | jest-util "^27.5.1" 1878 | jest-validate "^27.5.1" 1879 | micromatch "^4.0.4" 1880 | parse-json "^5.2.0" 1881 | pretty-format "^27.5.1" 1882 | slash "^3.0.0" 1883 | strip-json-comments "^3.1.1" 1884 | 1885 | jest-diff@^27.5.1: 1886 | version "27.5.1" 1887 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" 1888 | integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== 1889 | dependencies: 1890 | chalk "^4.0.0" 1891 | diff-sequences "^27.5.1" 1892 | jest-get-type "^27.5.1" 1893 | pretty-format "^27.5.1" 1894 | 1895 | jest-docblock@^27.5.1: 1896 | version "27.5.1" 1897 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" 1898 | integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== 1899 | dependencies: 1900 | detect-newline "^3.0.0" 1901 | 1902 | jest-each@^27.5.1: 1903 | version "27.5.1" 1904 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" 1905 | integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== 1906 | dependencies: 1907 | "@jest/types" "^27.5.1" 1908 | chalk "^4.0.0" 1909 | jest-get-type "^27.5.1" 1910 | jest-util "^27.5.1" 1911 | pretty-format "^27.5.1" 1912 | 1913 | jest-environment-jsdom@^27.5.1: 1914 | version "27.5.1" 1915 | resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" 1916 | integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== 1917 | dependencies: 1918 | "@jest/environment" "^27.5.1" 1919 | "@jest/fake-timers" "^27.5.1" 1920 | "@jest/types" "^27.5.1" 1921 | "@types/node" "*" 1922 | jest-mock "^27.5.1" 1923 | jest-util "^27.5.1" 1924 | jsdom "^16.6.0" 1925 | 1926 | jest-environment-node@^27.5.1: 1927 | version "27.5.1" 1928 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" 1929 | integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== 1930 | dependencies: 1931 | "@jest/environment" "^27.5.1" 1932 | "@jest/fake-timers" "^27.5.1" 1933 | "@jest/types" "^27.5.1" 1934 | "@types/node" "*" 1935 | jest-mock "^27.5.1" 1936 | jest-util "^27.5.1" 1937 | 1938 | jest-get-type@^27.5.1: 1939 | version "27.5.1" 1940 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" 1941 | integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== 1942 | 1943 | jest-haste-map@^27.5.1: 1944 | version "27.5.1" 1945 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" 1946 | integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== 1947 | dependencies: 1948 | "@jest/types" "^27.5.1" 1949 | "@types/graceful-fs" "^4.1.2" 1950 | "@types/node" "*" 1951 | anymatch "^3.0.3" 1952 | fb-watchman "^2.0.0" 1953 | graceful-fs "^4.2.9" 1954 | jest-regex-util "^27.5.1" 1955 | jest-serializer "^27.5.1" 1956 | jest-util "^27.5.1" 1957 | jest-worker "^27.5.1" 1958 | micromatch "^4.0.4" 1959 | walker "^1.0.7" 1960 | optionalDependencies: 1961 | fsevents "^2.3.2" 1962 | 1963 | jest-jasmine2@^27.5.1: 1964 | version "27.5.1" 1965 | resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" 1966 | integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== 1967 | dependencies: 1968 | "@jest/environment" "^27.5.1" 1969 | "@jest/source-map" "^27.5.1" 1970 | "@jest/test-result" "^27.5.1" 1971 | "@jest/types" "^27.5.1" 1972 | "@types/node" "*" 1973 | chalk "^4.0.0" 1974 | co "^4.6.0" 1975 | expect "^27.5.1" 1976 | is-generator-fn "^2.0.0" 1977 | jest-each "^27.5.1" 1978 | jest-matcher-utils "^27.5.1" 1979 | jest-message-util "^27.5.1" 1980 | jest-runtime "^27.5.1" 1981 | jest-snapshot "^27.5.1" 1982 | jest-util "^27.5.1" 1983 | pretty-format "^27.5.1" 1984 | throat "^6.0.1" 1985 | 1986 | jest-leak-detector@^27.5.1: 1987 | version "27.5.1" 1988 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" 1989 | integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== 1990 | dependencies: 1991 | jest-get-type "^27.5.1" 1992 | pretty-format "^27.5.1" 1993 | 1994 | jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: 1995 | version "27.5.1" 1996 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" 1997 | integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== 1998 | dependencies: 1999 | chalk "^4.0.0" 2000 | jest-diff "^27.5.1" 2001 | jest-get-type "^27.5.1" 2002 | pretty-format "^27.5.1" 2003 | 2004 | jest-message-util@^27.5.1: 2005 | version "27.5.1" 2006 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" 2007 | integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== 2008 | dependencies: 2009 | "@babel/code-frame" "^7.12.13" 2010 | "@jest/types" "^27.5.1" 2011 | "@types/stack-utils" "^2.0.0" 2012 | chalk "^4.0.0" 2013 | graceful-fs "^4.2.9" 2014 | micromatch "^4.0.4" 2015 | pretty-format "^27.5.1" 2016 | slash "^3.0.0" 2017 | stack-utils "^2.0.3" 2018 | 2019 | jest-mock@^27.5.1: 2020 | version "27.5.1" 2021 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" 2022 | integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== 2023 | dependencies: 2024 | "@jest/types" "^27.5.1" 2025 | "@types/node" "*" 2026 | 2027 | jest-pnp-resolver@^1.2.2: 2028 | version "1.2.2" 2029 | resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" 2030 | integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== 2031 | 2032 | jest-regex-util@^27.5.1: 2033 | version "27.5.1" 2034 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" 2035 | integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== 2036 | 2037 | jest-resolve-dependencies@^27.5.1: 2038 | version "27.5.1" 2039 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" 2040 | integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== 2041 | dependencies: 2042 | "@jest/types" "^27.5.1" 2043 | jest-regex-util "^27.5.1" 2044 | jest-snapshot "^27.5.1" 2045 | 2046 | jest-resolve@^27.5.1: 2047 | version "27.5.1" 2048 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" 2049 | integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== 2050 | dependencies: 2051 | "@jest/types" "^27.5.1" 2052 | chalk "^4.0.0" 2053 | graceful-fs "^4.2.9" 2054 | jest-haste-map "^27.5.1" 2055 | jest-pnp-resolver "^1.2.2" 2056 | jest-util "^27.5.1" 2057 | jest-validate "^27.5.1" 2058 | resolve "^1.20.0" 2059 | resolve.exports "^1.1.0" 2060 | slash "^3.0.0" 2061 | 2062 | jest-runner@^27.5.1: 2063 | version "27.5.1" 2064 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" 2065 | integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== 2066 | dependencies: 2067 | "@jest/console" "^27.5.1" 2068 | "@jest/environment" "^27.5.1" 2069 | "@jest/test-result" "^27.5.1" 2070 | "@jest/transform" "^27.5.1" 2071 | "@jest/types" "^27.5.1" 2072 | "@types/node" "*" 2073 | chalk "^4.0.0" 2074 | emittery "^0.8.1" 2075 | graceful-fs "^4.2.9" 2076 | jest-docblock "^27.5.1" 2077 | jest-environment-jsdom "^27.5.1" 2078 | jest-environment-node "^27.5.1" 2079 | jest-haste-map "^27.5.1" 2080 | jest-leak-detector "^27.5.1" 2081 | jest-message-util "^27.5.1" 2082 | jest-resolve "^27.5.1" 2083 | jest-runtime "^27.5.1" 2084 | jest-util "^27.5.1" 2085 | jest-worker "^27.5.1" 2086 | source-map-support "^0.5.6" 2087 | throat "^6.0.1" 2088 | 2089 | jest-runtime@^27.5.1: 2090 | version "27.5.1" 2091 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" 2092 | integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== 2093 | dependencies: 2094 | "@jest/environment" "^27.5.1" 2095 | "@jest/fake-timers" "^27.5.1" 2096 | "@jest/globals" "^27.5.1" 2097 | "@jest/source-map" "^27.5.1" 2098 | "@jest/test-result" "^27.5.1" 2099 | "@jest/transform" "^27.5.1" 2100 | "@jest/types" "^27.5.1" 2101 | chalk "^4.0.0" 2102 | cjs-module-lexer "^1.0.0" 2103 | collect-v8-coverage "^1.0.0" 2104 | execa "^5.0.0" 2105 | glob "^7.1.3" 2106 | graceful-fs "^4.2.9" 2107 | jest-haste-map "^27.5.1" 2108 | jest-message-util "^27.5.1" 2109 | jest-mock "^27.5.1" 2110 | jest-regex-util "^27.5.1" 2111 | jest-resolve "^27.5.1" 2112 | jest-snapshot "^27.5.1" 2113 | jest-util "^27.5.1" 2114 | slash "^3.0.0" 2115 | strip-bom "^4.0.0" 2116 | 2117 | jest-serializer@^27.5.1: 2118 | version "27.5.1" 2119 | resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" 2120 | integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== 2121 | dependencies: 2122 | "@types/node" "*" 2123 | graceful-fs "^4.2.9" 2124 | 2125 | jest-snapshot@^27.5.1: 2126 | version "27.5.1" 2127 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" 2128 | integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== 2129 | dependencies: 2130 | "@babel/core" "^7.7.2" 2131 | "@babel/generator" "^7.7.2" 2132 | "@babel/plugin-syntax-typescript" "^7.7.2" 2133 | "@babel/traverse" "^7.7.2" 2134 | "@babel/types" "^7.0.0" 2135 | "@jest/transform" "^27.5.1" 2136 | "@jest/types" "^27.5.1" 2137 | "@types/babel__traverse" "^7.0.4" 2138 | "@types/prettier" "^2.1.5" 2139 | babel-preset-current-node-syntax "^1.0.0" 2140 | chalk "^4.0.0" 2141 | expect "^27.5.1" 2142 | graceful-fs "^4.2.9" 2143 | jest-diff "^27.5.1" 2144 | jest-get-type "^27.5.1" 2145 | jest-haste-map "^27.5.1" 2146 | jest-matcher-utils "^27.5.1" 2147 | jest-message-util "^27.5.1" 2148 | jest-util "^27.5.1" 2149 | natural-compare "^1.4.0" 2150 | pretty-format "^27.5.1" 2151 | semver "^7.3.2" 2152 | 2153 | jest-util@^27.0.0, jest-util@^27.5.1: 2154 | version "27.5.1" 2155 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" 2156 | integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== 2157 | dependencies: 2158 | "@jest/types" "^27.5.1" 2159 | "@types/node" "*" 2160 | chalk "^4.0.0" 2161 | ci-info "^3.2.0" 2162 | graceful-fs "^4.2.9" 2163 | picomatch "^2.2.3" 2164 | 2165 | jest-validate@^27.5.1: 2166 | version "27.5.1" 2167 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" 2168 | integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== 2169 | dependencies: 2170 | "@jest/types" "^27.5.1" 2171 | camelcase "^6.2.0" 2172 | chalk "^4.0.0" 2173 | jest-get-type "^27.5.1" 2174 | leven "^3.1.0" 2175 | pretty-format "^27.5.1" 2176 | 2177 | jest-watcher@^27.5.1: 2178 | version "27.5.1" 2179 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" 2180 | integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== 2181 | dependencies: 2182 | "@jest/test-result" "^27.5.1" 2183 | "@jest/types" "^27.5.1" 2184 | "@types/node" "*" 2185 | ansi-escapes "^4.2.1" 2186 | chalk "^4.0.0" 2187 | jest-util "^27.5.1" 2188 | string-length "^4.0.1" 2189 | 2190 | jest-worker@^27.5.1: 2191 | version "27.5.1" 2192 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" 2193 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 2194 | dependencies: 2195 | "@types/node" "*" 2196 | merge-stream "^2.0.0" 2197 | supports-color "^8.0.0" 2198 | 2199 | jest@^27.5.1: 2200 | version "27.5.1" 2201 | resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" 2202 | integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== 2203 | dependencies: 2204 | "@jest/core" "^27.5.1" 2205 | import-local "^3.0.2" 2206 | jest-cli "^27.5.1" 2207 | 2208 | js-sha256@^0.9.0: 2209 | version "0.9.0" 2210 | resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" 2211 | integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== 2212 | 2213 | js-sha3@^0.8.0: 2214 | version "0.8.0" 2215 | resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" 2216 | integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== 2217 | 2218 | js-tokens@^4.0.0: 2219 | version "4.0.0" 2220 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 2221 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 2222 | 2223 | js-yaml@^3.13.1: 2224 | version "3.14.1" 2225 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 2226 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 2227 | dependencies: 2228 | argparse "^1.0.7" 2229 | esprima "^4.0.0" 2230 | 2231 | jsdom@^16.6.0: 2232 | version "16.7.0" 2233 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" 2234 | integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== 2235 | dependencies: 2236 | abab "^2.0.5" 2237 | acorn "^8.2.4" 2238 | acorn-globals "^6.0.0" 2239 | cssom "^0.4.4" 2240 | cssstyle "^2.3.0" 2241 | data-urls "^2.0.0" 2242 | decimal.js "^10.2.1" 2243 | domexception "^2.0.1" 2244 | escodegen "^2.0.0" 2245 | form-data "^3.0.0" 2246 | html-encoding-sniffer "^2.0.1" 2247 | http-proxy-agent "^4.0.1" 2248 | https-proxy-agent "^5.0.0" 2249 | is-potential-custom-element-name "^1.0.1" 2250 | nwsapi "^2.2.0" 2251 | parse5 "6.0.1" 2252 | saxes "^5.0.1" 2253 | symbol-tree "^3.2.4" 2254 | tough-cookie "^4.0.0" 2255 | w3c-hr-time "^1.0.2" 2256 | w3c-xmlserializer "^2.0.0" 2257 | webidl-conversions "^6.1.0" 2258 | whatwg-encoding "^1.0.5" 2259 | whatwg-mimetype "^2.3.0" 2260 | whatwg-url "^8.5.0" 2261 | ws "^7.4.6" 2262 | xml-name-validator "^3.0.0" 2263 | 2264 | jsesc@^2.5.1: 2265 | version "2.5.2" 2266 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 2267 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 2268 | 2269 | json-parse-even-better-errors@^2.3.0: 2270 | version "2.3.1" 2271 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 2272 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 2273 | 2274 | json-stringify-safe@^5.0.1: 2275 | version "5.0.1" 2276 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 2277 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 2278 | 2279 | json5@2.x, json5@^2.2.1: 2280 | version "2.2.1" 2281 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" 2282 | integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== 2283 | 2284 | jsonparse@^1.2.0: 2285 | version "1.3.1" 2286 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" 2287 | integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= 2288 | 2289 | kleur@^3.0.3: 2290 | version "3.0.3" 2291 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" 2292 | integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== 2293 | 2294 | leven@^3.1.0: 2295 | version "3.1.0" 2296 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 2297 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 2298 | 2299 | levn@~0.3.0: 2300 | version "0.3.0" 2301 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 2302 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 2303 | dependencies: 2304 | prelude-ls "~1.1.2" 2305 | type-check "~0.3.2" 2306 | 2307 | lines-and-columns@^1.1.6: 2308 | version "1.2.4" 2309 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 2310 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 2311 | 2312 | locate-path@^5.0.0: 2313 | version "5.0.0" 2314 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 2315 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 2316 | dependencies: 2317 | p-locate "^4.1.0" 2318 | 2319 | lodash.memoize@4.x: 2320 | version "4.1.2" 2321 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" 2322 | integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= 2323 | 2324 | lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: 2325 | version "4.17.21" 2326 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 2327 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 2328 | 2329 | lower-case@^2.0.2: 2330 | version "2.0.2" 2331 | resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" 2332 | integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== 2333 | dependencies: 2334 | tslib "^2.0.3" 2335 | 2336 | lru-cache@^6.0.0: 2337 | version "6.0.0" 2338 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 2339 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 2340 | dependencies: 2341 | yallist "^4.0.0" 2342 | 2343 | make-dir@^3.0.0: 2344 | version "3.1.0" 2345 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 2346 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 2347 | dependencies: 2348 | semver "^6.0.0" 2349 | 2350 | make-error@1.x, make-error@^1.1.1: 2351 | version "1.3.6" 2352 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 2353 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 2354 | 2355 | makeerror@1.0.12: 2356 | version "1.0.12" 2357 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" 2358 | integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== 2359 | dependencies: 2360 | tmpl "1.0.5" 2361 | 2362 | merge-stream@^2.0.0: 2363 | version "2.0.0" 2364 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 2365 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 2366 | 2367 | micromatch@^4.0.4: 2368 | version "4.0.5" 2369 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 2370 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 2371 | dependencies: 2372 | braces "^3.0.2" 2373 | picomatch "^2.3.1" 2374 | 2375 | mime-db@1.52.0: 2376 | version "1.52.0" 2377 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 2378 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 2379 | 2380 | mime-types@^2.1.12: 2381 | version "2.1.35" 2382 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 2383 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 2384 | dependencies: 2385 | mime-db "1.52.0" 2386 | 2387 | mimic-fn@^2.1.0: 2388 | version "2.1.0" 2389 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 2390 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 2391 | 2392 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 2393 | version "1.0.1" 2394 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 2395 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 2396 | 2397 | minimalistic-crypto-utils@^1.0.1: 2398 | version "1.0.1" 2399 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 2400 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 2401 | 2402 | minimatch@^3.0.4: 2403 | version "3.1.2" 2404 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 2405 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 2406 | dependencies: 2407 | brace-expansion "^1.1.7" 2408 | 2409 | ms@2.1.2: 2410 | version "2.1.2" 2411 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2412 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2413 | 2414 | natural-compare@^1.4.0: 2415 | version "1.4.0" 2416 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2417 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 2418 | 2419 | no-case@^3.0.4: 2420 | version "3.0.4" 2421 | resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" 2422 | integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== 2423 | dependencies: 2424 | lower-case "^2.0.2" 2425 | tslib "^2.0.3" 2426 | 2427 | node-addon-api@^2.0.0: 2428 | version "2.0.2" 2429 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" 2430 | integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== 2431 | 2432 | node-fetch@2.6.7: 2433 | version "2.6.7" 2434 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 2435 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 2436 | dependencies: 2437 | whatwg-url "^5.0.0" 2438 | 2439 | node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: 2440 | version "4.4.0" 2441 | resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" 2442 | integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== 2443 | 2444 | node-int64@^0.4.0: 2445 | version "0.4.0" 2446 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 2447 | integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= 2448 | 2449 | node-releases@^2.0.2: 2450 | version "2.0.3" 2451 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96" 2452 | integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw== 2453 | 2454 | normalize-path@^3.0.0: 2455 | version "3.0.0" 2456 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2457 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2458 | 2459 | npm-run-path@^4.0.1: 2460 | version "4.0.1" 2461 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 2462 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 2463 | dependencies: 2464 | path-key "^3.0.0" 2465 | 2466 | nwsapi@^2.2.0: 2467 | version "2.2.0" 2468 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" 2469 | integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== 2470 | 2471 | once@^1.3.0: 2472 | version "1.4.0" 2473 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2474 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2475 | dependencies: 2476 | wrappy "1" 2477 | 2478 | onetime@^5.1.2: 2479 | version "5.1.2" 2480 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 2481 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 2482 | dependencies: 2483 | mimic-fn "^2.1.0" 2484 | 2485 | optionator@^0.8.1: 2486 | version "0.8.3" 2487 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 2488 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== 2489 | dependencies: 2490 | deep-is "~0.1.3" 2491 | fast-levenshtein "~2.0.6" 2492 | levn "~0.3.0" 2493 | prelude-ls "~1.1.2" 2494 | type-check "~0.3.2" 2495 | word-wrap "~1.2.3" 2496 | 2497 | p-limit@^2.2.0: 2498 | version "2.3.0" 2499 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 2500 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 2501 | dependencies: 2502 | p-try "^2.0.0" 2503 | 2504 | p-locate@^4.1.0: 2505 | version "4.1.0" 2506 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 2507 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 2508 | dependencies: 2509 | p-limit "^2.2.0" 2510 | 2511 | p-try@^2.0.0: 2512 | version "2.2.0" 2513 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 2514 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 2515 | 2516 | pako@^2.0.3: 2517 | version "2.0.4" 2518 | resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.4.tgz#6cebc4bbb0b6c73b0d5b8d7e8476e2b2fbea576d" 2519 | integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg== 2520 | 2521 | parse-json@^5.2.0: 2522 | version "5.2.0" 2523 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 2524 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 2525 | dependencies: 2526 | "@babel/code-frame" "^7.0.0" 2527 | error-ex "^1.3.1" 2528 | json-parse-even-better-errors "^2.3.0" 2529 | lines-and-columns "^1.1.6" 2530 | 2531 | parse5@6.0.1: 2532 | version "6.0.1" 2533 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 2534 | integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== 2535 | 2536 | path-exists@^4.0.0: 2537 | version "4.0.0" 2538 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2539 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2540 | 2541 | path-is-absolute@^1.0.0: 2542 | version "1.0.1" 2543 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2544 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2545 | 2546 | path-key@^3.0.0, path-key@^3.1.0: 2547 | version "3.1.1" 2548 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2549 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2550 | 2551 | path-parse@^1.0.7: 2552 | version "1.0.7" 2553 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 2554 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 2555 | 2556 | picocolors@^1.0.0: 2557 | version "1.0.0" 2558 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 2559 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 2560 | 2561 | picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: 2562 | version "2.3.1" 2563 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 2564 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 2565 | 2566 | pirates@^4.0.4: 2567 | version "4.0.5" 2568 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" 2569 | integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== 2570 | 2571 | pkg-dir@^4.2.0: 2572 | version "4.2.0" 2573 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 2574 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 2575 | dependencies: 2576 | find-up "^4.0.0" 2577 | 2578 | prelude-ls@~1.1.2: 2579 | version "1.1.2" 2580 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2581 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 2582 | 2583 | pretty-format@^27.0.0, pretty-format@^27.5.1: 2584 | version "27.5.1" 2585 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" 2586 | integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== 2587 | dependencies: 2588 | ansi-regex "^5.0.1" 2589 | ansi-styles "^5.0.0" 2590 | react-is "^17.0.1" 2591 | 2592 | prompts@^2.0.1: 2593 | version "2.4.2" 2594 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" 2595 | integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== 2596 | dependencies: 2597 | kleur "^3.0.3" 2598 | sisteransi "^1.0.5" 2599 | 2600 | psl@^1.1.33: 2601 | version "1.8.0" 2602 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 2603 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 2604 | 2605 | punycode@^2.1.1: 2606 | version "2.1.1" 2607 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2608 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2609 | 2610 | react-is@^17.0.1: 2611 | version "17.0.2" 2612 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" 2613 | integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== 2614 | 2615 | regenerator-runtime@^0.13.4: 2616 | version "0.13.9" 2617 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" 2618 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== 2619 | 2620 | require-directory@^2.1.1: 2621 | version "2.1.1" 2622 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2623 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 2624 | 2625 | resolve-cwd@^3.0.0: 2626 | version "3.0.0" 2627 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 2628 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 2629 | dependencies: 2630 | resolve-from "^5.0.0" 2631 | 2632 | resolve-from@^5.0.0: 2633 | version "5.0.0" 2634 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 2635 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 2636 | 2637 | resolve.exports@^1.1.0: 2638 | version "1.1.0" 2639 | resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" 2640 | integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== 2641 | 2642 | resolve@^1.20.0: 2643 | version "1.22.0" 2644 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 2645 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 2646 | dependencies: 2647 | is-core-module "^2.8.1" 2648 | path-parse "^1.0.7" 2649 | supports-preserve-symlinks-flag "^1.0.0" 2650 | 2651 | rimraf@^3.0.0: 2652 | version "3.0.2" 2653 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2654 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 2655 | dependencies: 2656 | glob "^7.1.3" 2657 | 2658 | rpc-websockets@^7.4.2: 2659 | version "7.4.17" 2660 | resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.4.17.tgz#f38845dd96db0442bff9e15fba9df781beb44cc0" 2661 | integrity sha512-eolVi/qlXS13viIUH9aqrde902wzSLAai0IjmOZSRefp5I3CSG/vCnD0c0fDSYCWuEyUoRL1BHQA8K1baEUyow== 2662 | dependencies: 2663 | "@babel/runtime" "^7.11.2" 2664 | circular-json "^0.5.9" 2665 | eventemitter3 "^4.0.7" 2666 | uuid "^8.3.0" 2667 | ws "^7.4.5" 2668 | optionalDependencies: 2669 | bufferutil "^4.0.1" 2670 | utf-8-validate "^5.0.2" 2671 | 2672 | safe-buffer@^5.0.1: 2673 | version "5.2.1" 2674 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 2675 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 2676 | 2677 | safe-buffer@~5.1.1: 2678 | version "5.1.2" 2679 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2680 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2681 | 2682 | "safer-buffer@>= 2.1.2 < 3": 2683 | version "2.1.2" 2684 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2685 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2686 | 2687 | saxes@^5.0.1: 2688 | version "5.0.1" 2689 | resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" 2690 | integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== 2691 | dependencies: 2692 | xmlchars "^2.2.0" 2693 | 2694 | secp256k1@^4.0.2: 2695 | version "4.0.3" 2696 | resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" 2697 | integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== 2698 | dependencies: 2699 | elliptic "^6.5.4" 2700 | node-addon-api "^2.0.0" 2701 | node-gyp-build "^4.2.0" 2702 | 2703 | semver@7.x, semver@^7.3.2: 2704 | version "7.3.7" 2705 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" 2706 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== 2707 | dependencies: 2708 | lru-cache "^6.0.0" 2709 | 2710 | semver@^6.0.0, semver@^6.3.0: 2711 | version "6.3.0" 2712 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2713 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2714 | 2715 | shebang-command@^2.0.0: 2716 | version "2.0.0" 2717 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2718 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2719 | dependencies: 2720 | shebang-regex "^3.0.0" 2721 | 2722 | shebang-regex@^3.0.0: 2723 | version "3.0.0" 2724 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2725 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2726 | 2727 | signal-exit@^3.0.2, signal-exit@^3.0.3: 2728 | version "3.0.7" 2729 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 2730 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 2731 | 2732 | sinon-chai@^3.7.0: 2733 | version "3.7.0" 2734 | resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.7.0.tgz#cfb7dec1c50990ed18c153f1840721cf13139783" 2735 | integrity sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g== 2736 | 2737 | sisteransi@^1.0.5: 2738 | version "1.0.5" 2739 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" 2740 | integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== 2741 | 2742 | slash@^3.0.0: 2743 | version "3.0.0" 2744 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2745 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2746 | 2747 | snake-case@^3.0.4: 2748 | version "3.0.4" 2749 | resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" 2750 | integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== 2751 | dependencies: 2752 | dot-case "^3.0.4" 2753 | tslib "^2.0.3" 2754 | 2755 | source-map-support@^0.5.6: 2756 | version "0.5.21" 2757 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 2758 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 2759 | dependencies: 2760 | buffer-from "^1.0.0" 2761 | source-map "^0.6.0" 2762 | 2763 | source-map@^0.5.0: 2764 | version "0.5.7" 2765 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2766 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2767 | 2768 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: 2769 | version "0.6.1" 2770 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2771 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2772 | 2773 | source-map@^0.7.3: 2774 | version "0.7.3" 2775 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 2776 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 2777 | 2778 | sprintf-js@~1.0.2: 2779 | version "1.0.3" 2780 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2781 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2782 | 2783 | stack-utils@^2.0.3: 2784 | version "2.0.5" 2785 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" 2786 | integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== 2787 | dependencies: 2788 | escape-string-regexp "^2.0.0" 2789 | 2790 | string-length@^4.0.1: 2791 | version "4.0.2" 2792 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" 2793 | integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== 2794 | dependencies: 2795 | char-regex "^1.0.2" 2796 | strip-ansi "^6.0.0" 2797 | 2798 | string-width@^4.1.0, string-width@^4.2.0: 2799 | version "4.2.3" 2800 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2801 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2802 | dependencies: 2803 | emoji-regex "^8.0.0" 2804 | is-fullwidth-code-point "^3.0.0" 2805 | strip-ansi "^6.0.1" 2806 | 2807 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 2808 | version "6.0.1" 2809 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2810 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2811 | dependencies: 2812 | ansi-regex "^5.0.1" 2813 | 2814 | strip-bom@^4.0.0: 2815 | version "4.0.0" 2816 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 2817 | integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 2818 | 2819 | strip-final-newline@^2.0.0: 2820 | version "2.0.0" 2821 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 2822 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 2823 | 2824 | strip-json-comments@^3.1.1: 2825 | version "3.1.1" 2826 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2827 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2828 | 2829 | superstruct@^0.14.2: 2830 | version "0.14.2" 2831 | resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b" 2832 | integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ== 2833 | 2834 | supports-color@^5.3.0: 2835 | version "5.5.0" 2836 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2837 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2838 | dependencies: 2839 | has-flag "^3.0.0" 2840 | 2841 | supports-color@^7.0.0, supports-color@^7.1.0: 2842 | version "7.2.0" 2843 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2844 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2845 | dependencies: 2846 | has-flag "^4.0.0" 2847 | 2848 | supports-color@^8.0.0: 2849 | version "8.1.1" 2850 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 2851 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 2852 | dependencies: 2853 | has-flag "^4.0.0" 2854 | 2855 | supports-hyperlinks@^2.0.0: 2856 | version "2.2.0" 2857 | resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" 2858 | integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== 2859 | dependencies: 2860 | has-flag "^4.0.0" 2861 | supports-color "^7.0.0" 2862 | 2863 | supports-preserve-symlinks-flag@^1.0.0: 2864 | version "1.0.0" 2865 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 2866 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 2867 | 2868 | symbol-tree@^3.2.4: 2869 | version "3.2.4" 2870 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" 2871 | integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== 2872 | 2873 | terminal-link@^2.0.0: 2874 | version "2.1.1" 2875 | resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" 2876 | integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== 2877 | dependencies: 2878 | ansi-escapes "^4.2.1" 2879 | supports-hyperlinks "^2.0.0" 2880 | 2881 | test-exclude@^6.0.0: 2882 | version "6.0.0" 2883 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 2884 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 2885 | dependencies: 2886 | "@istanbuljs/schema" "^0.1.2" 2887 | glob "^7.1.4" 2888 | minimatch "^3.0.4" 2889 | 2890 | text-encoding-utf-8@^1.0.2: 2891 | version "1.0.2" 2892 | resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" 2893 | integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== 2894 | 2895 | throat@^6.0.1: 2896 | version "6.0.1" 2897 | resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" 2898 | integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== 2899 | 2900 | "through@>=2.2.7 <3": 2901 | version "2.3.8" 2902 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2903 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2904 | 2905 | tmpl@1.0.5: 2906 | version "1.0.5" 2907 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" 2908 | integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== 2909 | 2910 | to-fast-properties@^2.0.0: 2911 | version "2.0.0" 2912 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2913 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 2914 | 2915 | to-regex-range@^5.0.1: 2916 | version "5.0.1" 2917 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2918 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2919 | dependencies: 2920 | is-number "^7.0.0" 2921 | 2922 | toml@^3.0.0: 2923 | version "3.0.0" 2924 | resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" 2925 | integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== 2926 | 2927 | tough-cookie@^4.0.0: 2928 | version "4.0.0" 2929 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" 2930 | integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== 2931 | dependencies: 2932 | psl "^1.1.33" 2933 | punycode "^2.1.1" 2934 | universalify "^0.1.2" 2935 | 2936 | tr46@^2.1.0: 2937 | version "2.1.0" 2938 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" 2939 | integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== 2940 | dependencies: 2941 | punycode "^2.1.1" 2942 | 2943 | tr46@~0.0.3: 2944 | version "0.0.3" 2945 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 2946 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= 2947 | 2948 | ts-jest@^27.1.3: 2949 | version "27.1.4" 2950 | resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.4.tgz#84d42cf0f4e7157a52e7c64b1492c46330943e00" 2951 | integrity sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ== 2952 | dependencies: 2953 | bs-logger "0.x" 2954 | fast-json-stable-stringify "2.x" 2955 | jest-util "^27.0.0" 2956 | json5 "2.x" 2957 | lodash.memoize "4.x" 2958 | make-error "1.x" 2959 | semver "7.x" 2960 | yargs-parser "20.x" 2961 | 2962 | ts-node@^10.5.0: 2963 | version "10.7.0" 2964 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" 2965 | integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A== 2966 | dependencies: 2967 | "@cspotcode/source-map-support" "0.7.0" 2968 | "@tsconfig/node10" "^1.0.7" 2969 | "@tsconfig/node12" "^1.0.7" 2970 | "@tsconfig/node14" "^1.0.0" 2971 | "@tsconfig/node16" "^1.0.2" 2972 | acorn "^8.4.1" 2973 | acorn-walk "^8.1.1" 2974 | arg "^4.1.0" 2975 | create-require "^1.1.0" 2976 | diff "^4.0.1" 2977 | make-error "^1.1.1" 2978 | v8-compile-cache-lib "^3.0.0" 2979 | yn "3.1.1" 2980 | 2981 | tslib@^2.0.3: 2982 | version "2.3.1" 2983 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" 2984 | integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== 2985 | 2986 | tweetnacl@^1.0.0: 2987 | version "1.0.3" 2988 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" 2989 | integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== 2990 | 2991 | type-check@~0.3.2: 2992 | version "0.3.2" 2993 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2994 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 2995 | dependencies: 2996 | prelude-ls "~1.1.2" 2997 | 2998 | type-detect@4.0.8: 2999 | version "4.0.8" 3000 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 3001 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 3002 | 3003 | type-fest@^0.21.3: 3004 | version "0.21.3" 3005 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 3006 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 3007 | 3008 | typedarray-to-buffer@^3.1.5: 3009 | version "3.1.5" 3010 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 3011 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 3012 | dependencies: 3013 | is-typedarray "^1.0.0" 3014 | 3015 | typescript@^4.5.5: 3016 | version "4.6.3" 3017 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" 3018 | integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== 3019 | 3020 | universalify@^0.1.2: 3021 | version "0.1.2" 3022 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 3023 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 3024 | 3025 | utf-8-validate@^5.0.2: 3026 | version "5.0.9" 3027 | resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" 3028 | integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== 3029 | dependencies: 3030 | node-gyp-build "^4.3.0" 3031 | 3032 | uuid@^8.3.0, uuid@^8.3.2: 3033 | version "8.3.2" 3034 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 3035 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 3036 | 3037 | v8-compile-cache-lib@^3.0.0: 3038 | version "3.0.1" 3039 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 3040 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 3041 | 3042 | v8-to-istanbul@^8.1.0: 3043 | version "8.1.1" 3044 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" 3045 | integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== 3046 | dependencies: 3047 | "@types/istanbul-lib-coverage" "^2.0.1" 3048 | convert-source-map "^1.6.0" 3049 | source-map "^0.7.3" 3050 | 3051 | w3c-hr-time@^1.0.2: 3052 | version "1.0.2" 3053 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" 3054 | integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== 3055 | dependencies: 3056 | browser-process-hrtime "^1.0.0" 3057 | 3058 | w3c-xmlserializer@^2.0.0: 3059 | version "2.0.0" 3060 | resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" 3061 | integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== 3062 | dependencies: 3063 | xml-name-validator "^3.0.0" 3064 | 3065 | walker@^1.0.7: 3066 | version "1.0.8" 3067 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" 3068 | integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== 3069 | dependencies: 3070 | makeerror "1.0.12" 3071 | 3072 | webidl-conversions@^3.0.0: 3073 | version "3.0.1" 3074 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 3075 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= 3076 | 3077 | webidl-conversions@^5.0.0: 3078 | version "5.0.0" 3079 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" 3080 | integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== 3081 | 3082 | webidl-conversions@^6.1.0: 3083 | version "6.1.0" 3084 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" 3085 | integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== 3086 | 3087 | whatwg-encoding@^1.0.5: 3088 | version "1.0.5" 3089 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" 3090 | integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== 3091 | dependencies: 3092 | iconv-lite "0.4.24" 3093 | 3094 | whatwg-mimetype@^2.3.0: 3095 | version "2.3.0" 3096 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" 3097 | integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== 3098 | 3099 | whatwg-url@^5.0.0: 3100 | version "5.0.0" 3101 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 3102 | integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= 3103 | dependencies: 3104 | tr46 "~0.0.3" 3105 | webidl-conversions "^3.0.0" 3106 | 3107 | whatwg-url@^8.0.0, whatwg-url@^8.5.0: 3108 | version "8.7.0" 3109 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" 3110 | integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== 3111 | dependencies: 3112 | lodash "^4.7.0" 3113 | tr46 "^2.1.0" 3114 | webidl-conversions "^6.1.0" 3115 | 3116 | which@^2.0.1: 3117 | version "2.0.2" 3118 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 3119 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 3120 | dependencies: 3121 | isexe "^2.0.0" 3122 | 3123 | word-wrap@~1.2.3: 3124 | version "1.2.3" 3125 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 3126 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 3127 | 3128 | wrap-ansi@^7.0.0: 3129 | version "7.0.0" 3130 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 3131 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 3132 | dependencies: 3133 | ansi-styles "^4.0.0" 3134 | string-width "^4.1.0" 3135 | strip-ansi "^6.0.0" 3136 | 3137 | wrappy@1: 3138 | version "1.0.2" 3139 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3140 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 3141 | 3142 | write-file-atomic@^3.0.0: 3143 | version "3.0.3" 3144 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 3145 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 3146 | dependencies: 3147 | imurmurhash "^0.1.4" 3148 | is-typedarray "^1.0.0" 3149 | signal-exit "^3.0.2" 3150 | typedarray-to-buffer "^3.1.5" 3151 | 3152 | ws@^7.4.5, ws@^7.4.6: 3153 | version "7.5.7" 3154 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" 3155 | integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== 3156 | 3157 | xml-name-validator@^3.0.0: 3158 | version "3.0.0" 3159 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" 3160 | integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== 3161 | 3162 | xmlchars@^2.2.0: 3163 | version "2.2.0" 3164 | resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 3165 | integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 3166 | 3167 | y18n@^5.0.5: 3168 | version "5.0.8" 3169 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 3170 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 3171 | 3172 | yallist@^4.0.0: 3173 | version "4.0.0" 3174 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 3175 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 3176 | 3177 | yargs-parser@20.x, yargs-parser@^20.2.2: 3178 | version "20.2.9" 3179 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 3180 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 3181 | 3182 | yargs@^16.2.0: 3183 | version "16.2.0" 3184 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 3185 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 3186 | dependencies: 3187 | cliui "^7.0.2" 3188 | escalade "^3.1.1" 3189 | get-caller-file "^2.0.5" 3190 | require-directory "^2.1.1" 3191 | string-width "^4.2.0" 3192 | y18n "^5.0.5" 3193 | yargs-parser "^20.2.2" 3194 | 3195 | yn@3.1.1: 3196 | version "3.1.1" 3197 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 3198 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 3199 | --------------------------------------------------------------------------------