├── Cargo.toml ├── programs └── honey_pot │ ├── Xargo.toml │ ├── Cargo.toml │ └── src │ ├── constants.rs │ ├── error.rs │ ├── utils.rs │ ├── account.rs │ └── lib.rs ├── tsconfig.json ├── Anchor.toml ├── migrations └── deploy.ts ├── package.json ├── tests └── honey_pot.ts ├── cli ├── types.ts ├── honey_pot.json └── scripts.ts ├── README.md ├── .gitignore ├── Cargo.lock └── yarn.lock /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "programs/*" 4 | ] 5 | -------------------------------------------------------------------------------- /programs/honey_pot/Xargo.toml: -------------------------------------------------------------------------------- 1 | [target.bpfel-unknown-unknown.dependencies.std] 2 | features = [] 3 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "types": ["mocha", "chai"], 4 | "typeRoots": ["./node_modules/@types"], 5 | "lib": ["es2015"], 6 | "module": "commonjs", 7 | "target": "es6", 8 | "esModuleInterop": true 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Anchor.toml: -------------------------------------------------------------------------------- 1 | [programs.devnet] 2 | honey_pot = "CKyZk5sDQ8hzap6STpCEgWhZC4a5dnnrTAv3pZNRQ98F" 3 | 4 | [registry] 5 | url = "https://anchor.projectserum.com" 6 | 7 | [provider] 8 | cluster = "devnet" 9 | wallet = "/home/fury/Rust/deploy-keypair.json" 10 | 11 | [scripts] 12 | test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts" 13 | -------------------------------------------------------------------------------- /migrations/deploy.ts: -------------------------------------------------------------------------------- 1 | // Migrations are an early feature. Currently, they're nothing more than this 2 | // single deploy script that's invoked from the CLI, injecting a provider 3 | // configured from the workspace's Anchor.toml. 4 | 5 | const anchor = require("@project-serum/anchor"); 6 | 7 | module.exports = async function (provider) { 8 | // Configure client to use the provider. 9 | anchor.setProvider(provider); 10 | 11 | // Add your deploy script here. 12 | } 13 | -------------------------------------------------------------------------------- /programs/honey_pot/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "honey_pot" 3 | version = "0.1.0" 4 | description = "Created with Anchor" 5 | edition = "2018" 6 | 7 | [lib] 8 | crate-type = ["cdylib", "lib"] 9 | name = "honey_pot" 10 | 11 | [features] 12 | no-entrypoint = [] 13 | no-idl = [] 14 | no-log-ix-name = [] 15 | cpi = ["no-entrypoint"] 16 | default = [] 17 | 18 | [dependencies] 19 | anchor-lang = "0.20.1" 20 | anchor-spl = "0.20.1" 21 | spl-token = "3.2.0" 22 | solana-program = "=1.9.5" -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "ts-node": "export ANCHOR_WALLET=/home/fury/Rust/deploy-keypair.json && ts-node ./cli/scripts.ts" 4 | }, 5 | "dependencies": { 6 | "@project-serum/anchor": "^0.20.1", 7 | "@solana/spl-token": "^0.1.8", 8 | "@types/chai": "^4.3.0" 9 | }, 10 | "devDependencies": { 11 | "@types/mocha": "^9.0.0", 12 | "chai": "^4.3.4", 13 | "mocha": "^9.0.3", 14 | "ts-mocha": "^8.0.0", 15 | "typescript": "^4.3.5" 16 | } 17 | } -------------------------------------------------------------------------------- /tests/honey_pot.ts: -------------------------------------------------------------------------------- 1 | import * as anchor from '@project-serum/anchor'; 2 | import { Program } from '@project-serum/anchor'; 3 | import { HoneyPot } from '../target/types/honey_pot'; 4 | 5 | describe('honey_pot', () => { 6 | 7 | // Configure the client to use the local cluster. 8 | anchor.setProvider(anchor.Provider.env()); 9 | 10 | const program = anchor.workspace.HoneyPot as Program; 11 | 12 | it('Is initialized!', async () => { 13 | // Add your test here. 14 | const tx = await program.rpc.initialize({}); 15 | console.log("Your transaction signature", tx); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /programs/honey_pot/src/constants.rs: -------------------------------------------------------------------------------- 1 | pub const DAY: i64 = 60 * 60 * 24; // 1 day 2 | pub const WEEK: i64 = 60 * 60 * 24 * 7; // 1 week 3 | pub const MONTH: i64 = 60 * 60 * 24 * 30; // 1 month 4 | 5 | pub const DEPOSIT_VAULT: u64 = 40_000_000; // 0.04 SOL 6 | pub const DEPOSIT_TREASURY: u64 = 10_000_000; // 0.01 SOL 7 | 8 | pub const TREASURY_WALLET: &str = "Fs8R7R6dP3B7mAJ6QmWZbomBRuTbiJyiR4QYjoxhLdPu"; 9 | 10 | pub const GLOBAL_AUTHORITY_SEED: &str = "global-authority"; 11 | pub const VAULT_AUTHORITY_SEED: &str = "vault-authority"; 12 | pub const RANDOM_SEED: &str = "random-choose"; 13 | 14 | pub const DAILY_SEED: &str = "daily-pot"; 15 | pub const WEEKLY_SEED: &str = "weekly-pot"; 16 | pub const MONTHLY_SEED: &str = "monthly-pot"; 17 | -------------------------------------------------------------------------------- /programs/honey_pot/src/error.rs: -------------------------------------------------------------------------------- 1 | use anchor_lang::prelude::*; 2 | 3 | #[error] 4 | pub enum PotError { 5 | // #[msg("Uninitialized account")] 6 | // Uninitialized, 7 | // #[msg("Invalid Super Owner")] 8 | // InvalidSuperOwner, 9 | #[msg("Invalid Player Pool Owner")] 10 | InvalidPlayerPool, 11 | #[msg("The Owner is not the Winner")] 12 | InvalidOwner, 13 | #[msg("The Owner is not last pot's Winner")] 14 | InvalidWinner, 15 | // #[msg("Invalid NFT Address")] 16 | // InvalidNFTAddress, 17 | // #[msg("Invalid Withdraw Time")] 18 | // InvalidWithdrawTime, 19 | #[msg("Insufficient Reward SOL Balance")] 20 | InsufficientRewardVault, 21 | #[msg("Insufficient PlayerRewardPool SOL Balance")] 22 | InsufficientPlayerVault, 23 | } 24 | -------------------------------------------------------------------------------- /cli/types.ts: -------------------------------------------------------------------------------- 1 | import * as anchor from '@project-serum/anchor'; 2 | import { PublicKey } from '@solana/web3.js'; 3 | 4 | export interface GlobalPool { 5 | superAdmin: PublicKey, 6 | } 7 | 8 | export interface IdPool { 9 | player: PublicKey, 10 | } 11 | 12 | export interface DailyPot { 13 | count: anchor.BN, 14 | startTime: anchor.BN, 15 | prize: anchor.BN, 16 | endTime: anchor.BN, 17 | claimPrize: anchor.BN, 18 | winner: PublicKey, 19 | } 20 | 21 | export interface WeeklyPot { 22 | count: anchor.BN, 23 | startTime: anchor.BN, 24 | prize: anchor.BN, 25 | endTime: anchor.BN, 26 | claimPrize: anchor.BN, 27 | winner: PublicKey, 28 | } 29 | 30 | export interface MonthlyPot { 31 | count: anchor.BN, 32 | startTime: anchor.BN, 33 | prize: anchor.BN, 34 | endTime: anchor.BN, 35 | claimPrize: anchor.BN, 36 | winner: PublicKey, 37 | } -------------------------------------------------------------------------------- /programs/honey_pot/src/utils.rs: -------------------------------------------------------------------------------- 1 | use anchor_lang::prelude::*; 2 | use solana_program::program::{invoke, invoke_signed}; 3 | 4 | // transfer sol 5 | pub fn sol_transfer_with_signer<'a>( 6 | source: AccountInfo<'a>, 7 | destination: AccountInfo<'a>, 8 | system_program: AccountInfo<'a>, 9 | signers: &[&[&[u8]]; 1], 10 | amount: u64, 11 | ) -> Result<(), ProgramError> { 12 | let ix = solana_program::system_instruction::transfer(source.key, destination.key, amount); 13 | invoke_signed(&ix, &[source, destination, system_program], signers) 14 | } 15 | 16 | pub fn sol_transfer_user<'a>( 17 | source: AccountInfo<'a>, 18 | destination: AccountInfo<'a>, 19 | system_program: AccountInfo<'a>, 20 | amount: u64, 21 | ) -> Result<(), ProgramError> { 22 | let ix = solana_program::system_instruction::transfer(source.key, destination.key, amount); 23 | invoke(&ix, &[source, destination, system_program]) 24 | } 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Honey Pot DAO 2 | 3 | Honey Pot DAO is a decentralized lottery system built on the Solana blockchain. The game allows players to enter lotteries by purchasing a "golden ticket," with a portion of the entry fees being allocated to a community treasury. The winner of each pot receives the accumulated funds, with a percentage of each pot being added to the treasury. If you face any issue or need custom development, feel free to reach out of me[Telegram: https://t.me/DevCutup, Whatspp: https://wa.me/13137423660]. 4 | 5 | ### How It Works: 6 | 7 | - **Entry Fee**: Players pay 0.05 $SOL to purchase a golden ticket. 8 | - **Treasury Contribution**: 0.01 $SOL from each entry fee is deposited into the community treasury. 9 | - **Staking**: Players stake their golden ticket for the duration of the pot. 10 | - **Lottery Draw**: At the end of the pot, the wallet holding the winning ticket receives the entire pot's contents. 11 | - **Community Treasury**: 10% of every pot is added to the community treasury. 12 | - **Pot Variations**: There are daily, weekly, and monthly pots. Over time, additional pots with varying ticket prices, time limits, and entry rules will be introduced. 13 | 14 | 15 | ## Installation 16 | 17 | ```bash 18 | git clone https://github.com/cutupdev/DAO-Solana-Smart-Contract.git 19 | ``` 20 | 21 | ```bash 22 | cd ./DAO-Solana-Smart-Contract 23 | ``` 24 | 25 | ```bash 26 | npm run install 27 | ``` 28 | 29 | - For smart contract deployment: 30 | ```bash 31 | anchor build 32 | ``` 33 | 34 | ```bash 35 | anchor deploy 36 | ``` 37 | 38 | 39 | ### Contact Information 40 | - Telegram: https://t.me/DevCutup 41 | - Whatsapp: https://wa.me/13137423660 42 | - Twitter: https://x.com/devcutup 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /programs/honey_pot/src/account.rs: -------------------------------------------------------------------------------- 1 | use anchor_lang::prelude::*; 2 | 3 | use crate::constants::*; 4 | use crate::error::*; 5 | 6 | #[account] 7 | #[derive(Default)] 8 | pub struct GlobalPool { 9 | pub super_admin: Pubkey, // 32 10 | } 11 | 12 | #[account] 13 | #[derive(Default)] 14 | pub struct IdPool { 15 | pub player: Pubkey, //32 16 | } 17 | 18 | #[account(zero_copy)] 19 | pub struct DailyPot { 20 | // 72 21 | pub count: u64, //8 22 | pub start_time: i64, //8 23 | pub prize: u64, //8 24 | pub end_time: i64, //8 25 | pub claim_prize: u64, //8 26 | pub winner: Pubkey, //32 27 | } 28 | #[account(zero_copy)] 29 | pub struct WeeklyPot { 30 | // 72 31 | pub count: u64, //8 32 | pub start_time: i64, //8 33 | pub prize: u64, //8 34 | pub end_time: i64, //8 35 | pub claim_prize: u64, //8 36 | pub winner: Pubkey, //32 37 | } 38 | #[account(zero_copy)] 39 | pub struct MonthlyPot { 40 | // 72 41 | pub count: u64, //8 42 | pub start_time: i64, //8 43 | pub prize: u64, //8 44 | pub end_time: i64, //8 45 | pub claim_prize: u64, //8 46 | pub winner: Pubkey, //32 47 | } 48 | 49 | impl Default for DailyPot { 50 | #[inline] 51 | fn default() -> DailyPot { 52 | DailyPot { 53 | count: 0, 54 | start_time: 0, 55 | prize: 0, 56 | end_time: 0, 57 | claim_prize: 0, 58 | winner: Pubkey::default(), 59 | } 60 | } 61 | } 62 | impl DailyPot { 63 | pub fn append(&mut self, buyer: Pubkey) { 64 | self.prize += DEPOSIT_VAULT; 65 | self.count += 1; 66 | } 67 | pub fn pre_update(&mut self, end_time: i64, claim: u64, winner: Pubkey) { 68 | self.end_time = end_time; 69 | self.claim_prize = claim; 70 | self.winner = winner; 71 | } 72 | pub fn update(&mut self, start_time: i64) { 73 | self.count = 0; 74 | self.prize = 0; 75 | self.start_time = start_time; 76 | } 77 | } 78 | 79 | impl Default for WeeklyPot { 80 | #[inline] 81 | fn default() -> WeeklyPot { 82 | WeeklyPot { 83 | count: 0, 84 | start_time: 0, 85 | prize: 0, 86 | end_time: 0, 87 | claim_prize: 0, 88 | winner: Pubkey::default(), 89 | } 90 | } 91 | } 92 | impl WeeklyPot { 93 | pub fn append(&mut self, buyer: Pubkey) { 94 | self.prize += DEPOSIT_VAULT; 95 | self.count += 1; 96 | } 97 | pub fn pre_update(&mut self, end_time: i64, claim: u64, winner: Pubkey) { 98 | self.end_time = end_time; 99 | self.claim_prize = claim; 100 | self.winner = winner; 101 | } 102 | pub fn update(&mut self, start_time: i64) { 103 | self.count = 0; 104 | self.prize = 0; 105 | self.start_time = start_time; 106 | } 107 | } 108 | 109 | impl Default for MonthlyPot { 110 | #[inline] 111 | fn default() -> MonthlyPot { 112 | MonthlyPot { 113 | count: 0, 114 | start_time: 0, 115 | prize: 0, 116 | end_time: 0, 117 | claim_prize: 0, 118 | winner: Pubkey::default(), 119 | } 120 | } 121 | } 122 | impl MonthlyPot { 123 | pub fn append(&mut self, buyer: Pubkey) { 124 | self.prize += DEPOSIT_VAULT; 125 | self.count += 1; 126 | } 127 | pub fn pre_update(&mut self, end_time: i64, claim: u64, winner: Pubkey) { 128 | self.end_time = end_time; 129 | self.claim_prize = claim; 130 | self.winner = winner; 131 | } 132 | pub fn update(&mut self, start_time: i64) { 133 | self.count = 0; 134 | self.prize = 0; 135 | self.start_time = start_time; 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /cli/honey_pot.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "name": "honey_pot", 4 | "instructions": [ 5 | { 6 | "name": "initialize", 7 | "accounts": [ 8 | { 9 | "name": "admin", 10 | "isMut": true, 11 | "isSigner": true 12 | }, 13 | { 14 | "name": "globalAuthority", 15 | "isMut": true, 16 | "isSigner": false 17 | }, 18 | { 19 | "name": "rewardVault", 20 | "isMut": false, 21 | "isSigner": false 22 | }, 23 | { 24 | "name": "dailyPot", 25 | "isMut": true, 26 | "isSigner": false 27 | }, 28 | { 29 | "name": "weeklyPot", 30 | "isMut": true, 31 | "isSigner": false 32 | }, 33 | { 34 | "name": "monthlyPot", 35 | "isMut": true, 36 | "isSigner": false 37 | }, 38 | { 39 | "name": "systemProgram", 40 | "isMut": false, 41 | "isSigner": false 42 | }, 43 | { 44 | "name": "rent", 45 | "isMut": false, 46 | "isSigner": false 47 | } 48 | ], 49 | "args": [ 50 | { 51 | "name": "globalBump", 52 | "type": "u8" 53 | }, 54 | { 55 | "name": "vaultBump", 56 | "type": "u8" 57 | } 58 | ] 59 | }, 60 | { 61 | "name": "initializeIdPool", 62 | "accounts": [ 63 | { 64 | "name": "admin", 65 | "isMut": true, 66 | "isSigner": true 67 | }, 68 | { 69 | "name": "idPool", 70 | "isMut": true, 71 | "isSigner": false 72 | }, 73 | { 74 | "name": "systemProgram", 75 | "isMut": false, 76 | "isSigner": false 77 | }, 78 | { 79 | "name": "rent", 80 | "isMut": false, 81 | "isSigner": false 82 | } 83 | ], 84 | "args": [ 85 | { 86 | "name": "idBump", 87 | "type": "u8" 88 | }, 89 | { 90 | "name": "timestamp", 91 | "type": "i64" 92 | }, 93 | { 94 | "name": "identifier", 95 | "type": "u64" 96 | } 97 | ] 98 | }, 99 | { 100 | "name": "initializeWeeklyIdPool", 101 | "accounts": [ 102 | { 103 | "name": "admin", 104 | "isMut": true, 105 | "isSigner": true 106 | }, 107 | { 108 | "name": "idPool", 109 | "isMut": true, 110 | "isSigner": false 111 | }, 112 | { 113 | "name": "systemProgram", 114 | "isMut": false, 115 | "isSigner": false 116 | }, 117 | { 118 | "name": "rent", 119 | "isMut": false, 120 | "isSigner": false 121 | } 122 | ], 123 | "args": [ 124 | { 125 | "name": "idBump", 126 | "type": "u8" 127 | }, 128 | { 129 | "name": "timestamp", 130 | "type": "i64" 131 | }, 132 | { 133 | "name": "identifier", 134 | "type": "u64" 135 | } 136 | ] 137 | }, 138 | { 139 | "name": "initializeMonthlyIdPool", 140 | "accounts": [ 141 | { 142 | "name": "admin", 143 | "isMut": true, 144 | "isSigner": true 145 | }, 146 | { 147 | "name": "idPool", 148 | "isMut": true, 149 | "isSigner": false 150 | }, 151 | { 152 | "name": "systemProgram", 153 | "isMut": false, 154 | "isSigner": false 155 | }, 156 | { 157 | "name": "rent", 158 | "isMut": false, 159 | "isSigner": false 160 | } 161 | ], 162 | "args": [ 163 | { 164 | "name": "idBump", 165 | "type": "u8" 166 | }, 167 | { 168 | "name": "timestamp", 169 | "type": "i64" 170 | }, 171 | { 172 | "name": "identifier", 173 | "type": "u64" 174 | } 175 | ] 176 | }, 177 | { 178 | "name": "buyTickets", 179 | "accounts": [ 180 | { 181 | "name": "owner", 182 | "isMut": true, 183 | "isSigner": true 184 | }, 185 | { 186 | "name": "dailyPot", 187 | "isMut": true, 188 | "isSigner": false 189 | }, 190 | { 191 | "name": "rewardVault", 192 | "isMut": true, 193 | "isSigner": false 194 | }, 195 | { 196 | "name": "treasuryWallet", 197 | "isMut": true, 198 | "isSigner": false 199 | }, 200 | { 201 | "name": "systemProgram", 202 | "isMut": false, 203 | "isSigner": false 204 | } 205 | ], 206 | "args": [ 207 | { 208 | "name": "vaultBump", 209 | "type": "u8" 210 | }, 211 | { 212 | "name": "amount", 213 | "type": "u64" 214 | } 215 | ] 216 | }, 217 | { 218 | "name": "buyWeeklyTickets", 219 | "accounts": [ 220 | { 221 | "name": "owner", 222 | "isMut": true, 223 | "isSigner": true 224 | }, 225 | { 226 | "name": "weeklyPot", 227 | "isMut": true, 228 | "isSigner": false 229 | }, 230 | { 231 | "name": "rewardVault", 232 | "isMut": true, 233 | "isSigner": false 234 | }, 235 | { 236 | "name": "treasuryWallet", 237 | "isMut": true, 238 | "isSigner": false 239 | }, 240 | { 241 | "name": "systemProgram", 242 | "isMut": false, 243 | "isSigner": false 244 | } 245 | ], 246 | "args": [ 247 | { 248 | "name": "vaultBump", 249 | "type": "u8" 250 | }, 251 | { 252 | "name": "amount", 253 | "type": "u64" 254 | } 255 | ] 256 | }, 257 | { 258 | "name": "buyMonthlyTickets", 259 | "accounts": [ 260 | { 261 | "name": "owner", 262 | "isMut": true, 263 | "isSigner": true 264 | }, 265 | { 266 | "name": "monthlyPot", 267 | "isMut": true, 268 | "isSigner": false 269 | }, 270 | { 271 | "name": "rewardVault", 272 | "isMut": true, 273 | "isSigner": false 274 | }, 275 | { 276 | "name": "treasuryWallet", 277 | "isMut": true, 278 | "isSigner": false 279 | }, 280 | { 281 | "name": "systemProgram", 282 | "isMut": false, 283 | "isSigner": false 284 | } 285 | ], 286 | "args": [ 287 | { 288 | "name": "vaultBump", 289 | "type": "u8" 290 | }, 291 | { 292 | "name": "amount", 293 | "type": "u64" 294 | } 295 | ] 296 | }, 297 | { 298 | "name": "revealWinner", 299 | "accounts": [ 300 | { 301 | "name": "owner", 302 | "isMut": true, 303 | "isSigner": true 304 | }, 305 | { 306 | "name": "dailyPot", 307 | "isMut": true, 308 | "isSigner": false 309 | } 310 | ], 311 | "args": [] 312 | }, 313 | { 314 | "name": "revealWeeklyWinner", 315 | "accounts": [ 316 | { 317 | "name": "owner", 318 | "isMut": true, 319 | "isSigner": true 320 | }, 321 | { 322 | "name": "weeklyPot", 323 | "isMut": true, 324 | "isSigner": false 325 | } 326 | ], 327 | "args": [] 328 | }, 329 | { 330 | "name": "revealMonthlyWinner", 331 | "accounts": [ 332 | { 333 | "name": "owner", 334 | "isMut": true, 335 | "isSigner": true 336 | }, 337 | { 338 | "name": "monthlyPot", 339 | "isMut": true, 340 | "isSigner": false 341 | } 342 | ], 343 | "args": [] 344 | }, 345 | { 346 | "name": "claim", 347 | "accounts": [ 348 | { 349 | "name": "owner", 350 | "isMut": true, 351 | "isSigner": true 352 | }, 353 | { 354 | "name": "dailyPot", 355 | "isMut": true, 356 | "isSigner": false 357 | }, 358 | { 359 | "name": "rewardVault", 360 | "isMut": true, 361 | "isSigner": false 362 | }, 363 | { 364 | "name": "treasuryWallet", 365 | "isMut": true, 366 | "isSigner": false 367 | }, 368 | { 369 | "name": "systemProgram", 370 | "isMut": false, 371 | "isSigner": false 372 | } 373 | ], 374 | "args": [ 375 | { 376 | "name": "vaultBump", 377 | "type": "u8" 378 | } 379 | ] 380 | }, 381 | { 382 | "name": "claimWeekly", 383 | "accounts": [ 384 | { 385 | "name": "owner", 386 | "isMut": true, 387 | "isSigner": true 388 | }, 389 | { 390 | "name": "weeklyPot", 391 | "isMut": true, 392 | "isSigner": false 393 | }, 394 | { 395 | "name": "rewardVault", 396 | "isMut": true, 397 | "isSigner": false 398 | }, 399 | { 400 | "name": "treasuryWallet", 401 | "isMut": true, 402 | "isSigner": false 403 | }, 404 | { 405 | "name": "systemProgram", 406 | "isMut": false, 407 | "isSigner": false 408 | } 409 | ], 410 | "args": [ 411 | { 412 | "name": "vaultBump", 413 | "type": "u8" 414 | } 415 | ] 416 | }, 417 | { 418 | "name": "claimMonthly", 419 | "accounts": [ 420 | { 421 | "name": "owner", 422 | "isMut": true, 423 | "isSigner": true 424 | }, 425 | { 426 | "name": "monthlyPot", 427 | "isMut": true, 428 | "isSigner": false 429 | }, 430 | { 431 | "name": "rewardVault", 432 | "isMut": true, 433 | "isSigner": false 434 | }, 435 | { 436 | "name": "treasuryWallet", 437 | "isMut": true, 438 | "isSigner": false 439 | }, 440 | { 441 | "name": "systemProgram", 442 | "isMut": false, 443 | "isSigner": false 444 | } 445 | ], 446 | "args": [ 447 | { 448 | "name": "vaultBump", 449 | "type": "u8" 450 | } 451 | ] 452 | } 453 | ], 454 | "accounts": [ 455 | { 456 | "name": "GlobalPool", 457 | "type": { 458 | "kind": "struct", 459 | "fields": [ 460 | { 461 | "name": "superAdmin", 462 | "type": "publicKey" 463 | } 464 | ] 465 | } 466 | }, 467 | { 468 | "name": "IdPool", 469 | "type": { 470 | "kind": "struct", 471 | "fields": [ 472 | { 473 | "name": "player", 474 | "type": "publicKey" 475 | } 476 | ] 477 | } 478 | }, 479 | { 480 | "name": "DailyPot", 481 | "type": { 482 | "kind": "struct", 483 | "fields": [ 484 | { 485 | "name": "count", 486 | "type": "u64" 487 | }, 488 | { 489 | "name": "startTime", 490 | "type": "i64" 491 | }, 492 | { 493 | "name": "prize", 494 | "type": "u64" 495 | }, 496 | { 497 | "name": "endTime", 498 | "type": "i64" 499 | }, 500 | { 501 | "name": "claimPrize", 502 | "type": "u64" 503 | }, 504 | { 505 | "name": "winner", 506 | "type": "publicKey" 507 | } 508 | ] 509 | } 510 | }, 511 | { 512 | "name": "WeeklyPot", 513 | "type": { 514 | "kind": "struct", 515 | "fields": [ 516 | { 517 | "name": "count", 518 | "type": "u64" 519 | }, 520 | { 521 | "name": "startTime", 522 | "type": "i64" 523 | }, 524 | { 525 | "name": "prize", 526 | "type": "u64" 527 | }, 528 | { 529 | "name": "endTime", 530 | "type": "i64" 531 | }, 532 | { 533 | "name": "claimPrize", 534 | "type": "u64" 535 | }, 536 | { 537 | "name": "winner", 538 | "type": "publicKey" 539 | } 540 | ] 541 | } 542 | }, 543 | { 544 | "name": "MonthlyPot", 545 | "type": { 546 | "kind": "struct", 547 | "fields": [ 548 | { 549 | "name": "count", 550 | "type": "u64" 551 | }, 552 | { 553 | "name": "startTime", 554 | "type": "i64" 555 | }, 556 | { 557 | "name": "prize", 558 | "type": "u64" 559 | }, 560 | { 561 | "name": "endTime", 562 | "type": "i64" 563 | }, 564 | { 565 | "name": "claimPrize", 566 | "type": "u64" 567 | }, 568 | { 569 | "name": "winner", 570 | "type": "publicKey" 571 | } 572 | ] 573 | } 574 | } 575 | ], 576 | "errors": [ 577 | { 578 | "code": 6000, 579 | "name": "InvalidPlayerPool", 580 | "msg": "Invalid Player Pool Owner" 581 | }, 582 | { 583 | "code": 6001, 584 | "name": "InvalidOwner", 585 | "msg": "The Owner is not the Winner" 586 | }, 587 | { 588 | "code": 6002, 589 | "name": "InvalidWinner", 590 | "msg": "The Owner is not last pot's Winner" 591 | }, 592 | { 593 | "code": 6003, 594 | "name": "InsufficientRewardVault", 595 | "msg": "Insufficient Reward SOL Balance" 596 | }, 597 | { 598 | "code": 6004, 599 | "name": "InsufficientPlayerVault", 600 | "msg": "Insufficient PlayerRewardPool SOL Balance" 601 | } 602 | ] 603 | } -------------------------------------------------------------------------------- /programs/honey_pot/src/lib.rs: -------------------------------------------------------------------------------- 1 | use anchor_lang::{prelude::AccountInfo, prelude::*, AccountSerialize, System}; 2 | 3 | use solana_program::pubkey::Pubkey; 4 | 5 | pub mod account; 6 | pub mod constants; 7 | pub mod error; 8 | pub mod utils; 9 | 10 | use account::*; 11 | use constants::*; 12 | use error::*; 13 | use utils::*; 14 | 15 | declare_id!("CKyZk5sDQ8hzap6STpCEgWhZC4a5dnnrTAv3pZNRQ98F"); 16 | 17 | #[program] 18 | pub mod honey_pot { 19 | use super::*; 20 | pub fn initialize(ctx: Context, global_bump: u8, vault_bump: u8) -> ProgramResult { 21 | let global_authority = &mut ctx.accounts.global_authority; 22 | global_authority.super_admin = ctx.accounts.admin.key(); 23 | let mut daily_pot = ctx.accounts.daily_pot.load_init()?; 24 | let mut weekly_pot = ctx.accounts.weekly_pot.load_init()?; 25 | let mut monthly_pot = ctx.accounts.monthly_pot.load_init()?; 26 | Ok(()) 27 | } 28 | 29 | pub fn initialize_id_pool( 30 | ctx: Context, 31 | id_bump: u8, 32 | timestamp: i64, 33 | identifier: u64, 34 | ) -> ProgramResult { 35 | let id_pool = &mut ctx.accounts.id_pool; 36 | id_pool.player = ctx.accounts.admin.key(); 37 | Ok(()) 38 | } 39 | 40 | pub fn initialize_weekly_id_pool( 41 | ctx: Context, 42 | id_bump: u8, 43 | timestamp: i64, 44 | identifier: u64, 45 | ) -> ProgramResult { 46 | let id_pool = &mut ctx.accounts.id_pool; 47 | id_pool.player = ctx.accounts.admin.key(); 48 | Ok(()) 49 | } 50 | 51 | pub fn initialize_monthly_id_pool( 52 | ctx: Context, 53 | id_bump: u8, 54 | timestamp: i64, 55 | identifier: u64, 56 | ) -> ProgramResult { 57 | let id_pool = &mut ctx.accounts.id_pool; 58 | id_pool.player = ctx.accounts.admin.key(); 59 | Ok(()) 60 | } 61 | /** 62 | * @dev Buy the amount of daily tickets 63 | */ 64 | pub fn buy_tickets(ctx: Context, vault_bump: u8, amount: u64) -> ProgramResult { 65 | let timestamp = Clock::get()?.unix_timestamp; 66 | let mut daily_pot = ctx.accounts.daily_pot.load_mut()?; 67 | 68 | let start_timestamp = timestamp - (timestamp % DAY); 69 | 70 | if daily_pot.count == 0 { 71 | daily_pot.update(start_timestamp); 72 | } 73 | if start_timestamp != daily_pot.start_time { 74 | if start_timestamp != daily_pot.end_time { 75 | let (player_address, bump) = Pubkey::find_program_address( 76 | &[RANDOM_SEED.as_bytes(), timestamp.to_string().as_bytes()], 77 | &honey_pot::ID, 78 | ); 79 | let char_vec: Vec = player_address.to_string().chars().collect(); 80 | let mut mul = 1; 81 | for i in 0..8 { 82 | mul *= u64::from(char_vec[i as usize]); 83 | } 84 | let rand = mul % daily_pot.count; 85 | let claim_prize = daily_pot.prize; 86 | let time_seed = daily_pot.start_time; 87 | let (winner, bump) = Pubkey::find_program_address( 88 | &[ 89 | DAILY_SEED.as_bytes(), 90 | time_seed.to_string().as_bytes(), 91 | rand.to_string().as_bytes(), 92 | ], 93 | &honey_pot::ID, 94 | ); 95 | daily_pot.pre_update(start_timestamp, claim_prize, winner); 96 | } 97 | daily_pot.update(start_timestamp); 98 | } 99 | 100 | for _ in 0..amount { 101 | daily_pot.append(ctx.accounts.owner.key()); 102 | } 103 | 104 | // Transfer 0.04SOL to the vault 105 | sol_transfer_user( 106 | ctx.accounts.owner.to_account_info(), 107 | ctx.accounts.reward_vault.to_account_info(), 108 | ctx.accounts.system_program.to_account_info(), 109 | amount * DEPOSIT_VAULT, 110 | )?; 111 | 112 | // Transfer 0.01SOL to the Treasury wallet 113 | sol_transfer_user( 114 | ctx.accounts.owner.to_account_info(), 115 | ctx.accounts.treasury_wallet.to_account_info(), 116 | ctx.accounts.system_program.to_account_info(), 117 | amount * DEPOSIT_TREASURY, 118 | )?; 119 | 120 | Ok(()) 121 | } 122 | 123 | /** 124 | * @dev Buy the amount of weekly tickets 125 | */ 126 | pub fn buy_weekly_tickets( 127 | ctx: Context, 128 | vault_bump: u8, 129 | amount: u64, 130 | ) -> ProgramResult { 131 | let timestamp = Clock::get()?.unix_timestamp; 132 | let mut weekly_pot = ctx.accounts.weekly_pot.load_mut()?; 133 | 134 | let start_timestamp = timestamp - (timestamp % WEEK); 135 | if weekly_pot.count == 0 { 136 | weekly_pot.update(start_timestamp); 137 | } 138 | 139 | if start_timestamp != weekly_pot.start_time { 140 | if start_timestamp != weekly_pot.end_time { 141 | let (player_address, bump) = Pubkey::find_program_address( 142 | &[RANDOM_SEED.as_bytes(), timestamp.to_string().as_bytes()], 143 | &honey_pot::ID, 144 | ); 145 | let char_vec: Vec = player_address.to_string().chars().collect(); 146 | let mut mul = 1; 147 | for i in 0..8 { 148 | mul *= u64::from(char_vec[i as usize]); 149 | } 150 | let rand = mul % weekly_pot.count; 151 | let claim_prize = weekly_pot.prize; 152 | let time_seed = weekly_pot.start_time; 153 | let (winner, bump) = Pubkey::find_program_address( 154 | &[ 155 | WEEKLY_SEED.as_bytes(), 156 | time_seed.to_string().as_bytes(), 157 | rand.to_string().as_bytes(), 158 | ], 159 | &honey_pot::ID, 160 | ); 161 | weekly_pot.pre_update(start_timestamp, claim_prize, winner); 162 | } 163 | weekly_pot.update(start_timestamp); 164 | } 165 | 166 | for _ in 0..amount { 167 | weekly_pot.append(ctx.accounts.owner.key()); 168 | } 169 | 170 | // Transfer 0.04SOL to the vault 171 | sol_transfer_user( 172 | ctx.accounts.owner.to_account_info(), 173 | ctx.accounts.reward_vault.to_account_info(), 174 | ctx.accounts.system_program.to_account_info(), 175 | amount * DEPOSIT_VAULT, 176 | )?; 177 | 178 | // Transfer 0.01SOL to the Treasury wallet 179 | sol_transfer_user( 180 | ctx.accounts.owner.to_account_info(), 181 | ctx.accounts.treasury_wallet.to_account_info(), 182 | ctx.accounts.system_program.to_account_info(), 183 | amount * DEPOSIT_TREASURY, 184 | )?; 185 | 186 | Ok(()) 187 | } 188 | 189 | /** 190 | * @dev Buy amount of monthly tickets 191 | */ 192 | pub fn buy_monthly_tickets( 193 | ctx: Context, 194 | vault_bump: u8, 195 | amount: u64, 196 | ) -> ProgramResult { 197 | let timestamp = Clock::get()?.unix_timestamp; 198 | let mut monthly_pot = ctx.accounts.monthly_pot.load_mut()?; 199 | 200 | let start_timestamp = timestamp - (timestamp % MONTH); 201 | if monthly_pot.count == 0 { 202 | monthly_pot.update(start_timestamp); 203 | } 204 | 205 | if start_timestamp != monthly_pot.start_time { 206 | if start_timestamp != monthly_pot.end_time { 207 | let (player_address, bump) = Pubkey::find_program_address( 208 | &[RANDOM_SEED.as_bytes(), timestamp.to_string().as_bytes()], 209 | &honey_pot::ID, 210 | ); 211 | let char_vec: Vec = player_address.to_string().chars().collect(); 212 | let mut mul = 1; 213 | for i in 0..8 { 214 | mul *= u64::from(char_vec[i as usize]); 215 | } 216 | let rand = mul % monthly_pot.count; 217 | let claim_prize = monthly_pot.prize; 218 | let time_seed = monthly_pot.start_time; 219 | let (winner, bump) = Pubkey::find_program_address( 220 | &[ 221 | MONTHLY_SEED.as_bytes(), 222 | time_seed.to_string().as_bytes(), 223 | rand.to_string().as_bytes(), 224 | ], 225 | &honey_pot::ID, 226 | ); 227 | monthly_pot.pre_update(start_timestamp, claim_prize, winner); 228 | } 229 | monthly_pot.update(start_timestamp); 230 | } 231 | 232 | for _ in 0..amount { 233 | monthly_pot.append(ctx.accounts.owner.key()); 234 | } 235 | 236 | // Transfer 0.04SOL to the vault 237 | sol_transfer_user( 238 | ctx.accounts.owner.to_account_info(), 239 | ctx.accounts.reward_vault.to_account_info(), 240 | ctx.accounts.system_program.to_account_info(), 241 | amount * DEPOSIT_VAULT, 242 | )?; 243 | 244 | // Transfer 0.01SOL to the treasury wallet 245 | sol_transfer_user( 246 | ctx.accounts.owner.to_account_info(), 247 | ctx.accounts.treasury_wallet.to_account_info(), 248 | ctx.accounts.system_program.to_account_info(), 249 | amount * DEPOSIT_TREASURY, 250 | )?; 251 | 252 | Ok(()) 253 | } 254 | 255 | /** 256 | * @dev Reveal winner of the daily_pot 257 | */ 258 | pub fn reveal_winner(ctx: Context) -> ProgramResult { 259 | let timestamp = Clock::get()?.unix_timestamp; 260 | let mut daily_pot = ctx.accounts.daily_pot.load_mut()?; 261 | 262 | let start_timestamp = timestamp - (timestamp % DAY); 263 | if daily_pot.end_time == 0 { 264 | daily_pot.end_time = start_timestamp - DAY; 265 | } 266 | if start_timestamp != daily_pot.end_time { 267 | let (player_address, bump) = Pubkey::find_program_address( 268 | &[RANDOM_SEED.as_bytes(), timestamp.to_string().as_bytes()], 269 | &honey_pot::ID, 270 | ); 271 | let char_vec: Vec = player_address.to_string().chars().collect(); 272 | let mut mul = 1; 273 | for i in 0..8 { 274 | mul *= u64::from(char_vec[i as usize]); 275 | } 276 | let rand = mul % daily_pot.count; 277 | let claim_prize = daily_pot.prize; 278 | let time_seed = daily_pot.start_time; 279 | let (winner, bump) = Pubkey::find_program_address( 280 | &[ 281 | DAILY_SEED.as_bytes(), 282 | time_seed.to_string().as_bytes(), 283 | rand.to_string().as_bytes(), 284 | ], 285 | &honey_pot::ID, 286 | ); 287 | daily_pot.pre_update(start_timestamp, claim_prize, winner); 288 | } 289 | 290 | Ok(()) 291 | } 292 | 293 | /** 294 | * @dev Reveal winner of the weekly_pot 295 | */ 296 | pub fn reveal_weekly_winner(ctx: Context) -> ProgramResult { 297 | let timestamp = Clock::get()?.unix_timestamp; 298 | let mut weekly_pot = ctx.accounts.weekly_pot.load_mut()?; 299 | 300 | let start_timestamp = timestamp - (timestamp % WEEK); 301 | if weekly_pot.end_time == 0 { 302 | weekly_pot.end_time = start_timestamp - WEEK; 303 | } 304 | if start_timestamp != weekly_pot.end_time { 305 | let (player_address, bump) = Pubkey::find_program_address( 306 | &[RANDOM_SEED.as_bytes(), timestamp.to_string().as_bytes()], 307 | &honey_pot::ID, 308 | ); 309 | let char_vec: Vec = player_address.to_string().chars().collect(); 310 | let mut mul = 1; 311 | for i in 0..8 { 312 | mul *= u64::from(char_vec[i as usize]); 313 | } 314 | let rand = mul % weekly_pot.count; 315 | let claim_prize = weekly_pot.prize; 316 | let time_seed = weekly_pot.start_time; 317 | let (winner, bump) = Pubkey::find_program_address( 318 | &[ 319 | WEEKLY_SEED.as_bytes(), 320 | time_seed.to_string().as_bytes(), 321 | rand.to_string().as_bytes(), 322 | ], 323 | &honey_pot::ID, 324 | ); 325 | weekly_pot.pre_update(start_timestamp, claim_prize, winner); 326 | } 327 | 328 | Ok(()) 329 | } 330 | 331 | /** 332 | * @dev Reveal winner of the monthly_pot 333 | */ 334 | pub fn reveal_monthly_winner(ctx: Context) -> ProgramResult { 335 | let timestamp = Clock::get()?.unix_timestamp; 336 | let mut monthly_pot = ctx.accounts.monthly_pot.load_mut()?; 337 | 338 | let start_timestamp = timestamp - (timestamp % MONTH); 339 | if monthly_pot.end_time == 0 { 340 | monthly_pot.end_time = start_timestamp - MONTH; 341 | } 342 | 343 | if start_timestamp != monthly_pot.end_time { 344 | let (player_address, bump) = Pubkey::find_program_address( 345 | &[RANDOM_SEED.as_bytes(), timestamp.to_string().as_bytes()], 346 | &honey_pot::ID, 347 | ); 348 | let char_vec: Vec = player_address.to_string().chars().collect(); 349 | let mut mul = 1; 350 | for i in 0..8 { 351 | mul *= u64::from(char_vec[i as usize]); 352 | } 353 | let rand = mul % monthly_pot.count; 354 | let claim_prize = monthly_pot.prize; 355 | let time_seed = monthly_pot.start_time; 356 | let (winner, bump) = Pubkey::find_program_address( 357 | &[ 358 | MONTHLY_SEED.as_bytes(), 359 | time_seed.to_string().as_bytes(), 360 | rand.to_string().as_bytes(), 361 | ], 362 | &honey_pot::ID, 363 | ); 364 | monthly_pot.pre_update(start_timestamp, claim_prize, winner); 365 | } 366 | 367 | Ok(()) 368 | } 369 | 370 | /** 371 | * @dev Claim Prize from the vault only for winner 372 | */ 373 | pub fn claim(ctx: Context, vault_bump: u8) -> ProgramResult { 374 | let timestamp = Clock::get()?.unix_timestamp; 375 | let mut daily_pot = ctx.accounts.daily_pot.load_mut()?; 376 | 377 | let start_timestamp = timestamp - (timestamp % DAY); 378 | require!( 379 | daily_pot.end_time == start_timestamp, 380 | PotError::InvalidWinner 381 | ); 382 | 383 | let prize = daily_pot.claim_prize * 90 / 100; 384 | let tax = daily_pot.claim_prize * 10 / 100; 385 | 386 | sol_transfer_with_signer( 387 | ctx.accounts.reward_vault.to_account_info(), 388 | ctx.accounts.owner.to_account_info(), 389 | ctx.accounts.system_program.to_account_info(), 390 | &[&[VAULT_AUTHORITY_SEED.as_ref(), &[vault_bump]]], 391 | prize, 392 | )?; 393 | sol_transfer_with_signer( 394 | ctx.accounts.reward_vault.to_account_info(), 395 | ctx.accounts.treasury_wallet.to_account_info(), 396 | ctx.accounts.system_program.to_account_info(), 397 | &[&[VAULT_AUTHORITY_SEED.as_ref(), &[vault_bump]]], 398 | tax, 399 | )?; 400 | 401 | daily_pot.claim_prize = 0; 402 | daily_pot.winner = Pubkey::default(); 403 | 404 | Ok(()) 405 | } 406 | 407 | /** 408 | * @dev Claim Prize from the vault only for winner 409 | */ 410 | pub fn claim_weekly(ctx: Context, vault_bump: u8) -> ProgramResult { 411 | let timestamp = Clock::get()?.unix_timestamp; 412 | let mut weekly_pot = ctx.accounts.weekly_pot.load_mut()?; 413 | 414 | let start_timestamp = timestamp - (timestamp % WEEK); 415 | require!( 416 | weekly_pot.end_time == start_timestamp, 417 | PotError::InvalidWinner 418 | ); 419 | 420 | let prize = weekly_pot.claim_prize * 90 / 100; 421 | let tax = weekly_pot.claim_prize * 10 / 100; 422 | 423 | sol_transfer_with_signer( 424 | ctx.accounts.reward_vault.to_account_info(), 425 | ctx.accounts.owner.to_account_info(), 426 | ctx.accounts.system_program.to_account_info(), 427 | &[&[VAULT_AUTHORITY_SEED.as_ref(), &[vault_bump]]], 428 | prize, 429 | )?; 430 | sol_transfer_with_signer( 431 | ctx.accounts.reward_vault.to_account_info(), 432 | ctx.accounts.treasury_wallet.to_account_info(), 433 | ctx.accounts.system_program.to_account_info(), 434 | &[&[VAULT_AUTHORITY_SEED.as_ref(), &[vault_bump]]], 435 | tax, 436 | )?; 437 | 438 | weekly_pot.claim_prize = 0; 439 | weekly_pot.winner = Pubkey::default(); 440 | 441 | Ok(()) 442 | } 443 | 444 | /** 445 | * @dev Claim Prize from the vault only for winner 446 | */ 447 | pub fn claim_monthly(ctx: Context, vault_bump: u8) -> ProgramResult { 448 | let timestamp = Clock::get()?.unix_timestamp; 449 | let mut monthly_pot = ctx.accounts.monthly_pot.load_mut()?; 450 | 451 | let start_timestamp = timestamp - (timestamp % MONTH); 452 | require!( 453 | monthly_pot.end_time == start_timestamp, 454 | PotError::InvalidWinner 455 | ); 456 | 457 | let prize = monthly_pot.claim_prize * 90 / 100; 458 | let tax = monthly_pot.claim_prize * 10 / 100; 459 | 460 | sol_transfer_with_signer( 461 | ctx.accounts.reward_vault.to_account_info(), 462 | ctx.accounts.owner.to_account_info(), 463 | ctx.accounts.system_program.to_account_info(), 464 | &[&[VAULT_AUTHORITY_SEED.as_ref(), &[vault_bump]]], 465 | prize, 466 | )?; 467 | sol_transfer_with_signer( 468 | ctx.accounts.reward_vault.to_account_info(), 469 | ctx.accounts.treasury_wallet.to_account_info(), 470 | ctx.accounts.system_program.to_account_info(), 471 | &[&[VAULT_AUTHORITY_SEED.as_ref(), &[vault_bump]]], 472 | tax, 473 | )?; 474 | 475 | monthly_pot.claim_prize = 0; 476 | monthly_pot.winner = Pubkey::default(); 477 | 478 | Ok(()) 479 | } 480 | } 481 | 482 | #[derive(Accounts)] 483 | #[instruction(global_bump: u8, vault_bump: u8)] 484 | pub struct Initialize<'info> { 485 | #[account(mut)] 486 | pub admin: Signer<'info>, 487 | 488 | #[account( 489 | init_if_needed, 490 | seeds = [GLOBAL_AUTHORITY_SEED.as_ref()], 491 | bump = global_bump, 492 | payer = admin 493 | )] 494 | pub global_authority: Account<'info, GlobalPool>, 495 | 496 | #[account( 497 | seeds = [VAULT_AUTHORITY_SEED.as_ref()], 498 | bump = vault_bump, 499 | )] 500 | pub reward_vault: AccountInfo<'info>, 501 | 502 | #[account(zero)] 503 | pub daily_pot: AccountLoader<'info, DailyPot>, 504 | 505 | #[account(zero)] 506 | pub weekly_pot: AccountLoader<'info, WeeklyPot>, 507 | 508 | #[account(zero)] 509 | pub monthly_pot: AccountLoader<'info, MonthlyPot>, 510 | 511 | pub system_program: Program<'info, System>, 512 | pub rent: Sysvar<'info, Rent>, 513 | } 514 | 515 | #[derive(Accounts)] 516 | #[instruction(id_bump: u8, timestamp: i64, identifier: u64)] 517 | pub struct InitializeIdPool<'info> { 518 | #[account(mut)] 519 | pub admin: Signer<'info>, 520 | 521 | #[account( 522 | init_if_needed, 523 | seeds = [DAILY_SEED.as_ref(), timestamp.to_string().as_ref(), identifier.to_string().as_ref()], 524 | bump = id_bump, 525 | payer = admin 526 | )] 527 | pub id_pool: Account<'info, IdPool>, 528 | 529 | pub system_program: Program<'info, System>, 530 | pub rent: Sysvar<'info, Rent>, 531 | } 532 | 533 | #[derive(Accounts)] 534 | #[instruction(id_bump: u8, timestamp: i64, identifier: u64)] 535 | pub struct InitializeWeeklyIdPool<'info> { 536 | #[account(mut)] 537 | pub admin: Signer<'info>, 538 | 539 | #[account( 540 | init_if_needed, 541 | seeds = [WEEKLY_SEED.as_ref(), timestamp.to_string().as_ref(), identifier.to_string().as_ref()], 542 | bump = id_bump, 543 | payer = admin 544 | )] 545 | pub id_pool: Account<'info, IdPool>, 546 | 547 | pub system_program: Program<'info, System>, 548 | pub rent: Sysvar<'info, Rent>, 549 | } 550 | 551 | #[derive(Accounts)] 552 | #[instruction(id_bump: u8, timestamp: i64, identifier: u64)] 553 | pub struct InitializeMonthlyIdPool<'info> { 554 | #[account(mut)] 555 | pub admin: Signer<'info>, 556 | 557 | #[account( 558 | init_if_needed, 559 | seeds = [MONTHLY_SEED.as_ref(), timestamp.to_string().as_ref(), identifier.to_string().as_ref()], 560 | bump = id_bump, 561 | payer = admin 562 | )] 563 | pub id_pool: Account<'info, IdPool>, 564 | 565 | pub system_program: Program<'info, System>, 566 | pub rent: Sysvar<'info, Rent>, 567 | } 568 | 569 | #[derive(Accounts)] 570 | #[instruction(vault_bump: u8)] 571 | pub struct BuyTickets<'info> { 572 | #[account(mut)] 573 | pub owner: Signer<'info>, 574 | #[account(mut)] 575 | pub daily_pot: AccountLoader<'info, DailyPot>, 576 | #[account( 577 | mut, 578 | seeds = [VAULT_AUTHORITY_SEED.as_ref()], 579 | bump = vault_bump, 580 | )] 581 | pub reward_vault: AccountInfo<'info>, 582 | #[account( 583 | mut, 584 | constraint = treasury_wallet.key() == TREASURY_WALLET.parse::().unwrap(), 585 | )] 586 | pub treasury_wallet: AccountInfo<'info>, 587 | 588 | pub system_program: Program<'info, System>, 589 | } 590 | 591 | #[derive(Accounts)] 592 | #[instruction(vault_bump: u8)] 593 | pub struct BuyWeeklyTickets<'info> { 594 | #[account(mut)] 595 | pub owner: Signer<'info>, 596 | 597 | #[account(mut)] 598 | pub weekly_pot: AccountLoader<'info, WeeklyPot>, 599 | #[account( 600 | mut, 601 | seeds = [VAULT_AUTHORITY_SEED.as_ref()], 602 | bump = vault_bump, 603 | )] 604 | pub reward_vault: AccountInfo<'info>, 605 | #[account( 606 | mut, 607 | constraint = treasury_wallet.key() == TREASURY_WALLET.parse::().unwrap(), 608 | )] 609 | pub treasury_wallet: AccountInfo<'info>, 610 | 611 | pub system_program: Program<'info, System>, 612 | } 613 | 614 | #[derive(Accounts)] 615 | #[instruction(vault_bump: u8)] 616 | pub struct BuyMonthlyTickets<'info> { 617 | #[account(mut)] 618 | pub owner: Signer<'info>, 619 | 620 | #[account(mut)] 621 | pub monthly_pot: AccountLoader<'info, MonthlyPot>, 622 | #[account( 623 | mut, 624 | seeds = [VAULT_AUTHORITY_SEED.as_ref()], 625 | bump = vault_bump, 626 | )] 627 | pub reward_vault: AccountInfo<'info>, 628 | #[account( 629 | mut, 630 | constraint = treasury_wallet.key() == TREASURY_WALLET.parse::().unwrap(), 631 | )] 632 | pub treasury_wallet: AccountInfo<'info>, 633 | 634 | pub system_program: Program<'info, System>, 635 | } 636 | 637 | #[derive(Accounts)] 638 | pub struct RevealWinner<'info> { 639 | #[account(mut)] 640 | pub owner: Signer<'info>, 641 | #[account(mut)] 642 | pub daily_pot: AccountLoader<'info, DailyPot>, 643 | } 644 | 645 | #[derive(Accounts)] 646 | pub struct RevealWeeklyWinner<'info> { 647 | #[account(mut)] 648 | pub owner: Signer<'info>, 649 | #[account(mut)] 650 | pub weekly_pot: AccountLoader<'info, WeeklyPot>, 651 | } 652 | 653 | #[derive(Accounts)] 654 | pub struct RevealMonthlyWinner<'info> { 655 | #[account(mut)] 656 | pub owner: Signer<'info>, 657 | #[account(mut)] 658 | pub monthly_pot: AccountLoader<'info, MonthlyPot>, 659 | } 660 | 661 | #[derive(Accounts)] 662 | #[instruction(vault_bump: u8)] 663 | pub struct Claim<'info> { 664 | #[account(mut)] 665 | pub owner: Signer<'info>, 666 | #[account(mut)] 667 | pub daily_pot: AccountLoader<'info, DailyPot>, 668 | #[account( 669 | mut, 670 | seeds = [VAULT_AUTHORITY_SEED.as_ref()], 671 | bump = vault_bump, 672 | )] 673 | pub reward_vault: AccountInfo<'info>, 674 | #[account( 675 | mut, 676 | constraint = treasury_wallet.key() == TREASURY_WALLET.parse::().unwrap(), 677 | )] 678 | pub treasury_wallet: AccountInfo<'info>, 679 | 680 | pub system_program: Program<'info, System>, 681 | } 682 | 683 | #[derive(Accounts)] 684 | #[instruction(vault_bump: u8)] 685 | pub struct ClaimWeekly<'info> { 686 | #[account(mut)] 687 | pub owner: Signer<'info>, 688 | #[account(mut)] 689 | pub weekly_pot: AccountLoader<'info, WeeklyPot>, 690 | #[account( 691 | mut, 692 | seeds = [VAULT_AUTHORITY_SEED.as_ref()], 693 | bump = vault_bump, 694 | )] 695 | pub reward_vault: AccountInfo<'info>, 696 | #[account( 697 | mut, 698 | constraint = treasury_wallet.key() == TREASURY_WALLET.parse::().unwrap(), 699 | )] 700 | pub treasury_wallet: AccountInfo<'info>, 701 | 702 | pub system_program: Program<'info, System>, 703 | } 704 | 705 | #[derive(Accounts)] 706 | #[instruction(vault_bump: u8)] 707 | pub struct ClaimMonthly<'info> { 708 | #[account(mut)] 709 | pub owner: Signer<'info>, 710 | #[account(mut)] 711 | pub monthly_pot: AccountLoader<'info, MonthlyPot>, 712 | #[account( 713 | mut, 714 | seeds = [VAULT_AUTHORITY_SEED.as_ref()], 715 | bump = vault_bump, 716 | )] 717 | pub reward_vault: AccountInfo<'info>, 718 | #[account( 719 | mut, 720 | constraint = treasury_wallet.key() == TREASURY_WALLET.parse::().unwrap(), 721 | )] 722 | pub treasury_wallet: AccountInfo<'info>, 723 | 724 | pub system_program: Program<'info, System>, 725 | } 726 | -------------------------------------------------------------------------------- /cli/scripts.ts: -------------------------------------------------------------------------------- 1 | import { Program, web3 } from '@project-serum/anchor'; 2 | import * as anchor from '@project-serum/anchor'; 3 | import { 4 | Keypair, 5 | PublicKey, 6 | SystemProgram, 7 | SYSVAR_RENT_PUBKEY, 8 | Transaction, 9 | TransactionInstruction, 10 | sendAndConfirmTransaction 11 | } from '@solana/web3.js'; 12 | import { Token, TOKEN_PROGRAM_ID, AccountLayout, MintLayout, ASSOCIATED_TOKEN_PROGRAM_ID } from "@solana/spl-token"; 13 | 14 | import fs from 'fs'; 15 | import { GlobalPool, DailyPot, WeeklyPot, MonthlyPot, IdPool } from './types'; 16 | import { publicKey } from '@project-serum/anchor/dist/cjs/utils'; 17 | 18 | // Const Poolsize 19 | const DAY_POOL_SIZE = 80; 20 | const WEEK_POOL_SIZE = 80; 21 | const MONTH_POOL_SIZE = 80; 22 | 23 | // Set the Duration of the pot 24 | const DAY = 60 * 60 * 24; 25 | const WEEK = 60 * 60 * 24 * 7; 26 | const MONTH = 60 * 60 * 24 * 30; 27 | 28 | // Const SEEDs 29 | const GLOBAL_AUTHORITY_SEED = "global-authority"; 30 | const REWARD_VAULT_SEED = "vault-authority"; 31 | const DAILY_SEED = "daily-pot"; 32 | const WEEKLY_SEED = "weekly-pot"; 33 | const MONTHLY_SEED = "monthly-pot"; 34 | 35 | // Publickeys 36 | const PROGRAM_ID = "CKyZk5sDQ8hzap6STpCEgWhZC4a5dnnrTAv3pZNRQ98F"; 37 | const TREASURY_WALLET = "Fs8R7R6dP3B7mAJ6QmWZbomBRuTbiJyiR4QYjoxhLdPu"; 38 | 39 | anchor.setProvider(anchor.Provider.local(web3.clusterApiUrl('devnet'))); 40 | const solConnection = anchor.getProvider().connection; 41 | const payer = anchor.getProvider().wallet; 42 | console.log(payer.publicKey.toBase58()); 43 | 44 | const idl = JSON.parse( 45 | fs.readFileSync(__dirname + "/honey_pot.json", "utf8") 46 | ); 47 | 48 | let rewardVault: PublicKey = null; 49 | let program: Program = null; 50 | 51 | // Address of the deployed program. 52 | const programId = new anchor.web3.PublicKey(PROGRAM_ID); 53 | 54 | // Generate the program client from IDL. 55 | program = new anchor.Program(idl, programId); 56 | console.log('ProgramId: ', program.programId.toBase58()); 57 | 58 | const main = async () => { 59 | const [globalAuthority, bump] = await PublicKey.findProgramAddress( 60 | [Buffer.from(GLOBAL_AUTHORITY_SEED)], 61 | program.programId 62 | ); 63 | console.log('GlobalAuthority: ', globalAuthority.toBase58()); 64 | 65 | const [rewardVault, vaultBump] = await PublicKey.findProgramAddress( 66 | [Buffer.from(REWARD_VAULT_SEED)], 67 | program.programId 68 | ); 69 | console.log('RewardVault: ', rewardVault.toBase58()); 70 | 71 | // await initProject(payer.publicKey); 72 | 73 | // await buyTicket(payer.publicKey, 1); 74 | // await buyWeeklyTicket(payer.publicKey, 3); 75 | // await buyMonthlyTicket(payer.publicKey, 3); 76 | // await buyTicket(new PublicKey("Fs8R7R6dP3B7mAJ6QmWZbomBRuTbiJyiR4QYjoxhLdPu"), 5); 77 | // const dailyPot: DailyPot = await getDailyPot(); 78 | // console.log(dailyPot); 79 | 80 | const dailyPot: DailyPot = await getDailyPot(); 81 | const timestamp = dailyPot.startTime.toNumber(); 82 | let identifier = 0; 83 | var ts = Math.round((new Date()).getTime() / 1000); 84 | const st = ts - ts % DAY; 85 | console.log(st); 86 | 87 | 88 | // const winner = await revealWinner(payer.publicKey); 89 | // console.log(winner.toBase58()); 90 | console.log(dailyPot); 91 | 92 | // await claim(payer.publicKey); 93 | 94 | }; 95 | 96 | /** 97 | * @dev Before use this program, the accounts have to be initialized 98 | * @param userAddress : The caller who want to init the project 99 | * @returns 100 | */ 101 | export const initProject = async ( 102 | userAddress: PublicKey, 103 | ) => { 104 | const [globalAuthority, bump] = await PublicKey.findProgramAddress( 105 | [Buffer.from(GLOBAL_AUTHORITY_SEED)], 106 | program.programId 107 | ); 108 | 109 | const [rewardVault, vaultBump] = await PublicKey.findProgramAddress( 110 | [Buffer.from(REWARD_VAULT_SEED)], 111 | program.programId 112 | ); 113 | 114 | let dailyPotKey = await PublicKey.createWithSeed( 115 | userAddress, 116 | "daily-pot", 117 | program.programId, 118 | ); 119 | 120 | let weeklyPotKey = await PublicKey.createWithSeed( 121 | userAddress, 122 | "weekly-pot", 123 | program.programId, 124 | ); 125 | 126 | let monthlyPotKey = await PublicKey.createWithSeed( 127 | userAddress, 128 | "monthly-pot", 129 | program.programId, 130 | ); 131 | 132 | // Create the daily_pot with seed 133 | let ix = SystemProgram.createAccountWithSeed({ 134 | fromPubkey: userAddress, 135 | basePubkey: userAddress, 136 | seed: "daily-pot", 137 | newAccountPubkey: dailyPotKey, 138 | lamports: await solConnection.getMinimumBalanceForRentExemption(DAY_POOL_SIZE), 139 | space: DAY_POOL_SIZE, 140 | programId: program.programId, 141 | }); 142 | 143 | // Create the weekly_pot with seed 144 | let ix1 = SystemProgram.createAccountWithSeed({ 145 | fromPubkey: userAddress, 146 | basePubkey: userAddress, 147 | seed: "weekly-pot", 148 | newAccountPubkey: weeklyPotKey, 149 | lamports: await solConnection.getMinimumBalanceForRentExemption(WEEK_POOL_SIZE), 150 | space: WEEK_POOL_SIZE, 151 | programId: program.programId, 152 | }); 153 | 154 | // Create the monthly_pot with seed 155 | let ix2 = SystemProgram.createAccountWithSeed({ 156 | fromPubkey: userAddress, 157 | basePubkey: userAddress, 158 | seed: "monthly-pot", 159 | newAccountPubkey: monthlyPotKey, 160 | lamports: await solConnection.getMinimumBalanceForRentExemption(MONTH_POOL_SIZE), 161 | space: MONTH_POOL_SIZE, 162 | programId: program.programId, 163 | }); 164 | 165 | // Call the initialize function of the program 166 | const tx = await program.rpc.initialize( 167 | bump, vaultBump, { 168 | accounts: { 169 | admin: payer.publicKey, 170 | globalAuthority, 171 | rewardVault: rewardVault, 172 | dailyPot: dailyPotKey, 173 | weeklyPot: weeklyPotKey, 174 | monthlyPot: monthlyPotKey, 175 | systemProgram: SystemProgram.programId, 176 | rent: SYSVAR_RENT_PUBKEY, 177 | }, 178 | instructions: [ 179 | ix, ix1, ix2 180 | ], 181 | signers: [], 182 | }); 183 | await solConnection.confirmTransaction(tx, "confirmed"); 184 | 185 | console.log("txHash =", tx); 186 | return false; 187 | } 188 | 189 | /** 190 | * @dev Create account of users with the identifier, timestamp, seed 191 | * @param userAddress The caller of this function - the player of the game 192 | * @param identifier The count of the dailyPot 193 | * @param timestamp The startTime of the dailyPot 194 | */ 195 | export const initIdPool = async ( 196 | userAddress: PublicKey, 197 | identifier: number, 198 | timestamp: number, 199 | ) => { 200 | const [idAddress, bump] = await PublicKey.findProgramAddress( 201 | [Buffer.from(DAILY_SEED), Buffer.from(timestamp.toString()), Buffer.from(identifier.toString())], 202 | program.programId 203 | ); 204 | 205 | const tx = await program.rpc.initializeIdPool( 206 | bump, new anchor.BN(timestamp), new anchor.BN(identifier), { 207 | accounts: { 208 | admin: userAddress, 209 | idPool: idAddress, 210 | systemProgram: SystemProgram.programId, 211 | rent: SYSVAR_RENT_PUBKEY, 212 | }, 213 | instructions: [], 214 | signers: [], 215 | }); 216 | await solConnection.confirmTransaction(tx, "confirmed"); 217 | console.log(idAddress.toBase58()); 218 | 219 | console.log(`The ID Pool is Successfully Initialized`); 220 | } 221 | 222 | /** 223 | * @dev Create account of users with the identifier, timestamp, seed 224 | * @param userAddress The caller of this function - the player of the game 225 | * @param identifier The count of the dailyPot 226 | * @param timestamp The startTime of the dailyPot 227 | */ 228 | export const initWeeklyIdPool = async ( 229 | userAddress: PublicKey, 230 | identifier: number, 231 | timestamp: number, 232 | ) => { 233 | const [idAddress, bump] = await PublicKey.findProgramAddress( 234 | [Buffer.from(WEEKLY_SEED), Buffer.from(timestamp.toString()), Buffer.from(identifier.toString())], 235 | program.programId 236 | ); 237 | 238 | const tx = await program.rpc.initializeWeeklyIdPool( 239 | bump, new anchor.BN(timestamp), new anchor.BN(identifier), { 240 | accounts: { 241 | admin: userAddress, 242 | idPool: idAddress, 243 | systemProgram: SystemProgram.programId, 244 | rent: SYSVAR_RENT_PUBKEY, 245 | }, 246 | instructions: [], 247 | signers: [], 248 | }); 249 | await solConnection.confirmTransaction(tx, "confirmed"); 250 | 251 | console.log(`The ID Pool is Successfully Initialized`); 252 | } 253 | 254 | /** 255 | * @dev Create account of users with the identifier, timestamp, seed 256 | * @param userAddress The caller of this function - the player of the game 257 | * @param identifier The count of the dailyPot 258 | * @param timestamp The startTime of the dailyPot 259 | */ 260 | export const initMonthlyIdPool = async ( 261 | userAddress: PublicKey, 262 | identifier: number, 263 | timestamp: number, 264 | ) => { 265 | const [idAddress, bump] = await PublicKey.findProgramAddress( 266 | [Buffer.from(MONTHLY_SEED), Buffer.from(timestamp.toString()), Buffer.from(identifier.toString())], 267 | program.programId 268 | ); 269 | 270 | const tx = await program.rpc.initializeMonthlyIdPool( 271 | bump, new anchor.BN(timestamp), new anchor.BN(identifier), { 272 | accounts: { 273 | admin: userAddress, 274 | idPool: idAddress, 275 | systemProgram: SystemProgram.programId, 276 | rent: SYSVAR_RENT_PUBKEY, 277 | }, 278 | instructions: [], 279 | signers: [], 280 | }); 281 | await solConnection.confirmTransaction(tx, "confirmed"); 282 | 283 | console.log(`The ID Pool is Successfully Initialized`); 284 | } 285 | 286 | /** 287 | * @dev Buy daily tickets function 288 | * @param userAddress The caller of this function- the player of the game 289 | * @param amount The amount of tickets that the caller bought 290 | */ 291 | export const buyTicket = async ( 292 | userAddress: PublicKey, 293 | amount: number 294 | ) => { 295 | 296 | const [rewardVault, vaultBump] = await PublicKey.findProgramAddress( 297 | [Buffer.from(REWARD_VAULT_SEED)], 298 | program.programId 299 | ); 300 | const globalPool: GlobalPool = await getGlobalState(); 301 | const adminAddress = globalPool.superAdmin; 302 | 303 | let dailyPotKey = await PublicKey.createWithSeed( 304 | adminAddress, 305 | "daily-pot", 306 | program.programId, 307 | ); 308 | 309 | console.log("---------------------"); 310 | 311 | // Initialize the IdPool with timestamp and count 312 | var ts = Math.round((new Date()).getTime() / 1000); 313 | const stTime = ts - ts % DAY; 314 | const dailyPot: DailyPot = await getDailyPot(); 315 | let timestamp = dailyPot.startTime.toNumber(); 316 | let identifier = dailyPot.count.toNumber(); 317 | if (stTime != timestamp) { 318 | identifier = 0; 319 | timestamp = stTime; 320 | } 321 | for (var _identifier = identifier; _identifier < identifier + amount; _identifier++) { 322 | await initIdPool(userAddress, _identifier, timestamp); 323 | } 324 | 325 | console.log("---------------------"); 326 | 327 | const tx = await program.rpc.buyTickets( 328 | vaultBump, new anchor.BN(amount), { 329 | accounts: { 330 | owner: userAddress, 331 | dailyPot: dailyPotKey, 332 | rewardVault: rewardVault, 333 | treasuryWallet: new PublicKey(TREASURY_WALLET), 334 | systemProgram: SystemProgram.programId, 335 | rent: SYSVAR_RENT_PUBKEY, 336 | }, 337 | instructions: [], 338 | signers: [], 339 | }); 340 | await solConnection.confirmTransaction(tx, "confirmed"); 341 | console.log("The Number of Tickets You bought:", amount); 342 | 343 | } 344 | 345 | /** 346 | * @dev Buy Weekly tickets function 347 | * @param userAddress The caller of this function- the player of the game 348 | * @param amount The amount of tickets that the caller bought 349 | */ 350 | export const buyWeeklyTicket = async ( 351 | userAddress: PublicKey, 352 | amount: number 353 | ) => { 354 | const [globalAuthority, bump] = await PublicKey.findProgramAddress( 355 | [Buffer.from(GLOBAL_AUTHORITY_SEED)], 356 | program.programId 357 | ); 358 | 359 | const [rewardVault, vaultBump] = await PublicKey.findProgramAddress( 360 | [Buffer.from(REWARD_VAULT_SEED)], 361 | program.programId 362 | ); 363 | const globalPool: GlobalPool = await getGlobalState(); 364 | const adminAddress = globalPool.superAdmin; 365 | 366 | let weeklyPotKey = await PublicKey.createWithSeed( 367 | adminAddress, 368 | "weekly-pot", 369 | program.programId, 370 | ); 371 | 372 | // Initialize the WeeklyIdPool with timestamp and count 373 | var ts = Math.round((new Date()).getTime() / 1000); 374 | const stTime = ts - ts % WEEK; 375 | const weeklyPot: WeeklyPot = await getWeeklyPot(); 376 | let timestamp = weeklyPot.startTime.toNumber(); 377 | let identifier = weeklyPot.count.toNumber(); 378 | if (stTime != timestamp) { 379 | identifier = 0; 380 | timestamp = stTime; 381 | } 382 | for (var _identifier = identifier; _identifier < identifier + amount; _identifier++) { 383 | await initWeeklyIdPool(userAddress, _identifier, timestamp); 384 | } 385 | 386 | const tx = await program.rpc.buyWeeklyTickets( 387 | vaultBump, new anchor.BN(amount), { 388 | accounts: { 389 | owner: userAddress, 390 | weeklyPot: weeklyPotKey, 391 | rewardVault: rewardVault, 392 | treasuryWallet: new PublicKey(TREASURY_WALLET), 393 | systemProgram: SystemProgram.programId, 394 | rent: SYSVAR_RENT_PUBKEY, 395 | }, 396 | instructions: [], 397 | signers: [], 398 | }); 399 | await solConnection.confirmTransaction(tx, "confirmed"); 400 | console.log("The Number of Tickets You bought:", amount); 401 | } 402 | 403 | /** 404 | * @dev Buy Monthly tickets function 405 | * @param userAddress The caller of this function- the player of the game 406 | * @param amount The amount of tickets that the caller bought 407 | */ 408 | export const buyMonthlyTicket = async ( 409 | userAddress: PublicKey, 410 | amount: number 411 | ) => { 412 | const [globalAuthority, bump] = await PublicKey.findProgramAddress( 413 | [Buffer.from(GLOBAL_AUTHORITY_SEED)], 414 | program.programId 415 | ); 416 | 417 | const [rewardVault, vaultBump] = await PublicKey.findProgramAddress( 418 | [Buffer.from(REWARD_VAULT_SEED)], 419 | program.programId 420 | ); 421 | const globalPool: GlobalPool = await getGlobalState(); 422 | const adminAddress = globalPool.superAdmin; 423 | 424 | let monthlyPotKey = await PublicKey.createWithSeed( 425 | adminAddress, 426 | "monthly-pot", 427 | program.programId, 428 | ); 429 | 430 | // Initialize the IdPool with timestamp and count 431 | var ts = Math.round((new Date()).getTime() / 1000); 432 | const stTime = ts - ts % MONTH; 433 | const monthlyPot: MonthlyPot = await getMonthlyPot(); 434 | let timestamp = monthlyPot.startTime.toNumber(); 435 | let identifier = monthlyPot.count.toNumber(); 436 | if (stTime != timestamp) { 437 | identifier = 0; 438 | timestamp = stTime; 439 | } 440 | for (var _identifier = identifier; _identifier < identifier + amount; _identifier++) { 441 | await initMonthlyIdPool(userAddress, _identifier, timestamp); 442 | } 443 | 444 | const tx = await program.rpc.buyMonthlyTickets( 445 | vaultBump, new anchor.BN(amount), { 446 | accounts: { 447 | owner: userAddress, 448 | monthlyPot: monthlyPotKey, 449 | rewardVault: rewardVault, 450 | treasuryWallet: new PublicKey(TREASURY_WALLET), 451 | systemProgram: SystemProgram.programId, 452 | rent: SYSVAR_RENT_PUBKEY, 453 | }, 454 | instructions: [], 455 | signers: [], 456 | }); 457 | await solConnection.confirmTransaction(tx, "confirmed"); 458 | console.log("The Number of Tickets You bought:", amount); 459 | } 460 | 461 | /** 462 | * @dev The function which can reveal the winner of the daily_pot 463 | * @param userAddress The caller address 464 | */ 465 | export const revealWinner = async ( 466 | userAddress: PublicKey, 467 | ): Promise => { 468 | 469 | var ts = Math.round((new Date()).getTime() / 1000); 470 | const stTime = ts - ts % DAY; 471 | const dailyPot: DailyPot = await getDailyPot(); 472 | let timestamp = dailyPot.endTime.toNumber(); 473 | 474 | if (stTime != timestamp) { 475 | 476 | const globalPool: GlobalPool = await getGlobalState(); 477 | const adminAddress = globalPool.superAdmin; 478 | 479 | let dailyPotKey = await PublicKey.createWithSeed( 480 | adminAddress, 481 | "daily-pot", 482 | program.programId, 483 | ); 484 | const tx = await program.rpc.revealWinner( 485 | { 486 | accounts: { 487 | owner: userAddress, 488 | dailyPot: dailyPotKey, 489 | }, 490 | instructions: [], 491 | signers: [], 492 | }); 493 | await solConnection.confirmTransaction(tx, "confirmed"); 494 | 495 | } 496 | 497 | let winnerAcc = await program.account.idPool.fetch(dailyPot.winner); 498 | let winner = winnerAcc.player; 499 | 500 | console.log("Reveal Daily Winner Succeed"); 501 | return winner; 502 | } 503 | 504 | /** 505 | * @dev The function which can reveal the winner of the weekly_pot 506 | * @param userAddress The caller address 507 | */ 508 | export const revealWeeklyWinner = async ( 509 | userAddress: PublicKey, 510 | ): Promise => { 511 | 512 | var ts = Math.round((new Date()).getTime() / 1000); 513 | const stTime = ts - ts % WEEK; 514 | const weeklyPot: WeeklyPot = await getWeeklyPot(); 515 | let timestamp = weeklyPot.endTime.toNumber(); 516 | 517 | if (stTime != timestamp) { 518 | 519 | const globalPool: GlobalPool = await getGlobalState(); 520 | const adminAddress = globalPool.superAdmin; 521 | 522 | let weeklyPotKey = await PublicKey.createWithSeed( 523 | adminAddress, 524 | "weekly-pot", 525 | program.programId, 526 | ); 527 | const tx = await program.rpc.revealWeeklyWinner( 528 | { 529 | accounts: { 530 | owner: userAddress, 531 | dailyPot: weeklyPotKey, 532 | }, 533 | instructions: [], 534 | signers: [], 535 | }); 536 | await solConnection.confirmTransaction(tx, "confirmed"); 537 | 538 | } 539 | 540 | let winnerAcc = await program.account.idPool.fetch(weeklyPot.winner); 541 | let winner = winnerAcc.player; 542 | 543 | console.log("Reveal Weekly Winner Succeed"); 544 | return winner; 545 | } 546 | 547 | /** 548 | * @dev The function which can reveal the winner of the monthly_pot 549 | * @param userAddress The caller address 550 | */ 551 | 552 | export const revealMonthlyWinner = async ( 553 | userAddress: PublicKey, 554 | ): Promise => { 555 | 556 | var ts = Math.round((new Date()).getTime() / 1000); 557 | const stTime = ts - ts % MONTH; 558 | const monthlyPot: MonthlyPot = await getMonthlyPot(); 559 | let timestamp = monthlyPot.endTime.toNumber(); 560 | 561 | if (stTime != timestamp) { 562 | 563 | const globalPool: GlobalPool = await getGlobalState(); 564 | const adminAddress = globalPool.superAdmin; 565 | 566 | let monthlyPotKey = await PublicKey.createWithSeed( 567 | adminAddress, 568 | "monthly-pot", 569 | program.programId, 570 | ); 571 | const tx = await program.rpc.revealMonthlyWinner( 572 | { 573 | accounts: { 574 | owner: userAddress, 575 | dailyPot: monthlyPotKey, 576 | }, 577 | instructions: [], 578 | signers: [], 579 | }); 580 | await solConnection.confirmTransaction(tx, "confirmed"); 581 | 582 | } 583 | 584 | let winnerAcc = await program.account.idPool.fetch(monthlyPot.winner); 585 | let winner = winnerAcc.player; 586 | 587 | console.log("Reveal Monthly Winner Succeed"); 588 | return winner; 589 | } 590 | 591 | /** 592 | * @dev The claim funtion that can claim the winner Prize from the daily_pot 593 | * @param userAddress The caller address to claim reward from the rewardVault 594 | */ 595 | export const claim = async ( 596 | userAddress: PublicKey, 597 | ) => { 598 | const [rewardVault, vaultBump] = await PublicKey.findProgramAddress( 599 | [Buffer.from(REWARD_VAULT_SEED)], 600 | program.programId 601 | ); 602 | const globalPool: GlobalPool = await getGlobalState(); 603 | const adminAddress = globalPool.superAdmin; 604 | const dailyPot: DailyPot = await getDailyPot(); 605 | const claimPrize = dailyPot.claimPrize; 606 | 607 | let winnerAcc = await program.account.idPool.fetch(dailyPot.winner); 608 | let winner = winnerAcc.player; 609 | 610 | if (userAddress.toBase58() === winner.toBase58()) { 611 | console.log(claimPrize.toNumber()); 612 | 613 | let dailyPotKey = await PublicKey.createWithSeed( 614 | adminAddress, 615 | "daily-pot", 616 | program.programId, 617 | ); 618 | const tx = await program.rpc.claim( 619 | vaultBump, { 620 | accounts: { 621 | owner: userAddress, 622 | dailyPot: dailyPotKey, 623 | rewardVault, 624 | treasuryWallet: new PublicKey(TREASURY_WALLET), 625 | systemProgram: SystemProgram.programId, 626 | }, 627 | instructions: [], 628 | signers: [], 629 | }); 630 | await solConnection.confirmTransaction(tx, "confirmed"); 631 | 632 | console.log(`The Winner ${userAddress.toBase58()} Claimed ${claimPrize.toNumber()} Successfully`); 633 | } else { 634 | console.log(`You aren't the winner!`); 635 | } 636 | } 637 | 638 | /** 639 | * @dev The claim funtion that can claim the winner Prize from the weekly_pot 640 | * @param userAddress The caller address to claim reward from the rewardVault 641 | */ 642 | export const claimWeekly = async ( 643 | userAddress: PublicKey, 644 | ) => { 645 | const [rewardVault, vaultBump] = await PublicKey.findProgramAddress( 646 | [Buffer.from(REWARD_VAULT_SEED)], 647 | program.programId 648 | ); 649 | const globalPool: GlobalPool = await getGlobalState(); 650 | const adminAddress = globalPool.superAdmin; 651 | const weeklyPot: WeeklyPot = await getWeeklyPot(); 652 | const claimPrize = weeklyPot.claimPrize; 653 | 654 | let winnerAcc = await program.account.idPool.fetch(weeklyPot.winner); 655 | let winner = winnerAcc.player; 656 | 657 | if (userAddress.toBase58() === winner.toBase58()) { 658 | console.log(claimPrize.toNumber()); 659 | 660 | let weeklyPotKey = await PublicKey.createWithSeed( 661 | adminAddress, 662 | "weekly-pot", 663 | program.programId, 664 | ); 665 | const tx = await program.rpc.claimWeekly( 666 | vaultBump, { 667 | accounts: { 668 | owner: userAddress, 669 | weeklyPot: weeklyPotKey, 670 | rewardVault, 671 | treasuryWallet: new PublicKey(TREASURY_WALLET), 672 | systemProgram: SystemProgram.programId, 673 | }, 674 | instructions: [], 675 | signers: [], 676 | }); 677 | await solConnection.confirmTransaction(tx, "confirmed"); 678 | 679 | console.log(`The Winner ${userAddress.toBase58()} Claimed ${claimPrize.toNumber()} Successfully`); 680 | } else { 681 | console.log(`You aren't the winner!`); 682 | } 683 | } 684 | 685 | /** 686 | * @dev The claim funtion that can claim the winner Prize from the monthy_pot 687 | * @param userAddress The caller address to claim reward from the rewardVault 688 | */ 689 | export const claimMonthly = async ( 690 | userAddress: PublicKey, 691 | ) => { 692 | const [rewardVault, vaultBump] = await PublicKey.findProgramAddress( 693 | [Buffer.from(REWARD_VAULT_SEED)], 694 | program.programId 695 | ); 696 | const globalPool: GlobalPool = await getGlobalState(); 697 | const adminAddress = globalPool.superAdmin; 698 | const monthlyPot: MonthlyPot = await getMonthlyPot(); 699 | const claimPrize = monthlyPot.claimPrize; 700 | 701 | let winnerAcc = await program.account.idPool.fetch(monthlyPot.winner); 702 | let winner = winnerAcc.player; 703 | 704 | if (userAddress.toBase58() === winner.toBase58()) { 705 | console.log(claimPrize.toNumber()); 706 | 707 | let monthlyPotKey = await PublicKey.createWithSeed( 708 | adminAddress, 709 | "monthly-pot", 710 | program.programId, 711 | ); 712 | const tx = await program.rpc.claimMonthly( 713 | vaultBump, { 714 | accounts: { 715 | owner: userAddress, 716 | monthlyPot: monthlyPotKey, 717 | rewardVault, 718 | treasuryWallet: new PublicKey(TREASURY_WALLET), 719 | systemProgram: SystemProgram.programId, 720 | }, 721 | instructions: [], 722 | signers: [], 723 | }); 724 | await solConnection.confirmTransaction(tx, "confirmed"); 725 | 726 | console.log(`The Winner ${userAddress.toBase58()} Claimed ${claimPrize.toNumber()} Successfully`); 727 | } else { 728 | console.log(`You aren't the winner!`); 729 | } 730 | } 731 | 732 | /** 733 | * @dev get GlobalPool data- admin address of the globalpool 734 | * @returns GlobalPool state 735 | */ 736 | export const getGlobalState = async ( 737 | ): Promise => { 738 | const [globalAuthority, bump] = await PublicKey.findProgramAddress( 739 | [Buffer.from(GLOBAL_AUTHORITY_SEED)], 740 | program.programId 741 | ); 742 | try { 743 | let globalState = await program.account.globalPool.fetch(globalAuthority); 744 | return globalState as GlobalPool; 745 | } catch { 746 | return null; 747 | } 748 | } 749 | 750 | /** 751 | * @dev get DailyPot data- count, startTime, prize, entrants[], endTime, claimPrize, winner 752 | * @returns DailyPot state 753 | */ 754 | export const getDailyPot = async ( 755 | ): Promise => { 756 | const globalPool: GlobalPool = await getGlobalState(); 757 | const adminAddress = globalPool.superAdmin; 758 | 759 | let dailyPotKey = await PublicKey.createWithSeed( 760 | adminAddress, 761 | "daily-pot", 762 | program.programId, 763 | ); 764 | try { 765 | let dailyPot = await program.account.dailyPot.fetch(dailyPotKey); 766 | return dailyPot as DailyPot; 767 | } catch { 768 | return null; 769 | } 770 | } 771 | 772 | /** 773 | * @dev get WeeklyPot data- count, startTime, prize, entrants[], endTime, claimPrize, winner 774 | * @returns WeeklyPot state 775 | */ 776 | export const getWeeklyPot = async ( 777 | ): Promise => { 778 | const globalPool: GlobalPool = await getGlobalState(); 779 | const adminAddress = globalPool.superAdmin; 780 | 781 | let weeklyPotKey = await PublicKey.createWithSeed( 782 | adminAddress, 783 | "weekly-pot", 784 | program.programId, 785 | ); 786 | try { 787 | let weeklyPot = await program.account.weeklyPot.fetch(weeklyPotKey); 788 | return weeklyPot as WeeklyPot; 789 | } catch { 790 | return null; 791 | } 792 | } 793 | 794 | /** 795 | * @dev get MonthyPot data- count, startTime, prize, entrants[], endTime, claimPrize, winner 796 | * @returns MonthlyPot state 797 | */ 798 | export const getMonthlyPot = async ( 799 | ): Promise => { 800 | const globalPool: GlobalPool = await getGlobalState(); 801 | const adminAddress = globalPool.superAdmin; 802 | 803 | let monthlyPotKey = await PublicKey.createWithSeed( 804 | adminAddress, 805 | "monthly-pot", 806 | program.programId, 807 | ); 808 | try { 809 | let monthlyPot = await program.account.monthlyPot.fetch(monthlyPotKey); 810 | return monthlyPot as MonthlyPot; 811 | } catch { 812 | return null; 813 | } 814 | } 815 | 816 | main(); -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "ahash" 7 | version = "0.7.6" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" 10 | dependencies = [ 11 | "getrandom 0.2.5", 12 | "once_cell", 13 | "version_check", 14 | ] 15 | 16 | [[package]] 17 | name = "aho-corasick" 18 | version = "0.7.18" 19 | source = "registry+https://github.com/rust-lang/crates.io-index" 20 | checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" 21 | dependencies = [ 22 | "memchr", 23 | ] 24 | 25 | [[package]] 26 | name = "anchor-attribute-access-control" 27 | version = "0.20.1" 28 | source = "registry+https://github.com/rust-lang/crates.io-index" 29 | checksum = "105c443a613f29212755fb6c5f946fa82dcf94a80528f643e0faa9d9faeb626b" 30 | dependencies = [ 31 | "anchor-syn", 32 | "anyhow", 33 | "proc-macro2", 34 | "quote", 35 | "regex", 36 | "syn", 37 | ] 38 | 39 | [[package]] 40 | name = "anchor-attribute-account" 41 | version = "0.20.1" 42 | source = "registry+https://github.com/rust-lang/crates.io-index" 43 | checksum = "fdae15851aa41972e9c18c987613c50a916c48c88c97ea3316156a5c772e5faa" 44 | dependencies = [ 45 | "anchor-syn", 46 | "anyhow", 47 | "bs58 0.4.0", 48 | "proc-macro2", 49 | "quote", 50 | "rustversion", 51 | "syn", 52 | ] 53 | 54 | [[package]] 55 | name = "anchor-attribute-constant" 56 | version = "0.20.1" 57 | source = "registry+https://github.com/rust-lang/crates.io-index" 58 | checksum = "6356865217881d0bbea8aa70625937bec6d9952610f1ba2a2452a8e427000687" 59 | dependencies = [ 60 | "anchor-syn", 61 | "proc-macro2", 62 | "syn", 63 | ] 64 | 65 | [[package]] 66 | name = "anchor-attribute-error" 67 | version = "0.20.1" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | checksum = "ebe998ce4e6e0cb0e291d1a1626bd30791cdfdd9d05523111bdf4fd053f08636" 70 | dependencies = [ 71 | "anchor-syn", 72 | "proc-macro2", 73 | "quote", 74 | "syn", 75 | ] 76 | 77 | [[package]] 78 | name = "anchor-attribute-event" 79 | version = "0.20.1" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "c5810498a20554c20354f5648b6041172f2035e58d09ad40dc051dc0d1501f80" 82 | dependencies = [ 83 | "anchor-syn", 84 | "anyhow", 85 | "proc-macro2", 86 | "quote", 87 | "syn", 88 | ] 89 | 90 | [[package]] 91 | name = "anchor-attribute-interface" 92 | version = "0.20.1" 93 | source = "registry+https://github.com/rust-lang/crates.io-index" 94 | checksum = "ac83f085b2be8b3a3412989cf96cf7f683561db7d357c5aa4aa11d48bbb22213" 95 | dependencies = [ 96 | "anchor-syn", 97 | "anyhow", 98 | "heck", 99 | "proc-macro2", 100 | "quote", 101 | "syn", 102 | ] 103 | 104 | [[package]] 105 | name = "anchor-attribute-program" 106 | version = "0.20.1" 107 | source = "registry+https://github.com/rust-lang/crates.io-index" 108 | checksum = "73c56be575d89abcb192afa29deb87b2cdb3c39033abc02f2d16e6af999b23b7" 109 | dependencies = [ 110 | "anchor-syn", 111 | "anyhow", 112 | "proc-macro2", 113 | "quote", 114 | "syn", 115 | ] 116 | 117 | [[package]] 118 | name = "anchor-attribute-state" 119 | version = "0.20.1" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | checksum = "62ab002353b01fcb4f72cca256d5d62db39f9ff39b1d072280deee9798f1f524" 122 | dependencies = [ 123 | "anchor-syn", 124 | "anyhow", 125 | "proc-macro2", 126 | "quote", 127 | "syn", 128 | ] 129 | 130 | [[package]] 131 | name = "anchor-derive-accounts" 132 | version = "0.20.1" 133 | source = "registry+https://github.com/rust-lang/crates.io-index" 134 | checksum = "e9e653cdb322078d95221384c4a527a403560e509ac7cb2b53d3bd664b23c4d6" 135 | dependencies = [ 136 | "anchor-syn", 137 | "anyhow", 138 | "proc-macro2", 139 | "quote", 140 | "syn", 141 | ] 142 | 143 | [[package]] 144 | name = "anchor-lang" 145 | version = "0.20.1" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | checksum = "4815ad6334fd2f561f7ddcc3cfbeed87ed3003724171bd80ebe6383d5173ee8f" 148 | dependencies = [ 149 | "anchor-attribute-access-control", 150 | "anchor-attribute-account", 151 | "anchor-attribute-constant", 152 | "anchor-attribute-error", 153 | "anchor-attribute-event", 154 | "anchor-attribute-interface", 155 | "anchor-attribute-program", 156 | "anchor-attribute-state", 157 | "anchor-derive-accounts", 158 | "arrayref", 159 | "base64 0.13.0", 160 | "bincode", 161 | "borsh", 162 | "bytemuck", 163 | "solana-program", 164 | "thiserror", 165 | ] 166 | 167 | [[package]] 168 | name = "anchor-spl" 169 | version = "0.20.1" 170 | source = "registry+https://github.com/rust-lang/crates.io-index" 171 | checksum = "9ea94b04fc9a0aaae4d4473b0595fb5f55b6c9b38e0d6f596df8c8060f95f096" 172 | dependencies = [ 173 | "anchor-lang", 174 | "solana-program", 175 | "spl-associated-token-account", 176 | "spl-token", 177 | ] 178 | 179 | [[package]] 180 | name = "anchor-syn" 181 | version = "0.20.1" 182 | source = "registry+https://github.com/rust-lang/crates.io-index" 183 | checksum = "3be7bfb6991d79cce3495fb6ce0892f58a5c75a74c8d1c2fc6f62926066eb9f4" 184 | dependencies = [ 185 | "anyhow", 186 | "bs58 0.3.1", 187 | "heck", 188 | "proc-macro2", 189 | "proc-macro2-diagnostics", 190 | "quote", 191 | "serde", 192 | "serde_json", 193 | "sha2", 194 | "syn", 195 | "thiserror", 196 | ] 197 | 198 | [[package]] 199 | name = "anyhow" 200 | version = "1.0.55" 201 | source = "registry+https://github.com/rust-lang/crates.io-index" 202 | checksum = "159bb86af3a200e19a068f4224eae4c8bb2d0fa054c7e5d1cacd5cef95e684cd" 203 | 204 | [[package]] 205 | name = "arrayref" 206 | version = "0.3.6" 207 | source = "registry+https://github.com/rust-lang/crates.io-index" 208 | checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" 209 | 210 | [[package]] 211 | name = "arrayvec" 212 | version = "0.7.2" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" 215 | 216 | [[package]] 217 | name = "atty" 218 | version = "0.2.14" 219 | source = "registry+https://github.com/rust-lang/crates.io-index" 220 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 221 | dependencies = [ 222 | "hermit-abi", 223 | "libc", 224 | "winapi", 225 | ] 226 | 227 | [[package]] 228 | name = "autocfg" 229 | version = "1.1.0" 230 | source = "registry+https://github.com/rust-lang/crates.io-index" 231 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 232 | 233 | [[package]] 234 | name = "base64" 235 | version = "0.12.3" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 238 | 239 | [[package]] 240 | name = "base64" 241 | version = "0.13.0" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" 244 | 245 | [[package]] 246 | name = "bincode" 247 | version = "1.3.3" 248 | source = "registry+https://github.com/rust-lang/crates.io-index" 249 | checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 250 | dependencies = [ 251 | "serde", 252 | ] 253 | 254 | [[package]] 255 | name = "bitflags" 256 | version = "1.3.2" 257 | source = "registry+https://github.com/rust-lang/crates.io-index" 258 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 259 | 260 | [[package]] 261 | name = "blake3" 262 | version = "1.3.1" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" 265 | dependencies = [ 266 | "arrayref", 267 | "arrayvec", 268 | "cc", 269 | "cfg-if", 270 | "constant_time_eq", 271 | "digest 0.10.3", 272 | ] 273 | 274 | [[package]] 275 | name = "block-buffer" 276 | version = "0.9.0" 277 | source = "registry+https://github.com/rust-lang/crates.io-index" 278 | checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" 279 | dependencies = [ 280 | "block-padding", 281 | "generic-array", 282 | ] 283 | 284 | [[package]] 285 | name = "block-buffer" 286 | version = "0.10.2" 287 | source = "registry+https://github.com/rust-lang/crates.io-index" 288 | checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" 289 | dependencies = [ 290 | "generic-array", 291 | ] 292 | 293 | [[package]] 294 | name = "block-padding" 295 | version = "0.2.1" 296 | source = "registry+https://github.com/rust-lang/crates.io-index" 297 | checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" 298 | 299 | [[package]] 300 | name = "borsh" 301 | version = "0.9.3" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" 304 | dependencies = [ 305 | "borsh-derive", 306 | "hashbrown", 307 | ] 308 | 309 | [[package]] 310 | name = "borsh-derive" 311 | version = "0.9.3" 312 | source = "registry+https://github.com/rust-lang/crates.io-index" 313 | checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" 314 | dependencies = [ 315 | "borsh-derive-internal", 316 | "borsh-schema-derive-internal", 317 | "proc-macro-crate 0.1.5", 318 | "proc-macro2", 319 | "syn", 320 | ] 321 | 322 | [[package]] 323 | name = "borsh-derive-internal" 324 | version = "0.9.3" 325 | source = "registry+https://github.com/rust-lang/crates.io-index" 326 | checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" 327 | dependencies = [ 328 | "proc-macro2", 329 | "quote", 330 | "syn", 331 | ] 332 | 333 | [[package]] 334 | name = "borsh-schema-derive-internal" 335 | version = "0.9.3" 336 | source = "registry+https://github.com/rust-lang/crates.io-index" 337 | checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" 338 | dependencies = [ 339 | "proc-macro2", 340 | "quote", 341 | "syn", 342 | ] 343 | 344 | [[package]] 345 | name = "bs58" 346 | version = "0.3.1" 347 | source = "registry+https://github.com/rust-lang/crates.io-index" 348 | checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" 349 | 350 | [[package]] 351 | name = "bs58" 352 | version = "0.4.0" 353 | source = "registry+https://github.com/rust-lang/crates.io-index" 354 | checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" 355 | 356 | [[package]] 357 | name = "bumpalo" 358 | version = "3.9.1" 359 | source = "registry+https://github.com/rust-lang/crates.io-index" 360 | checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" 361 | 362 | [[package]] 363 | name = "bv" 364 | version = "0.11.1" 365 | source = "registry+https://github.com/rust-lang/crates.io-index" 366 | checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" 367 | dependencies = [ 368 | "feature-probe", 369 | "serde", 370 | ] 371 | 372 | [[package]] 373 | name = "bytemuck" 374 | version = "1.7.3" 375 | source = "registry+https://github.com/rust-lang/crates.io-index" 376 | checksum = "439989e6b8c38d1b6570a384ef1e49c8848128f5a97f3914baef02920842712f" 377 | dependencies = [ 378 | "bytemuck_derive", 379 | ] 380 | 381 | [[package]] 382 | name = "bytemuck_derive" 383 | version = "1.0.1" 384 | source = "registry+https://github.com/rust-lang/crates.io-index" 385 | checksum = "8e215f8c2f9f79cb53c8335e687ffd07d5bfcb6fe5fc80723762d0be46e7cc54" 386 | dependencies = [ 387 | "proc-macro2", 388 | "quote", 389 | "syn", 390 | ] 391 | 392 | [[package]] 393 | name = "byteorder" 394 | version = "1.4.3" 395 | source = "registry+https://github.com/rust-lang/crates.io-index" 396 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 397 | 398 | [[package]] 399 | name = "cc" 400 | version = "1.0.73" 401 | source = "registry+https://github.com/rust-lang/crates.io-index" 402 | checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" 403 | 404 | [[package]] 405 | name = "cfg-if" 406 | version = "1.0.0" 407 | source = "registry+https://github.com/rust-lang/crates.io-index" 408 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 409 | 410 | [[package]] 411 | name = "console_error_panic_hook" 412 | version = "0.1.7" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 415 | dependencies = [ 416 | "cfg-if", 417 | "wasm-bindgen", 418 | ] 419 | 420 | [[package]] 421 | name = "console_log" 422 | version = "0.2.0" 423 | source = "registry+https://github.com/rust-lang/crates.io-index" 424 | checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494" 425 | dependencies = [ 426 | "log", 427 | "web-sys", 428 | ] 429 | 430 | [[package]] 431 | name = "constant_time_eq" 432 | version = "0.1.5" 433 | source = "registry+https://github.com/rust-lang/crates.io-index" 434 | checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" 435 | 436 | [[package]] 437 | name = "cpufeatures" 438 | version = "0.2.1" 439 | source = "registry+https://github.com/rust-lang/crates.io-index" 440 | checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" 441 | dependencies = [ 442 | "libc", 443 | ] 444 | 445 | [[package]] 446 | name = "crunchy" 447 | version = "0.2.2" 448 | source = "registry+https://github.com/rust-lang/crates.io-index" 449 | checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 450 | 451 | [[package]] 452 | name = "crypto-common" 453 | version = "0.1.3" 454 | source = "registry+https://github.com/rust-lang/crates.io-index" 455 | checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" 456 | dependencies = [ 457 | "generic-array", 458 | "typenum", 459 | ] 460 | 461 | [[package]] 462 | name = "crypto-mac" 463 | version = "0.8.0" 464 | source = "registry+https://github.com/rust-lang/crates.io-index" 465 | checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" 466 | dependencies = [ 467 | "generic-array", 468 | "subtle", 469 | ] 470 | 471 | [[package]] 472 | name = "curve25519-dalek" 473 | version = "3.2.1" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" 476 | dependencies = [ 477 | "byteorder", 478 | "digest 0.9.0", 479 | "rand_core", 480 | "subtle", 481 | "zeroize", 482 | ] 483 | 484 | [[package]] 485 | name = "digest" 486 | version = "0.9.0" 487 | source = "registry+https://github.com/rust-lang/crates.io-index" 488 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 489 | dependencies = [ 490 | "generic-array", 491 | ] 492 | 493 | [[package]] 494 | name = "digest" 495 | version = "0.10.3" 496 | source = "registry+https://github.com/rust-lang/crates.io-index" 497 | checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" 498 | dependencies = [ 499 | "block-buffer 0.10.2", 500 | "crypto-common", 501 | "subtle", 502 | ] 503 | 504 | [[package]] 505 | name = "either" 506 | version = "1.6.1" 507 | source = "registry+https://github.com/rust-lang/crates.io-index" 508 | checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" 509 | 510 | [[package]] 511 | name = "env_logger" 512 | version = "0.9.0" 513 | source = "registry+https://github.com/rust-lang/crates.io-index" 514 | checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" 515 | dependencies = [ 516 | "atty", 517 | "humantime", 518 | "log", 519 | "regex", 520 | "termcolor", 521 | ] 522 | 523 | [[package]] 524 | name = "feature-probe" 525 | version = "0.1.1" 526 | source = "registry+https://github.com/rust-lang/crates.io-index" 527 | checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" 528 | 529 | [[package]] 530 | name = "generic-array" 531 | version = "0.14.5" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" 534 | dependencies = [ 535 | "serde", 536 | "typenum", 537 | "version_check", 538 | ] 539 | 540 | [[package]] 541 | name = "getrandom" 542 | version = "0.1.16" 543 | source = "registry+https://github.com/rust-lang/crates.io-index" 544 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 545 | dependencies = [ 546 | "cfg-if", 547 | "js-sys", 548 | "libc", 549 | "wasi 0.9.0+wasi-snapshot-preview1", 550 | "wasm-bindgen", 551 | ] 552 | 553 | [[package]] 554 | name = "getrandom" 555 | version = "0.2.5" 556 | source = "registry+https://github.com/rust-lang/crates.io-index" 557 | checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" 558 | dependencies = [ 559 | "cfg-if", 560 | "libc", 561 | "wasi 0.10.2+wasi-snapshot-preview1", 562 | ] 563 | 564 | [[package]] 565 | name = "hashbrown" 566 | version = "0.11.2" 567 | source = "registry+https://github.com/rust-lang/crates.io-index" 568 | checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" 569 | dependencies = [ 570 | "ahash", 571 | ] 572 | 573 | [[package]] 574 | name = "heck" 575 | version = "0.3.3" 576 | source = "registry+https://github.com/rust-lang/crates.io-index" 577 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 578 | dependencies = [ 579 | "unicode-segmentation", 580 | ] 581 | 582 | [[package]] 583 | name = "hermit-abi" 584 | version = "0.1.19" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 587 | dependencies = [ 588 | "libc", 589 | ] 590 | 591 | [[package]] 592 | name = "hmac" 593 | version = "0.8.1" 594 | source = "registry+https://github.com/rust-lang/crates.io-index" 595 | checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" 596 | dependencies = [ 597 | "crypto-mac", 598 | "digest 0.9.0", 599 | ] 600 | 601 | [[package]] 602 | name = "hmac-drbg" 603 | version = "0.3.0" 604 | source = "registry+https://github.com/rust-lang/crates.io-index" 605 | checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" 606 | dependencies = [ 607 | "digest 0.9.0", 608 | "generic-array", 609 | "hmac", 610 | ] 611 | 612 | [[package]] 613 | name = "honey_pot" 614 | version = "0.1.0" 615 | dependencies = [ 616 | "anchor-lang", 617 | "anchor-spl", 618 | "solana-program", 619 | "spl-token", 620 | ] 621 | 622 | [[package]] 623 | name = "humantime" 624 | version = "2.1.0" 625 | source = "registry+https://github.com/rust-lang/crates.io-index" 626 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 627 | 628 | [[package]] 629 | name = "instant" 630 | version = "0.1.12" 631 | source = "registry+https://github.com/rust-lang/crates.io-index" 632 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 633 | dependencies = [ 634 | "cfg-if", 635 | ] 636 | 637 | [[package]] 638 | name = "itertools" 639 | version = "0.10.3" 640 | source = "registry+https://github.com/rust-lang/crates.io-index" 641 | checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" 642 | dependencies = [ 643 | "either", 644 | ] 645 | 646 | [[package]] 647 | name = "itoa" 648 | version = "1.0.1" 649 | source = "registry+https://github.com/rust-lang/crates.io-index" 650 | checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" 651 | 652 | [[package]] 653 | name = "js-sys" 654 | version = "0.3.56" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" 657 | dependencies = [ 658 | "wasm-bindgen", 659 | ] 660 | 661 | [[package]] 662 | name = "keccak" 663 | version = "0.1.0" 664 | source = "registry+https://github.com/rust-lang/crates.io-index" 665 | checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" 666 | 667 | [[package]] 668 | name = "lazy_static" 669 | version = "1.4.0" 670 | source = "registry+https://github.com/rust-lang/crates.io-index" 671 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 672 | 673 | [[package]] 674 | name = "libc" 675 | version = "0.2.119" 676 | source = "registry+https://github.com/rust-lang/crates.io-index" 677 | checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" 678 | 679 | [[package]] 680 | name = "libsecp256k1" 681 | version = "0.6.0" 682 | source = "registry+https://github.com/rust-lang/crates.io-index" 683 | checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" 684 | dependencies = [ 685 | "arrayref", 686 | "base64 0.12.3", 687 | "digest 0.9.0", 688 | "hmac-drbg", 689 | "libsecp256k1-core", 690 | "libsecp256k1-gen-ecmult", 691 | "libsecp256k1-gen-genmult", 692 | "rand", 693 | "serde", 694 | "sha2", 695 | "typenum", 696 | ] 697 | 698 | [[package]] 699 | name = "libsecp256k1-core" 700 | version = "0.2.2" 701 | source = "registry+https://github.com/rust-lang/crates.io-index" 702 | checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" 703 | dependencies = [ 704 | "crunchy", 705 | "digest 0.9.0", 706 | "subtle", 707 | ] 708 | 709 | [[package]] 710 | name = "libsecp256k1-gen-ecmult" 711 | version = "0.2.1" 712 | source = "registry+https://github.com/rust-lang/crates.io-index" 713 | checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" 714 | dependencies = [ 715 | "libsecp256k1-core", 716 | ] 717 | 718 | [[package]] 719 | name = "libsecp256k1-gen-genmult" 720 | version = "0.2.1" 721 | source = "registry+https://github.com/rust-lang/crates.io-index" 722 | checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" 723 | dependencies = [ 724 | "libsecp256k1-core", 725 | ] 726 | 727 | [[package]] 728 | name = "lock_api" 729 | version = "0.4.6" 730 | source = "registry+https://github.com/rust-lang/crates.io-index" 731 | checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" 732 | dependencies = [ 733 | "scopeguard", 734 | ] 735 | 736 | [[package]] 737 | name = "log" 738 | version = "0.4.14" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" 741 | dependencies = [ 742 | "cfg-if", 743 | ] 744 | 745 | [[package]] 746 | name = "memchr" 747 | version = "2.4.1" 748 | source = "registry+https://github.com/rust-lang/crates.io-index" 749 | checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" 750 | 751 | [[package]] 752 | name = "memmap2" 753 | version = "0.5.3" 754 | source = "registry+https://github.com/rust-lang/crates.io-index" 755 | checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f" 756 | dependencies = [ 757 | "libc", 758 | ] 759 | 760 | [[package]] 761 | name = "num-derive" 762 | version = "0.3.3" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" 765 | dependencies = [ 766 | "proc-macro2", 767 | "quote", 768 | "syn", 769 | ] 770 | 771 | [[package]] 772 | name = "num-traits" 773 | version = "0.2.14" 774 | source = "registry+https://github.com/rust-lang/crates.io-index" 775 | checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" 776 | dependencies = [ 777 | "autocfg", 778 | ] 779 | 780 | [[package]] 781 | name = "num_enum" 782 | version = "0.5.6" 783 | source = "registry+https://github.com/rust-lang/crates.io-index" 784 | checksum = "720d3ea1055e4e4574c0c0b0f8c3fd4f24c4cdaf465948206dea090b57b526ad" 785 | dependencies = [ 786 | "num_enum_derive", 787 | ] 788 | 789 | [[package]] 790 | name = "num_enum_derive" 791 | version = "0.5.6" 792 | source = "registry+https://github.com/rust-lang/crates.io-index" 793 | checksum = "0d992b768490d7fe0d8586d9b5745f6c49f557da6d81dc982b1d167ad4edbb21" 794 | dependencies = [ 795 | "proc-macro-crate 1.1.3", 796 | "proc-macro2", 797 | "quote", 798 | "syn", 799 | ] 800 | 801 | [[package]] 802 | name = "once_cell" 803 | version = "1.9.0" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" 806 | 807 | [[package]] 808 | name = "opaque-debug" 809 | version = "0.3.0" 810 | source = "registry+https://github.com/rust-lang/crates.io-index" 811 | checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" 812 | 813 | [[package]] 814 | name = "parking_lot" 815 | version = "0.11.2" 816 | source = "registry+https://github.com/rust-lang/crates.io-index" 817 | checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 818 | dependencies = [ 819 | "instant", 820 | "lock_api", 821 | "parking_lot_core", 822 | ] 823 | 824 | [[package]] 825 | name = "parking_lot_core" 826 | version = "0.8.5" 827 | source = "registry+https://github.com/rust-lang/crates.io-index" 828 | checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" 829 | dependencies = [ 830 | "cfg-if", 831 | "instant", 832 | "libc", 833 | "redox_syscall", 834 | "smallvec", 835 | "winapi", 836 | ] 837 | 838 | [[package]] 839 | name = "ppv-lite86" 840 | version = "0.2.16" 841 | source = "registry+https://github.com/rust-lang/crates.io-index" 842 | checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" 843 | 844 | [[package]] 845 | name = "proc-macro-crate" 846 | version = "0.1.5" 847 | source = "registry+https://github.com/rust-lang/crates.io-index" 848 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 849 | dependencies = [ 850 | "toml", 851 | ] 852 | 853 | [[package]] 854 | name = "proc-macro-crate" 855 | version = "1.1.3" 856 | source = "registry+https://github.com/rust-lang/crates.io-index" 857 | checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" 858 | dependencies = [ 859 | "thiserror", 860 | "toml", 861 | ] 862 | 863 | [[package]] 864 | name = "proc-macro2" 865 | version = "1.0.36" 866 | source = "registry+https://github.com/rust-lang/crates.io-index" 867 | checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" 868 | dependencies = [ 869 | "unicode-xid", 870 | ] 871 | 872 | [[package]] 873 | name = "proc-macro2-diagnostics" 874 | version = "0.9.1" 875 | source = "registry+https://github.com/rust-lang/crates.io-index" 876 | checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" 877 | dependencies = [ 878 | "proc-macro2", 879 | "quote", 880 | "syn", 881 | "version_check", 882 | "yansi", 883 | ] 884 | 885 | [[package]] 886 | name = "quote" 887 | version = "1.0.15" 888 | source = "registry+https://github.com/rust-lang/crates.io-index" 889 | checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" 890 | dependencies = [ 891 | "proc-macro2", 892 | ] 893 | 894 | [[package]] 895 | name = "rand" 896 | version = "0.7.3" 897 | source = "registry+https://github.com/rust-lang/crates.io-index" 898 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 899 | dependencies = [ 900 | "getrandom 0.1.16", 901 | "libc", 902 | "rand_chacha", 903 | "rand_core", 904 | "rand_hc", 905 | ] 906 | 907 | [[package]] 908 | name = "rand_chacha" 909 | version = "0.2.2" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 912 | dependencies = [ 913 | "ppv-lite86", 914 | "rand_core", 915 | ] 916 | 917 | [[package]] 918 | name = "rand_core" 919 | version = "0.5.1" 920 | source = "registry+https://github.com/rust-lang/crates.io-index" 921 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 922 | dependencies = [ 923 | "getrandom 0.1.16", 924 | ] 925 | 926 | [[package]] 927 | name = "rand_hc" 928 | version = "0.2.0" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 931 | dependencies = [ 932 | "rand_core", 933 | ] 934 | 935 | [[package]] 936 | name = "redox_syscall" 937 | version = "0.2.10" 938 | source = "registry+https://github.com/rust-lang/crates.io-index" 939 | checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" 940 | dependencies = [ 941 | "bitflags", 942 | ] 943 | 944 | [[package]] 945 | name = "regex" 946 | version = "1.5.4" 947 | source = "registry+https://github.com/rust-lang/crates.io-index" 948 | checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" 949 | dependencies = [ 950 | "aho-corasick", 951 | "memchr", 952 | "regex-syntax", 953 | ] 954 | 955 | [[package]] 956 | name = "regex-syntax" 957 | version = "0.6.25" 958 | source = "registry+https://github.com/rust-lang/crates.io-index" 959 | checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" 960 | 961 | [[package]] 962 | name = "rustc_version" 963 | version = "0.4.0" 964 | source = "registry+https://github.com/rust-lang/crates.io-index" 965 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 966 | dependencies = [ 967 | "semver", 968 | ] 969 | 970 | [[package]] 971 | name = "rustversion" 972 | version = "1.0.6" 973 | source = "registry+https://github.com/rust-lang/crates.io-index" 974 | checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" 975 | 976 | [[package]] 977 | name = "ryu" 978 | version = "1.0.9" 979 | source = "registry+https://github.com/rust-lang/crates.io-index" 980 | checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" 981 | 982 | [[package]] 983 | name = "scopeguard" 984 | version = "1.1.0" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 987 | 988 | [[package]] 989 | name = "semver" 990 | version = "1.0.6" 991 | source = "registry+https://github.com/rust-lang/crates.io-index" 992 | checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d" 993 | 994 | [[package]] 995 | name = "serde" 996 | version = "1.0.136" 997 | source = "registry+https://github.com/rust-lang/crates.io-index" 998 | checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" 999 | dependencies = [ 1000 | "serde_derive", 1001 | ] 1002 | 1003 | [[package]] 1004 | name = "serde_bytes" 1005 | version = "0.11.5" 1006 | source = "registry+https://github.com/rust-lang/crates.io-index" 1007 | checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" 1008 | dependencies = [ 1009 | "serde", 1010 | ] 1011 | 1012 | [[package]] 1013 | name = "serde_derive" 1014 | version = "1.0.136" 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" 1016 | checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" 1017 | dependencies = [ 1018 | "proc-macro2", 1019 | "quote", 1020 | "syn", 1021 | ] 1022 | 1023 | [[package]] 1024 | name = "serde_json" 1025 | version = "1.0.79" 1026 | source = "registry+https://github.com/rust-lang/crates.io-index" 1027 | checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" 1028 | dependencies = [ 1029 | "itoa", 1030 | "ryu", 1031 | "serde", 1032 | ] 1033 | 1034 | [[package]] 1035 | name = "sha2" 1036 | version = "0.9.9" 1037 | source = "registry+https://github.com/rust-lang/crates.io-index" 1038 | checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" 1039 | dependencies = [ 1040 | "block-buffer 0.9.0", 1041 | "cfg-if", 1042 | "cpufeatures", 1043 | "digest 0.9.0", 1044 | "opaque-debug", 1045 | ] 1046 | 1047 | [[package]] 1048 | name = "sha3" 1049 | version = "0.9.1" 1050 | source = "registry+https://github.com/rust-lang/crates.io-index" 1051 | checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" 1052 | dependencies = [ 1053 | "block-buffer 0.9.0", 1054 | "digest 0.9.0", 1055 | "keccak", 1056 | "opaque-debug", 1057 | ] 1058 | 1059 | [[package]] 1060 | name = "smallvec" 1061 | version = "1.8.0" 1062 | source = "registry+https://github.com/rust-lang/crates.io-index" 1063 | checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" 1064 | 1065 | [[package]] 1066 | name = "solana-frozen-abi" 1067 | version = "1.9.5" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | checksum = "fbb58e258da28e714904b62a1e8b7de5b01d349420a88409c84cb57264699021" 1070 | dependencies = [ 1071 | "bs58 0.4.0", 1072 | "bv", 1073 | "generic-array", 1074 | "log", 1075 | "memmap2", 1076 | "rustc_version", 1077 | "serde", 1078 | "serde_derive", 1079 | "sha2", 1080 | "solana-frozen-abi-macro", 1081 | "solana-logger", 1082 | "thiserror", 1083 | ] 1084 | 1085 | [[package]] 1086 | name = "solana-frozen-abi-macro" 1087 | version = "1.9.5" 1088 | source = "registry+https://github.com/rust-lang/crates.io-index" 1089 | checksum = "7f9c141ee23138a001bf94a9850fff3c8804e52fa36c151a8a4699f60bd55f74" 1090 | dependencies = [ 1091 | "proc-macro2", 1092 | "quote", 1093 | "rustc_version", 1094 | "syn", 1095 | ] 1096 | 1097 | [[package]] 1098 | name = "solana-logger" 1099 | version = "1.9.5" 1100 | source = "registry+https://github.com/rust-lang/crates.io-index" 1101 | checksum = "72b63b04c1a2077f2eadb3c63988a14bc4fa4419f291fea7112a9c595db1e63b" 1102 | dependencies = [ 1103 | "env_logger", 1104 | "lazy_static", 1105 | "log", 1106 | ] 1107 | 1108 | [[package]] 1109 | name = "solana-program" 1110 | version = "1.9.5" 1111 | source = "registry+https://github.com/rust-lang/crates.io-index" 1112 | checksum = "0c41b2af0be4fc039852c74926a8a026e97f9b1d7c02c15610bb6a614268a4ea" 1113 | dependencies = [ 1114 | "base64 0.13.0", 1115 | "bincode", 1116 | "bitflags", 1117 | "blake3", 1118 | "borsh", 1119 | "borsh-derive", 1120 | "bs58 0.4.0", 1121 | "bv", 1122 | "bytemuck", 1123 | "console_error_panic_hook", 1124 | "console_log", 1125 | "curve25519-dalek", 1126 | "getrandom 0.1.16", 1127 | "itertools", 1128 | "js-sys", 1129 | "lazy_static", 1130 | "libsecp256k1", 1131 | "log", 1132 | "num-derive", 1133 | "num-traits", 1134 | "parking_lot", 1135 | "rand", 1136 | "rustc_version", 1137 | "rustversion", 1138 | "serde", 1139 | "serde_bytes", 1140 | "serde_derive", 1141 | "sha2", 1142 | "sha3", 1143 | "solana-frozen-abi", 1144 | "solana-frozen-abi-macro", 1145 | "solana-logger", 1146 | "solana-sdk-macro", 1147 | "thiserror", 1148 | "wasm-bindgen", 1149 | ] 1150 | 1151 | [[package]] 1152 | name = "solana-sdk-macro" 1153 | version = "1.9.5" 1154 | source = "registry+https://github.com/rust-lang/crates.io-index" 1155 | checksum = "238b93350286f73c2bd94c1a307bb0226a2f78070937bcf273bf968859f8cc39" 1156 | dependencies = [ 1157 | "bs58 0.4.0", 1158 | "proc-macro2", 1159 | "quote", 1160 | "rustversion", 1161 | "syn", 1162 | ] 1163 | 1164 | [[package]] 1165 | name = "spl-associated-token-account" 1166 | version = "1.0.3" 1167 | source = "registry+https://github.com/rust-lang/crates.io-index" 1168 | checksum = "393e2240d521c3dd770806bff25c2c00d761ac962be106e14e22dd912007f428" 1169 | dependencies = [ 1170 | "solana-program", 1171 | "spl-token", 1172 | ] 1173 | 1174 | [[package]] 1175 | name = "spl-token" 1176 | version = "3.3.0" 1177 | source = "registry+https://github.com/rust-lang/crates.io-index" 1178 | checksum = "0cc67166ef99d10c18cb5e9c208901e6d8255c6513bb1f877977eba48e6cc4fb" 1179 | dependencies = [ 1180 | "arrayref", 1181 | "num-derive", 1182 | "num-traits", 1183 | "num_enum", 1184 | "solana-program", 1185 | "thiserror", 1186 | ] 1187 | 1188 | [[package]] 1189 | name = "subtle" 1190 | version = "2.4.1" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 1193 | 1194 | [[package]] 1195 | name = "syn" 1196 | version = "1.0.86" 1197 | source = "registry+https://github.com/rust-lang/crates.io-index" 1198 | checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" 1199 | dependencies = [ 1200 | "proc-macro2", 1201 | "quote", 1202 | "unicode-xid", 1203 | ] 1204 | 1205 | [[package]] 1206 | name = "termcolor" 1207 | version = "1.1.2" 1208 | source = "registry+https://github.com/rust-lang/crates.io-index" 1209 | checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" 1210 | dependencies = [ 1211 | "winapi-util", 1212 | ] 1213 | 1214 | [[package]] 1215 | name = "thiserror" 1216 | version = "1.0.30" 1217 | source = "registry+https://github.com/rust-lang/crates.io-index" 1218 | checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" 1219 | dependencies = [ 1220 | "thiserror-impl", 1221 | ] 1222 | 1223 | [[package]] 1224 | name = "thiserror-impl" 1225 | version = "1.0.30" 1226 | source = "registry+https://github.com/rust-lang/crates.io-index" 1227 | checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" 1228 | dependencies = [ 1229 | "proc-macro2", 1230 | "quote", 1231 | "syn", 1232 | ] 1233 | 1234 | [[package]] 1235 | name = "toml" 1236 | version = "0.5.8" 1237 | source = "registry+https://github.com/rust-lang/crates.io-index" 1238 | checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" 1239 | dependencies = [ 1240 | "serde", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "typenum" 1245 | version = "1.15.0" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" 1248 | 1249 | [[package]] 1250 | name = "unicode-segmentation" 1251 | version = "1.9.0" 1252 | source = "registry+https://github.com/rust-lang/crates.io-index" 1253 | checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" 1254 | 1255 | [[package]] 1256 | name = "unicode-xid" 1257 | version = "0.2.2" 1258 | source = "registry+https://github.com/rust-lang/crates.io-index" 1259 | checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" 1260 | 1261 | [[package]] 1262 | name = "version_check" 1263 | version = "0.9.4" 1264 | source = "registry+https://github.com/rust-lang/crates.io-index" 1265 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1266 | 1267 | [[package]] 1268 | name = "wasi" 1269 | version = "0.9.0+wasi-snapshot-preview1" 1270 | source = "registry+https://github.com/rust-lang/crates.io-index" 1271 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 1272 | 1273 | [[package]] 1274 | name = "wasi" 1275 | version = "0.10.2+wasi-snapshot-preview1" 1276 | source = "registry+https://github.com/rust-lang/crates.io-index" 1277 | checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" 1278 | 1279 | [[package]] 1280 | name = "wasm-bindgen" 1281 | version = "0.2.79" 1282 | source = "registry+https://github.com/rust-lang/crates.io-index" 1283 | checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" 1284 | dependencies = [ 1285 | "cfg-if", 1286 | "wasm-bindgen-macro", 1287 | ] 1288 | 1289 | [[package]] 1290 | name = "wasm-bindgen-backend" 1291 | version = "0.2.79" 1292 | source = "registry+https://github.com/rust-lang/crates.io-index" 1293 | checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" 1294 | dependencies = [ 1295 | "bumpalo", 1296 | "lazy_static", 1297 | "log", 1298 | "proc-macro2", 1299 | "quote", 1300 | "syn", 1301 | "wasm-bindgen-shared", 1302 | ] 1303 | 1304 | [[package]] 1305 | name = "wasm-bindgen-macro" 1306 | version = "0.2.79" 1307 | source = "registry+https://github.com/rust-lang/crates.io-index" 1308 | checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" 1309 | dependencies = [ 1310 | "quote", 1311 | "wasm-bindgen-macro-support", 1312 | ] 1313 | 1314 | [[package]] 1315 | name = "wasm-bindgen-macro-support" 1316 | version = "0.2.79" 1317 | source = "registry+https://github.com/rust-lang/crates.io-index" 1318 | checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" 1319 | dependencies = [ 1320 | "proc-macro2", 1321 | "quote", 1322 | "syn", 1323 | "wasm-bindgen-backend", 1324 | "wasm-bindgen-shared", 1325 | ] 1326 | 1327 | [[package]] 1328 | name = "wasm-bindgen-shared" 1329 | version = "0.2.79" 1330 | source = "registry+https://github.com/rust-lang/crates.io-index" 1331 | checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" 1332 | 1333 | [[package]] 1334 | name = "web-sys" 1335 | version = "0.3.56" 1336 | source = "registry+https://github.com/rust-lang/crates.io-index" 1337 | checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" 1338 | dependencies = [ 1339 | "js-sys", 1340 | "wasm-bindgen", 1341 | ] 1342 | 1343 | [[package]] 1344 | name = "winapi" 1345 | version = "0.3.9" 1346 | source = "registry+https://github.com/rust-lang/crates.io-index" 1347 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1348 | dependencies = [ 1349 | "winapi-i686-pc-windows-gnu", 1350 | "winapi-x86_64-pc-windows-gnu", 1351 | ] 1352 | 1353 | [[package]] 1354 | name = "winapi-i686-pc-windows-gnu" 1355 | version = "0.4.0" 1356 | source = "registry+https://github.com/rust-lang/crates.io-index" 1357 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1358 | 1359 | [[package]] 1360 | name = "winapi-util" 1361 | version = "0.1.5" 1362 | source = "registry+https://github.com/rust-lang/crates.io-index" 1363 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 1364 | dependencies = [ 1365 | "winapi", 1366 | ] 1367 | 1368 | [[package]] 1369 | name = "winapi-x86_64-pc-windows-gnu" 1370 | version = "0.4.0" 1371 | source = "registry+https://github.com/rust-lang/crates.io-index" 1372 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1373 | 1374 | [[package]] 1375 | name = "yansi" 1376 | version = "0.5.0" 1377 | source = "registry+https://github.com/rust-lang/crates.io-index" 1378 | checksum = "9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71" 1379 | 1380 | [[package]] 1381 | name = "zeroize" 1382 | version = "1.3.0" 1383 | source = "registry+https://github.com/rust-lang/crates.io-index" 1384 | checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" 1385 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5": 6 | "integrity" "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==" 7 | "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz" 8 | "version" "7.17.2" 9 | dependencies: 10 | "regenerator-runtime" "^0.13.4" 11 | 12 | "@ethersproject/bytes@^5.5.0": 13 | "integrity" "sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==" 14 | "resolved" "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.5.0.tgz" 15 | "version" "5.5.0" 16 | dependencies: 17 | "@ethersproject/logger" "^5.5.0" 18 | 19 | "@ethersproject/logger@^5.5.0": 20 | "integrity" "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==" 21 | "resolved" "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz" 22 | "version" "5.5.0" 23 | 24 | "@ethersproject/sha2@^5.5.0": 25 | "integrity" "sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==" 26 | "resolved" "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.5.0.tgz" 27 | "version" "5.5.0" 28 | dependencies: 29 | "@ethersproject/bytes" "^5.5.0" 30 | "@ethersproject/logger" "^5.5.0" 31 | "hash.js" "1.1.7" 32 | 33 | "@project-serum/anchor@^0.20.1": 34 | "integrity" "sha512-2TuBmGUn9qeYz6sJINJlElrBuPsaUAtYyUsJ3XplEBf1pczrANAgs5ceJUFzdiqGEWLn+84ObSdBeChT/AXYFA==" 35 | "resolved" "https://registry.npmjs.org/@project-serum/anchor/-/anchor-0.20.1.tgz" 36 | "version" "0.20.1" 37 | dependencies: 38 | "@project-serum/borsh" "^0.2.2" 39 | "@solana/web3.js" "^1.17.0" 40 | "base64-js" "^1.5.1" 41 | "bn.js" "^5.1.2" 42 | "bs58" "^4.0.1" 43 | "buffer-layout" "^1.2.2" 44 | "camelcase" "^5.3.1" 45 | "crypto-hash" "^1.3.0" 46 | "eventemitter3" "^4.0.7" 47 | "find" "^0.3.0" 48 | "js-sha256" "^0.9.0" 49 | "pako" "^2.0.3" 50 | "snake-case" "^3.0.4" 51 | "toml" "^3.0.0" 52 | 53 | "@project-serum/borsh@^0.2.2": 54 | "integrity" "sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q==" 55 | "resolved" "https://registry.npmjs.org/@project-serum/borsh/-/borsh-0.2.5.tgz" 56 | "version" "0.2.5" 57 | dependencies: 58 | "bn.js" "^5.1.2" 59 | "buffer-layout" "^1.2.0" 60 | 61 | "@solana/buffer-layout@^3.0.0": 62 | "integrity" "sha512-MVdgAKKL39tEs0l8je0hKaXLQFb7Rdfb0Xg2LjFZd8Lfdazkg6xiS98uAZrEKvaoF3i4M95ei9RydkGIDMeo3w==" 63 | "resolved" "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-3.0.0.tgz" 64 | "version" "3.0.0" 65 | dependencies: 66 | "buffer" "~6.0.3" 67 | 68 | "@solana/spl-token@^0.1.8": 69 | "integrity" "sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==" 70 | "resolved" "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.1.8.tgz" 71 | "version" "0.1.8" 72 | dependencies: 73 | "@babel/runtime" "^7.10.5" 74 | "@solana/web3.js" "^1.21.0" 75 | "bn.js" "^5.1.0" 76 | "buffer" "6.0.3" 77 | "buffer-layout" "^1.2.0" 78 | "dotenv" "10.0.0" 79 | 80 | "@solana/web3.js@^1.17.0", "@solana/web3.js@^1.2.0", "@solana/web3.js@^1.21.0": 81 | "integrity" "sha512-3bDawFFI0KcvgI8Ae4N4hdQ8+Bg9gu6q+IkhPrYxOF6RYnB3U+9A4u+DhHZWLvTvgoTyesi/m5HzlleKtFEqRQ==" 82 | "resolved" "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.35.1.tgz" 83 | "version" "1.35.1" 84 | dependencies: 85 | "@babel/runtime" "^7.12.5" 86 | "@ethersproject/sha2" "^5.5.0" 87 | "@solana/buffer-layout" "^3.0.0" 88 | "bn.js" "^5.0.0" 89 | "borsh" "^0.4.0" 90 | "bs58" "^4.0.1" 91 | "buffer" "6.0.1" 92 | "cross-fetch" "^3.1.4" 93 | "jayson" "^3.4.4" 94 | "js-sha3" "^0.8.0" 95 | "rpc-websockets" "^7.4.2" 96 | "secp256k1" "^4.0.2" 97 | "superstruct" "^0.14.2" 98 | "tweetnacl" "^1.0.0" 99 | 100 | "@types/bn.js@^4.11.5": 101 | "integrity" "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==" 102 | "resolved" "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz" 103 | "version" "4.11.6" 104 | dependencies: 105 | "@types/node" "*" 106 | 107 | "@types/chai@^4.3.0": 108 | "integrity" "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==" 109 | "resolved" "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz" 110 | "version" "4.3.0" 111 | 112 | "@types/connect@^3.4.33": 113 | "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==" 114 | "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" 115 | "version" "3.4.35" 116 | dependencies: 117 | "@types/node" "*" 118 | 119 | "@types/express-serve-static-core@^4.17.9": 120 | "integrity" "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==" 121 | "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz" 122 | "version" "4.17.28" 123 | dependencies: 124 | "@types/node" "*" 125 | "@types/qs" "*" 126 | "@types/range-parser" "*" 127 | 128 | "@types/json5@^0.0.29": 129 | "integrity" "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" 130 | "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" 131 | "version" "0.0.29" 132 | 133 | "@types/lodash@^4.14.159": 134 | "integrity" "sha512-uwc1x90yCKqGcIOAT6DwOSuxnrAbpkdPsUOZtwrXb4D/6wZs+6qG7QnIawDuZWg0sWpxl+ltIKCaLoMlna678w==" 135 | "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.179.tgz" 136 | "version" "4.14.179" 137 | 138 | "@types/mocha@^9.0.0": 139 | "integrity" "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==" 140 | "resolved" "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz" 141 | "version" "9.1.0" 142 | 143 | "@types/node@*": 144 | "integrity" "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==" 145 | "resolved" "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz" 146 | "version" "17.0.21" 147 | 148 | "@types/node@^12.12.54": 149 | "integrity" "sha512-cPjLXj8d6anFPzFvOPxS3fvly3Shm5nTfl6g8X5smexixbuGUf7hfr21J5tX9JW+UPStp/5P5R8qrKL5IyVJ+A==" 150 | "resolved" "https://registry.npmjs.org/@types/node/-/node-12.20.46.tgz" 151 | "version" "12.20.46" 152 | 153 | "@types/qs@*": 154 | "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 155 | "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" 156 | "version" "6.9.7" 157 | 158 | "@types/range-parser@*": 159 | "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 160 | "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" 161 | "version" "1.2.4" 162 | 163 | "@types/ws@^7.4.4": 164 | "integrity" "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==" 165 | "resolved" "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz" 166 | "version" "7.4.7" 167 | dependencies: 168 | "@types/node" "*" 169 | 170 | "@ungap/promise-all-settled@1.1.2": 171 | "integrity" "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" 172 | "resolved" "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" 173 | "version" "1.1.2" 174 | 175 | "ansi-colors@4.1.1": 176 | "integrity" "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" 177 | "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" 178 | "version" "4.1.1" 179 | 180 | "ansi-regex@^5.0.1": 181 | "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 182 | "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 183 | "version" "5.0.1" 184 | 185 | "ansi-styles@^4.0.0", "ansi-styles@^4.1.0": 186 | "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" 187 | "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 188 | "version" "4.3.0" 189 | dependencies: 190 | "color-convert" "^2.0.1" 191 | 192 | "anymatch@~3.1.2": 193 | "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" 194 | "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" 195 | "version" "3.1.2" 196 | dependencies: 197 | "normalize-path" "^3.0.0" 198 | "picomatch" "^2.0.4" 199 | 200 | "argparse@^2.0.1": 201 | "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 202 | "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" 203 | "version" "2.0.1" 204 | 205 | "arrify@^1.0.0": 206 | "integrity" "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" 207 | "resolved" "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" 208 | "version" "1.0.1" 209 | 210 | "assertion-error@^1.1.0": 211 | "integrity" "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" 212 | "resolved" "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" 213 | "version" "1.1.0" 214 | 215 | "balanced-match@^1.0.0": 216 | "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 217 | "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 218 | "version" "1.0.2" 219 | 220 | "base-x@^3.0.2": 221 | "integrity" "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==" 222 | "resolved" "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" 223 | "version" "3.0.9" 224 | dependencies: 225 | "safe-buffer" "^5.0.1" 226 | 227 | "base64-js@^1.3.1", "base64-js@^1.5.1": 228 | "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 229 | "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" 230 | "version" "1.5.1" 231 | 232 | "binary-extensions@^2.0.0": 233 | "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 234 | "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" 235 | "version" "2.2.0" 236 | 237 | "bn.js@^4.11.9": 238 | "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" 239 | "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" 240 | "version" "4.12.0" 241 | 242 | "bn.js@^5.0.0", "bn.js@^5.1.0", "bn.js@^5.1.2": 243 | "integrity" "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" 244 | "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" 245 | "version" "5.2.0" 246 | 247 | "borsh@^0.4.0": 248 | "integrity" "sha512-aX6qtLya3K0AkT66CmYWCCDr77qsE9arV05OmdFpmat9qu8Pg9J5tBUPDztAW5fNh/d/MyVG/OYziP52Ndzx1g==" 249 | "resolved" "https://registry.npmjs.org/borsh/-/borsh-0.4.0.tgz" 250 | "version" "0.4.0" 251 | dependencies: 252 | "@types/bn.js" "^4.11.5" 253 | "bn.js" "^5.0.0" 254 | "bs58" "^4.0.0" 255 | "text-encoding-utf-8" "^1.0.2" 256 | 257 | "brace-expansion@^1.1.7": 258 | "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" 259 | "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 260 | "version" "1.1.11" 261 | dependencies: 262 | "balanced-match" "^1.0.0" 263 | "concat-map" "0.0.1" 264 | 265 | "braces@~3.0.2": 266 | "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" 267 | "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" 268 | "version" "3.0.2" 269 | dependencies: 270 | "fill-range" "^7.0.1" 271 | 272 | "brorand@^1.1.0": 273 | "integrity" "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" 274 | "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" 275 | "version" "1.1.0" 276 | 277 | "browser-stdout@1.3.1": 278 | "integrity" "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" 279 | "resolved" "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" 280 | "version" "1.3.1" 281 | 282 | "bs58@^4.0.0", "bs58@^4.0.1": 283 | "integrity" "sha1-vhYedsNU9veIrkBx9j806MTwpCo=" 284 | "resolved" "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" 285 | "version" "4.0.1" 286 | dependencies: 287 | "base-x" "^3.0.2" 288 | 289 | "buffer-from@^1.0.0", "buffer-from@^1.1.0": 290 | "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" 291 | "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" 292 | "version" "1.1.2" 293 | 294 | "buffer-layout@^1.2.0", "buffer-layout@^1.2.2": 295 | "integrity" "sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==" 296 | "resolved" "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz" 297 | "version" "1.2.2" 298 | 299 | "buffer@~6.0.3": 300 | "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" 301 | "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" 302 | "version" "6.0.3" 303 | dependencies: 304 | "base64-js" "^1.3.1" 305 | "ieee754" "^1.2.1" 306 | 307 | "buffer@6.0.1": 308 | "integrity" "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==" 309 | "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz" 310 | "version" "6.0.1" 311 | dependencies: 312 | "base64-js" "^1.3.1" 313 | "ieee754" "^1.2.1" 314 | 315 | "buffer@6.0.3": 316 | "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" 317 | "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" 318 | "version" "6.0.3" 319 | dependencies: 320 | "base64-js" "^1.3.1" 321 | "ieee754" "^1.2.1" 322 | 323 | "bufferutil@^4.0.1": 324 | "integrity" "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==" 325 | "resolved" "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz" 326 | "version" "4.0.6" 327 | dependencies: 328 | "node-gyp-build" "^4.3.0" 329 | 330 | "camelcase@^5.3.1": 331 | "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" 332 | "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" 333 | "version" "5.3.1" 334 | 335 | "camelcase@^6.0.0": 336 | "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" 337 | "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" 338 | "version" "6.3.0" 339 | 340 | "chai@^4.3.4": 341 | "integrity" "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==" 342 | "resolved" "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz" 343 | "version" "4.3.6" 344 | dependencies: 345 | "assertion-error" "^1.1.0" 346 | "check-error" "^1.0.2" 347 | "deep-eql" "^3.0.1" 348 | "get-func-name" "^2.0.0" 349 | "loupe" "^2.3.1" 350 | "pathval" "^1.1.1" 351 | "type-detect" "^4.0.5" 352 | 353 | "chalk@^4.1.0": 354 | "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" 355 | "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 356 | "version" "4.1.2" 357 | dependencies: 358 | "ansi-styles" "^4.1.0" 359 | "supports-color" "^7.1.0" 360 | 361 | "check-error@^1.0.2": 362 | "integrity" "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" 363 | "resolved" "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" 364 | "version" "1.0.2" 365 | 366 | "chokidar@3.5.3": 367 | "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" 368 | "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" 369 | "version" "3.5.3" 370 | dependencies: 371 | "anymatch" "~3.1.2" 372 | "braces" "~3.0.2" 373 | "glob-parent" "~5.1.2" 374 | "is-binary-path" "~2.1.0" 375 | "is-glob" "~4.0.1" 376 | "normalize-path" "~3.0.0" 377 | "readdirp" "~3.6.0" 378 | optionalDependencies: 379 | "fsevents" "~2.3.2" 380 | 381 | "circular-json@^0.5.9": 382 | "integrity" "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==" 383 | "resolved" "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz" 384 | "version" "0.5.9" 385 | 386 | "cliui@^7.0.2": 387 | "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" 388 | "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" 389 | "version" "7.0.4" 390 | dependencies: 391 | "string-width" "^4.2.0" 392 | "strip-ansi" "^6.0.0" 393 | "wrap-ansi" "^7.0.0" 394 | 395 | "color-convert@^2.0.1": 396 | "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" 397 | "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 398 | "version" "2.0.1" 399 | dependencies: 400 | "color-name" "~1.1.4" 401 | 402 | "color-name@~1.1.4": 403 | "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 404 | "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 405 | "version" "1.1.4" 406 | 407 | "commander@^2.20.3": 408 | "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 409 | "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" 410 | "version" "2.20.3" 411 | 412 | "concat-map@0.0.1": 413 | "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 414 | "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 415 | "version" "0.0.1" 416 | 417 | "cross-fetch@^3.1.4": 418 | "integrity" "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==" 419 | "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" 420 | "version" "3.1.5" 421 | dependencies: 422 | "node-fetch" "2.6.7" 423 | 424 | "crypto-hash@^1.3.0": 425 | "integrity" "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==" 426 | "resolved" "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz" 427 | "version" "1.3.0" 428 | 429 | "debug@4.3.3": 430 | "integrity" "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==" 431 | "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" 432 | "version" "4.3.3" 433 | dependencies: 434 | "ms" "2.1.2" 435 | 436 | "decamelize@^4.0.0": 437 | "integrity" "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" 438 | "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" 439 | "version" "4.0.0" 440 | 441 | "deep-eql@^3.0.1": 442 | "integrity" "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==" 443 | "resolved" "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" 444 | "version" "3.0.1" 445 | dependencies: 446 | "type-detect" "^4.0.0" 447 | 448 | "delay@^5.0.0": 449 | "integrity" "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==" 450 | "resolved" "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz" 451 | "version" "5.0.0" 452 | 453 | "diff@^3.1.0": 454 | "integrity" "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" 455 | "resolved" "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" 456 | "version" "3.5.0" 457 | 458 | "diff@5.0.0": 459 | "integrity" "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" 460 | "resolved" "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" 461 | "version" "5.0.0" 462 | 463 | "dot-case@^3.0.4": 464 | "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" 465 | "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" 466 | "version" "3.0.4" 467 | dependencies: 468 | "no-case" "^3.0.4" 469 | "tslib" "^2.0.3" 470 | 471 | "dotenv@10.0.0": 472 | "integrity" "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" 473 | "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" 474 | "version" "10.0.0" 475 | 476 | "elliptic@^6.5.4": 477 | "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" 478 | "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" 479 | "version" "6.5.4" 480 | dependencies: 481 | "bn.js" "^4.11.9" 482 | "brorand" "^1.1.0" 483 | "hash.js" "^1.0.0" 484 | "hmac-drbg" "^1.0.1" 485 | "inherits" "^2.0.4" 486 | "minimalistic-assert" "^1.0.1" 487 | "minimalistic-crypto-utils" "^1.0.1" 488 | 489 | "emoji-regex@^8.0.0": 490 | "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 491 | "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 492 | "version" "8.0.0" 493 | 494 | "es6-promise@^4.0.3": 495 | "integrity" "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" 496 | "resolved" "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" 497 | "version" "4.2.8" 498 | 499 | "es6-promisify@^5.0.0": 500 | "integrity" "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=" 501 | "resolved" "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" 502 | "version" "5.0.0" 503 | dependencies: 504 | "es6-promise" "^4.0.3" 505 | 506 | "escalade@^3.1.1": 507 | "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 508 | "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" 509 | "version" "3.1.1" 510 | 511 | "escape-string-regexp@4.0.0": 512 | "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" 513 | "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" 514 | "version" "4.0.0" 515 | 516 | "eventemitter3@^4.0.7": 517 | "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" 518 | "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" 519 | "version" "4.0.7" 520 | 521 | "eyes@^0.1.8": 522 | "integrity" "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" 523 | "resolved" "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" 524 | "version" "0.1.8" 525 | 526 | "fill-range@^7.0.1": 527 | "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" 528 | "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" 529 | "version" "7.0.1" 530 | dependencies: 531 | "to-regex-range" "^5.0.1" 532 | 533 | "find-up@5.0.0": 534 | "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" 535 | "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" 536 | "version" "5.0.0" 537 | dependencies: 538 | "locate-path" "^6.0.0" 539 | "path-exists" "^4.0.0" 540 | 541 | "find@^0.3.0": 542 | "integrity" "sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==" 543 | "resolved" "https://registry.npmjs.org/find/-/find-0.3.0.tgz" 544 | "version" "0.3.0" 545 | dependencies: 546 | "traverse-chain" "~0.1.0" 547 | 548 | "flat@^5.0.2": 549 | "integrity" "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" 550 | "resolved" "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" 551 | "version" "5.0.2" 552 | 553 | "fs.realpath@^1.0.0": 554 | "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 555 | "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 556 | "version" "1.0.0" 557 | 558 | "get-caller-file@^2.0.5": 559 | "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 560 | "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 561 | "version" "2.0.5" 562 | 563 | "get-func-name@^2.0.0": 564 | "integrity" "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" 565 | "resolved" "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" 566 | "version" "2.0.0" 567 | 568 | "glob-parent@~5.1.2": 569 | "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" 570 | "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 571 | "version" "5.1.2" 572 | dependencies: 573 | "is-glob" "^4.0.1" 574 | 575 | "glob@7.2.0": 576 | "integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==" 577 | "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" 578 | "version" "7.2.0" 579 | dependencies: 580 | "fs.realpath" "^1.0.0" 581 | "inflight" "^1.0.4" 582 | "inherits" "2" 583 | "minimatch" "^3.0.4" 584 | "once" "^1.3.0" 585 | "path-is-absolute" "^1.0.0" 586 | 587 | "growl@1.10.5": 588 | "integrity" "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" 589 | "resolved" "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" 590 | "version" "1.10.5" 591 | 592 | "has-flag@^4.0.0": 593 | "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 594 | "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 595 | "version" "4.0.0" 596 | 597 | "hash.js@^1.0.0", "hash.js@^1.0.3", "hash.js@1.1.7": 598 | "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" 599 | "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" 600 | "version" "1.1.7" 601 | dependencies: 602 | "inherits" "^2.0.3" 603 | "minimalistic-assert" "^1.0.1" 604 | 605 | "he@1.2.0": 606 | "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" 607 | "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" 608 | "version" "1.2.0" 609 | 610 | "hmac-drbg@^1.0.1": 611 | "integrity" "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=" 612 | "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" 613 | "version" "1.0.1" 614 | dependencies: 615 | "hash.js" "^1.0.3" 616 | "minimalistic-assert" "^1.0.0" 617 | "minimalistic-crypto-utils" "^1.0.1" 618 | 619 | "ieee754@^1.2.1": 620 | "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 621 | "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" 622 | "version" "1.2.1" 623 | 624 | "inflight@^1.0.4": 625 | "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" 626 | "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 627 | "version" "1.0.6" 628 | dependencies: 629 | "once" "^1.3.0" 630 | "wrappy" "1" 631 | 632 | "inherits@^2.0.3", "inherits@^2.0.4", "inherits@2": 633 | "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 634 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 635 | "version" "2.0.4" 636 | 637 | "is-binary-path@~2.1.0": 638 | "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" 639 | "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" 640 | "version" "2.1.0" 641 | dependencies: 642 | "binary-extensions" "^2.0.0" 643 | 644 | "is-extglob@^2.1.1": 645 | "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 646 | "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 647 | "version" "2.1.1" 648 | 649 | "is-fullwidth-code-point@^3.0.0": 650 | "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 651 | "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 652 | "version" "3.0.0" 653 | 654 | "is-glob@^4.0.1", "is-glob@~4.0.1": 655 | "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" 656 | "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 657 | "version" "4.0.3" 658 | dependencies: 659 | "is-extglob" "^2.1.1" 660 | 661 | "is-number@^7.0.0": 662 | "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 663 | "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 664 | "version" "7.0.0" 665 | 666 | "is-plain-obj@^2.1.0": 667 | "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" 668 | "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" 669 | "version" "2.1.0" 670 | 671 | "is-unicode-supported@^0.1.0": 672 | "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" 673 | "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" 674 | "version" "0.1.0" 675 | 676 | "isexe@^2.0.0": 677 | "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 678 | "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 679 | "version" "2.0.0" 680 | 681 | "isomorphic-ws@^4.0.1": 682 | "integrity" "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==" 683 | "resolved" "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" 684 | "version" "4.0.1" 685 | 686 | "jayson@^3.4.4": 687 | "integrity" "sha512-f71uvrAWTtrwoww6MKcl9phQTC+56AopLyEenWvKVAIMz+q0oVGj6tenLZ7Z6UiPBkJtKLj4kt0tACllFQruGQ==" 688 | "resolved" "https://registry.npmjs.org/jayson/-/jayson-3.6.6.tgz" 689 | "version" "3.6.6" 690 | dependencies: 691 | "@types/connect" "^3.4.33" 692 | "@types/express-serve-static-core" "^4.17.9" 693 | "@types/lodash" "^4.14.159" 694 | "@types/node" "^12.12.54" 695 | "@types/ws" "^7.4.4" 696 | "commander" "^2.20.3" 697 | "delay" "^5.0.0" 698 | "es6-promisify" "^5.0.0" 699 | "eyes" "^0.1.8" 700 | "isomorphic-ws" "^4.0.1" 701 | "json-stringify-safe" "^5.0.1" 702 | "JSONStream" "^1.3.5" 703 | "lodash" "^4.17.20" 704 | "uuid" "^8.3.2" 705 | "ws" "^7.4.5" 706 | 707 | "js-sha256@^0.9.0": 708 | "integrity" "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" 709 | "resolved" "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz" 710 | "version" "0.9.0" 711 | 712 | "js-sha3@^0.8.0": 713 | "integrity" "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" 714 | "resolved" "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" 715 | "version" "0.8.0" 716 | 717 | "js-yaml@4.1.0": 718 | "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" 719 | "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" 720 | "version" "4.1.0" 721 | dependencies: 722 | "argparse" "^2.0.1" 723 | 724 | "json-stringify-safe@^5.0.1": 725 | "integrity" "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 726 | "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" 727 | "version" "5.0.1" 728 | 729 | "json5@^1.0.1": 730 | "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" 731 | "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" 732 | "version" "1.0.1" 733 | dependencies: 734 | "minimist" "^1.2.0" 735 | 736 | "jsonparse@^1.2.0": 737 | "integrity" "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" 738 | "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" 739 | "version" "1.3.1" 740 | 741 | "JSONStream@^1.3.5": 742 | "integrity" "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" 743 | "resolved" "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" 744 | "version" "1.3.5" 745 | dependencies: 746 | "jsonparse" "^1.2.0" 747 | "through" ">=2.2.7 <3" 748 | 749 | "locate-path@^6.0.0": 750 | "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" 751 | "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" 752 | "version" "6.0.0" 753 | dependencies: 754 | "p-locate" "^5.0.0" 755 | 756 | "lodash@^4.17.20": 757 | "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 758 | "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" 759 | "version" "4.17.21" 760 | 761 | "log-symbols@4.1.0": 762 | "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" 763 | "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" 764 | "version" "4.1.0" 765 | dependencies: 766 | "chalk" "^4.1.0" 767 | "is-unicode-supported" "^0.1.0" 768 | 769 | "loupe@^2.3.1": 770 | "integrity" "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==" 771 | "resolved" "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz" 772 | "version" "2.3.4" 773 | dependencies: 774 | "get-func-name" "^2.0.0" 775 | 776 | "lower-case@^2.0.2": 777 | "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" 778 | "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" 779 | "version" "2.0.2" 780 | dependencies: 781 | "tslib" "^2.0.3" 782 | 783 | "make-error@^1.1.1": 784 | "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" 785 | "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" 786 | "version" "1.3.6" 787 | 788 | "minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": 789 | "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" 790 | "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" 791 | "version" "1.0.1" 792 | 793 | "minimalistic-crypto-utils@^1.0.1": 794 | "integrity" "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" 795 | "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" 796 | "version" "1.0.1" 797 | 798 | "minimatch@^3.0.4": 799 | "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" 800 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 801 | "version" "3.1.2" 802 | dependencies: 803 | "brace-expansion" "^1.1.7" 804 | 805 | "minimatch@3.0.4": 806 | "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" 807 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" 808 | "version" "3.0.4" 809 | dependencies: 810 | "brace-expansion" "^1.1.7" 811 | 812 | "minimist@^1.2.0", "minimist@^1.2.5": 813 | "integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 814 | "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" 815 | "version" "1.2.5" 816 | 817 | "mkdirp@^0.5.1": 818 | "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" 819 | "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" 820 | "version" "0.5.5" 821 | dependencies: 822 | "minimist" "^1.2.5" 823 | 824 | "mocha@^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X", "mocha@^9.0.3": 825 | "integrity" "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==" 826 | "resolved" "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz" 827 | "version" "9.2.1" 828 | dependencies: 829 | "@ungap/promise-all-settled" "1.1.2" 830 | "ansi-colors" "4.1.1" 831 | "browser-stdout" "1.3.1" 832 | "chokidar" "3.5.3" 833 | "debug" "4.3.3" 834 | "diff" "5.0.0" 835 | "escape-string-regexp" "4.0.0" 836 | "find-up" "5.0.0" 837 | "glob" "7.2.0" 838 | "growl" "1.10.5" 839 | "he" "1.2.0" 840 | "js-yaml" "4.1.0" 841 | "log-symbols" "4.1.0" 842 | "minimatch" "3.0.4" 843 | "ms" "2.1.3" 844 | "nanoid" "3.2.0" 845 | "serialize-javascript" "6.0.0" 846 | "strip-json-comments" "3.1.1" 847 | "supports-color" "8.1.1" 848 | "which" "2.0.2" 849 | "workerpool" "6.2.0" 850 | "yargs" "16.2.0" 851 | "yargs-parser" "20.2.4" 852 | "yargs-unparser" "2.0.0" 853 | 854 | "ms@2.1.2": 855 | "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 856 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 857 | "version" "2.1.2" 858 | 859 | "ms@2.1.3": 860 | "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 861 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 862 | "version" "2.1.3" 863 | 864 | "nanoid@3.2.0": 865 | "integrity" "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==" 866 | "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz" 867 | "version" "3.2.0" 868 | 869 | "no-case@^3.0.4": 870 | "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" 871 | "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" 872 | "version" "3.0.4" 873 | dependencies: 874 | "lower-case" "^2.0.2" 875 | "tslib" "^2.0.3" 876 | 877 | "node-addon-api@^2.0.0": 878 | "integrity" "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" 879 | "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" 880 | "version" "2.0.2" 881 | 882 | "node-fetch@2.6.7": 883 | "integrity" "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==" 884 | "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" 885 | "version" "2.6.7" 886 | dependencies: 887 | "whatwg-url" "^5.0.0" 888 | 889 | "node-gyp-build@^4.2.0", "node-gyp-build@^4.3.0": 890 | "integrity" "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" 891 | "resolved" "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz" 892 | "version" "4.3.0" 893 | 894 | "normalize-path@^3.0.0", "normalize-path@~3.0.0": 895 | "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 896 | "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 897 | "version" "3.0.0" 898 | 899 | "once@^1.3.0": 900 | "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" 901 | "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 902 | "version" "1.4.0" 903 | dependencies: 904 | "wrappy" "1" 905 | 906 | "p-limit@^3.0.2": 907 | "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" 908 | "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" 909 | "version" "3.1.0" 910 | dependencies: 911 | "yocto-queue" "^0.1.0" 912 | 913 | "p-locate@^5.0.0": 914 | "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" 915 | "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" 916 | "version" "5.0.0" 917 | dependencies: 918 | "p-limit" "^3.0.2" 919 | 920 | "pako@^2.0.3": 921 | "integrity" "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" 922 | "resolved" "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz" 923 | "version" "2.0.4" 924 | 925 | "path-exists@^4.0.0": 926 | "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 927 | "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" 928 | "version" "4.0.0" 929 | 930 | "path-is-absolute@^1.0.0": 931 | "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 932 | "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 933 | "version" "1.0.1" 934 | 935 | "pathval@^1.1.1": 936 | "integrity" "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" 937 | "resolved" "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" 938 | "version" "1.1.1" 939 | 940 | "picomatch@^2.0.4", "picomatch@^2.2.1": 941 | "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 942 | "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 943 | "version" "2.3.1" 944 | 945 | "randombytes@^2.1.0": 946 | "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" 947 | "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" 948 | "version" "2.1.0" 949 | dependencies: 950 | "safe-buffer" "^5.1.0" 951 | 952 | "readdirp@~3.6.0": 953 | "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" 954 | "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" 955 | "version" "3.6.0" 956 | dependencies: 957 | "picomatch" "^2.2.1" 958 | 959 | "regenerator-runtime@^0.13.4": 960 | "integrity" "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 961 | "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" 962 | "version" "0.13.9" 963 | 964 | "require-directory@^2.1.1": 965 | "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 966 | "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 967 | "version" "2.1.1" 968 | 969 | "rpc-websockets@^7.4.2": 970 | "integrity" "sha512-eolVi/qlXS13viIUH9aqrde902wzSLAai0IjmOZSRefp5I3CSG/vCnD0c0fDSYCWuEyUoRL1BHQA8K1baEUyow==" 971 | "resolved" "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.4.17.tgz" 972 | "version" "7.4.17" 973 | dependencies: 974 | "@babel/runtime" "^7.11.2" 975 | "circular-json" "^0.5.9" 976 | "eventemitter3" "^4.0.7" 977 | "uuid" "^8.3.0" 978 | "ws" "^7.4.5" 979 | optionalDependencies: 980 | "bufferutil" "^4.0.1" 981 | "utf-8-validate" "^5.0.2" 982 | 983 | "safe-buffer@^5.0.1", "safe-buffer@^5.1.0": 984 | "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 985 | "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 986 | "version" "5.2.1" 987 | 988 | "secp256k1@^4.0.2": 989 | "integrity" "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==" 990 | "resolved" "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz" 991 | "version" "4.0.3" 992 | dependencies: 993 | "elliptic" "^6.5.4" 994 | "node-addon-api" "^2.0.0" 995 | "node-gyp-build" "^4.2.0" 996 | 997 | "serialize-javascript@6.0.0": 998 | "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==" 999 | "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" 1000 | "version" "6.0.0" 1001 | dependencies: 1002 | "randombytes" "^2.1.0" 1003 | 1004 | "snake-case@^3.0.4": 1005 | "integrity" "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==" 1006 | "resolved" "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" 1007 | "version" "3.0.4" 1008 | dependencies: 1009 | "dot-case" "^3.0.4" 1010 | "tslib" "^2.0.3" 1011 | 1012 | "source-map-support@^0.5.6": 1013 | "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" 1014 | "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" 1015 | "version" "0.5.21" 1016 | dependencies: 1017 | "buffer-from" "^1.0.0" 1018 | "source-map" "^0.6.0" 1019 | 1020 | "source-map@^0.6.0": 1021 | "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1022 | "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" 1023 | "version" "0.6.1" 1024 | 1025 | "string-width@^4.1.0", "string-width@^4.2.0": 1026 | "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" 1027 | "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1028 | "version" "4.2.3" 1029 | dependencies: 1030 | "emoji-regex" "^8.0.0" 1031 | "is-fullwidth-code-point" "^3.0.0" 1032 | "strip-ansi" "^6.0.1" 1033 | 1034 | "strip-ansi@^6.0.0", "strip-ansi@^6.0.1": 1035 | "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" 1036 | "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 1037 | "version" "6.0.1" 1038 | dependencies: 1039 | "ansi-regex" "^5.0.1" 1040 | 1041 | "strip-bom@^3.0.0": 1042 | "integrity" "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" 1043 | "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" 1044 | "version" "3.0.0" 1045 | 1046 | "strip-json-comments@3.1.1": 1047 | "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" 1048 | "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 1049 | "version" "3.1.1" 1050 | 1051 | "superstruct@^0.14.2": 1052 | "integrity" "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" 1053 | "resolved" "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz" 1054 | "version" "0.14.2" 1055 | 1056 | "supports-color@^7.1.0": 1057 | "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" 1058 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 1059 | "version" "7.2.0" 1060 | dependencies: 1061 | "has-flag" "^4.0.0" 1062 | 1063 | "supports-color@8.1.1": 1064 | "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" 1065 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" 1066 | "version" "8.1.1" 1067 | dependencies: 1068 | "has-flag" "^4.0.0" 1069 | 1070 | "text-encoding-utf-8@^1.0.2": 1071 | "integrity" "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" 1072 | "resolved" "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz" 1073 | "version" "1.0.2" 1074 | 1075 | "through@>=2.2.7 <3": 1076 | "integrity" "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1077 | "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 1078 | "version" "2.3.8" 1079 | 1080 | "to-regex-range@^5.0.1": 1081 | "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" 1082 | "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 1083 | "version" "5.0.1" 1084 | dependencies: 1085 | "is-number" "^7.0.0" 1086 | 1087 | "toml@^3.0.0": 1088 | "integrity" "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" 1089 | "resolved" "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz" 1090 | "version" "3.0.0" 1091 | 1092 | "tr46@~0.0.3": 1093 | "integrity" "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 1094 | "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" 1095 | "version" "0.0.3" 1096 | 1097 | "traverse-chain@~0.1.0": 1098 | "integrity" "sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=" 1099 | "resolved" "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz" 1100 | "version" "0.1.0" 1101 | 1102 | "ts-mocha@^8.0.0": 1103 | "integrity" "sha512-Kou1yxTlubLnD5C3unlCVO7nh0HERTezjoVhVw/M5S1SqoUec0WgllQvPk3vzPMc6by8m6xD1uR1yRf8lnVUbA==" 1104 | "resolved" "https://registry.npmjs.org/ts-mocha/-/ts-mocha-8.0.0.tgz" 1105 | "version" "8.0.0" 1106 | dependencies: 1107 | "ts-node" "7.0.1" 1108 | optionalDependencies: 1109 | "tsconfig-paths" "^3.5.0" 1110 | 1111 | "ts-node@7.0.1": 1112 | "integrity" "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==" 1113 | "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz" 1114 | "version" "7.0.1" 1115 | dependencies: 1116 | "arrify" "^1.0.0" 1117 | "buffer-from" "^1.1.0" 1118 | "diff" "^3.1.0" 1119 | "make-error" "^1.1.1" 1120 | "minimist" "^1.2.0" 1121 | "mkdirp" "^0.5.1" 1122 | "source-map-support" "^0.5.6" 1123 | "yn" "^2.0.0" 1124 | 1125 | "tsconfig-paths@^3.5.0": 1126 | "integrity" "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==" 1127 | "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz" 1128 | "version" "3.12.0" 1129 | dependencies: 1130 | "@types/json5" "^0.0.29" 1131 | "json5" "^1.0.1" 1132 | "minimist" "^1.2.0" 1133 | "strip-bom" "^3.0.0" 1134 | 1135 | "tslib@^2.0.3": 1136 | "integrity" "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" 1137 | "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" 1138 | "version" "2.3.1" 1139 | 1140 | "tweetnacl@^1.0.0": 1141 | "integrity" "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" 1142 | "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" 1143 | "version" "1.0.3" 1144 | 1145 | "type-detect@^4.0.0", "type-detect@^4.0.5": 1146 | "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" 1147 | "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" 1148 | "version" "4.0.8" 1149 | 1150 | "typescript@^4.3.5": 1151 | "integrity" "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==" 1152 | "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz" 1153 | "version" "4.5.5" 1154 | 1155 | "utf-8-validate@^5.0.2": 1156 | "integrity" "sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==" 1157 | "resolved" "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.8.tgz" 1158 | "version" "5.0.8" 1159 | dependencies: 1160 | "node-gyp-build" "^4.3.0" 1161 | 1162 | "uuid@^8.3.0", "uuid@^8.3.2": 1163 | "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 1164 | "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" 1165 | "version" "8.3.2" 1166 | 1167 | "webidl-conversions@^3.0.0": 1168 | "integrity" "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1169 | "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" 1170 | "version" "3.0.1" 1171 | 1172 | "whatwg-url@^5.0.0": 1173 | "integrity" "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=" 1174 | "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" 1175 | "version" "5.0.0" 1176 | dependencies: 1177 | "tr46" "~0.0.3" 1178 | "webidl-conversions" "^3.0.0" 1179 | 1180 | "which@2.0.2": 1181 | "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" 1182 | "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 1183 | "version" "2.0.2" 1184 | dependencies: 1185 | "isexe" "^2.0.0" 1186 | 1187 | "workerpool@6.2.0": 1188 | "integrity" "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==" 1189 | "resolved" "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz" 1190 | "version" "6.2.0" 1191 | 1192 | "wrap-ansi@^7.0.0": 1193 | "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" 1194 | "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 1195 | "version" "7.0.0" 1196 | dependencies: 1197 | "ansi-styles" "^4.0.0" 1198 | "string-width" "^4.1.0" 1199 | "strip-ansi" "^6.0.0" 1200 | 1201 | "wrappy@1": 1202 | "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1203 | "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1204 | "version" "1.0.2" 1205 | 1206 | "ws@*", "ws@^7.4.5": 1207 | "integrity" "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==" 1208 | "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz" 1209 | "version" "7.5.7" 1210 | 1211 | "y18n@^5.0.5": 1212 | "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" 1213 | "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" 1214 | "version" "5.0.8" 1215 | 1216 | "yargs-parser@^20.2.2": 1217 | "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" 1218 | "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" 1219 | "version" "20.2.9" 1220 | 1221 | "yargs-parser@20.2.4": 1222 | "integrity" "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" 1223 | "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" 1224 | "version" "20.2.4" 1225 | 1226 | "yargs-unparser@2.0.0": 1227 | "integrity" "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==" 1228 | "resolved" "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" 1229 | "version" "2.0.0" 1230 | dependencies: 1231 | "camelcase" "^6.0.0" 1232 | "decamelize" "^4.0.0" 1233 | "flat" "^5.0.2" 1234 | "is-plain-obj" "^2.1.0" 1235 | 1236 | "yargs@16.2.0": 1237 | "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==" 1238 | "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" 1239 | "version" "16.2.0" 1240 | dependencies: 1241 | "cliui" "^7.0.2" 1242 | "escalade" "^3.1.1" 1243 | "get-caller-file" "^2.0.5" 1244 | "require-directory" "^2.1.1" 1245 | "string-width" "^4.2.0" 1246 | "y18n" "^5.0.5" 1247 | "yargs-parser" "^20.2.2" 1248 | 1249 | "yn@^2.0.0": 1250 | "integrity" "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=" 1251 | "resolved" "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz" 1252 | "version" "2.0.0" 1253 | 1254 | "yocto-queue@^0.1.0": 1255 | "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" 1256 | "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" 1257 | "version" "0.1.0" 1258 | --------------------------------------------------------------------------------