jbilcke commited on
Commit
2156c54
1 Parent(s): b568429

add VR video viewer

Browse files
.env CHANGED
@@ -14,7 +14,9 @@ UPSTASH_REDIS_REST_URL=""
14
  UPSTASH_REDIS_REST_TOKEN=""
15
 
16
  WINNERS=""
17
- x
 
 
18
  # ----------- CENSORSHIP -------
19
  ENABLE_CENSORSHIP=
20
  FINGERPRINT_KEY=
 
14
  UPSTASH_REDIS_REST_TOKEN=""
15
 
16
  WINNERS=""
17
+
18
+ AUTH_ALCHEMY_API_KEY=""
19
+
20
  # ----------- CENSORSHIP -------
21
  ENABLE_CENSORSHIP=
22
  FINGERPRINT_KEY=
package-lock.json CHANGED
@@ -35,6 +35,7 @@
35
  "@types/react-dom": "18.2.7",
36
  "@types/uuid": "^9.0.2",
37
  "@upstash/redis": "^1.25.2",
 
38
  "autoprefixer": "10.4.14",
39
  "class-variance-authority": "^0.6.1",
40
  "clsx": "^2.0.0",
@@ -208,6 +209,654 @@
208
  "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
209
  }
210
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  "node_modules/@floating-ui/core": {
212
  "version": "1.5.3",
213
  "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
@@ -2177,6 +2826,11 @@
2177
  "node": ">=0.4.0"
2178
  }
2179
  },
 
 
 
 
 
2180
  "node_modules/ajv": {
2181
  "version": "6.12.6",
2182
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -2192,6 +2846,27 @@
2192
  "url": "https://github.com/sponsors/epoberezkin"
2193
  }
2194
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2195
  "node_modules/ansi-regex": {
2196
  "version": "5.0.1",
2197
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -2395,6 +3070,11 @@
2395
  "has-symbols": "^1.0.3"
2396
  }
2397
  },
 
 
 
 
 
2398
  "node_modules/autoprefixer": {
2399
  "version": "10.4.14",
2400
  "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
@@ -2446,6 +3126,16 @@
2446
  "node": ">=4"
2447
  }
2448
  },
 
 
 
 
 
 
 
 
 
 
2449
  "node_modules/axobject-query": {
2450
  "version": "3.2.1",
2451
  "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
@@ -2483,6 +3173,11 @@
2483
  }
2484
  ]
2485
  },
 
 
 
 
 
2486
  "node_modules/binary-extensions": {
2487
  "version": "2.2.0",
2488
  "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -2501,6 +3196,11 @@
2501
  "readable-stream": "^3.4.0"
2502
  }
2503
  },
 
 
 
 
 
2504
  "node_modules/boundary": {
2505
  "version": "2.0.0",
2506
  "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz",
@@ -2526,6 +3226,11 @@
2526
  "node": ">=8"
2527
  }
2528
  },
 
 
 
 
 
2529
  "node_modules/browserslist": {
2530
  "version": "4.22.2",
2531
  "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
@@ -2580,6 +3285,18 @@
2580
  "ieee754": "^1.1.13"
2581
  }
2582
  },
 
 
 
 
 
 
 
 
 
 
 
 
2583
  "node_modules/busboy": {
2584
  "version": "1.6.0",
2585
  "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
@@ -3025,6 +3742,17 @@
3025
  "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
3026
  "dev": true
3027
  },
 
 
 
 
 
 
 
 
 
 
 
3028
  "node_modules/command-score": {
3029
  "version": "0.1.2",
3030
  "resolved": "https://registry.npmjs.org/command-score/-/command-score-0.1.2.tgz",
@@ -3141,6 +3869,15 @@
3141
  "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
3142
  "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
3143
  },
 
 
 
 
 
 
 
 
 
3144
  "node_modules/daisyui": {
3145
  "version": "3.9.4",
3146
  "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.9.4.tgz",
@@ -3261,6 +3998,14 @@
3261
  "url": "https://github.com/sponsors/ljharb"
3262
  }
3263
  },
 
 
 
 
 
 
 
 
3264
  "node_modules/dequal": {
3265
  "version": "2.0.3",
3266
  "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
@@ -3391,6 +4136,25 @@
3391
  "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.629.tgz",
3392
  "integrity": "sha512-5UUkr3k3CZ/k+9Sw7vaaIMyOzMC0XbPyprKI3n0tbKDqkzTDOjK4izm7DxlkueRMim6ZZQ1ja9F7hoFVplHihA=="
3393
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3394
  "node_modules/emoji-regex": {
3395
  "version": "9.2.2",
3396
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -3537,6 +4301,39 @@
3537
  "url": "https://github.com/sponsors/ljharb"
3538
  }
3539
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3540
  "node_modules/escalade": {
3541
  "version": "3.1.1",
3542
  "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -3966,6 +4763,19 @@
3966
  "node": ">=6"
3967
  }
3968
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
3969
  "node_modules/fast-deep-equal": {
3970
  "version": "3.1.3",
3971
  "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -4081,6 +4891,25 @@
4081
  "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
4082
  "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="
4083
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4084
  "node_modules/for-each": {
4085
  "version": "0.3.3",
4086
  "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
@@ -4104,6 +4933,19 @@
4104
  "url": "https://github.com/sponsors/isaacs"
4105
  }
4106
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
4107
  "node_modules/fraction.js": {
4108
  "version": "4.3.7",
4109
  "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
@@ -4407,6 +5249,15 @@
4407
  "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.11.0.tgz",
4408
  "integrity": "sha512-HVusNXlVqHe0fzIzdQOGolnFN6mX/fqcrSAOcTBXdvzrXVHwTz11vXeKRmkR5gTuwVpvHZEIyKoePDvuAR+XwQ=="
4409
  },
 
 
 
 
 
 
 
 
 
4410
  "node_modules/hasown": {
4411
  "version": "2.0.0",
4412
  "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
@@ -4418,6 +5269,16 @@
4418
  "node": ">= 0.4"
4419
  }
4420
  },
 
 
 
 
 
 
 
 
 
 
4421
  "node_modules/htmlparser2": {
4422
  "version": "8.0.2",
4423
  "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
@@ -4816,6 +5677,11 @@
4816
  "url": "https://github.com/sponsors/ljharb"
4817
  }
4818
  },
 
 
 
 
 
4819
  "node_modules/is-weakmap": {
4820
  "version": "2.0.1",
4821
  "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
@@ -4894,6 +5760,11 @@
4894
  "jiti": "bin/jiti.js"
4895
  }
4896
  },
 
 
 
 
 
4897
  "node_modules/js-tokens": {
4898
  "version": "4.0.0",
4899
  "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -5105,6 +5976,25 @@
5105
  "node": ">=8.6"
5106
  }
5107
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5108
  "node_modules/mimic-response": {
5109
  "version": "3.1.0",
5110
  "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
@@ -5116,6 +6006,16 @@
5116
  "url": "https://github.com/sponsors/sindresorhus"
5117
  }
5118
  },
 
 
 
 
 
 
 
 
 
 
5119
  "node_modules/minimatch": {
5120
  "version": "3.1.2",
5121
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -5236,6 +6136,11 @@
5236
  }
5237
  }
5238
  },
 
 
 
 
 
5239
  "node_modules/next/node_modules/postcss": {
5240
  "version": "8.4.31",
5241
  "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
@@ -5279,6 +6184,16 @@
5279
  "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
5280
  "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="
5281
  },
 
 
 
 
 
 
 
 
 
 
5282
  "node_modules/node-releases": {
5283
  "version": "2.0.14",
5284
  "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
@@ -5801,6 +6716,11 @@
5801
  "react-is": "^16.13.1"
5802
  }
5803
  },
 
 
 
 
 
5804
  "node_modules/pump": {
5805
  "version": "3.0.0",
5806
  "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -6363,6 +7283,11 @@
6363
  "loose-envify": "^1.1.0"
6364
  }
6365
  },
 
 
 
 
 
6366
  "node_modules/semver": {
6367
  "version": "7.5.4",
6368
  "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
@@ -6751,6 +7676,11 @@
6751
  "boundary": "^2.0.0"
6752
  }
6753
  },
 
 
 
 
 
6754
  "node_modules/styled-components": {
6755
  "version": "6.1.8",
6756
  "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.8.tgz",
@@ -7164,6 +8094,11 @@
7164
  "node": "*"
7165
  }
7166
  },
 
 
 
 
 
7167
  "node_modules/type-check": {
7168
  "version": "0.4.0",
7169
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -7247,6 +8182,14 @@
7247
  "url": "https://github.com/sponsors/ljharb"
7248
  }
7249
  },
 
 
 
 
 
 
 
 
7250
  "node_modules/typescript": {
7251
  "version": "5.1.6",
7252
  "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
@@ -7372,6 +8315,18 @@
7372
  "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
7373
  }
7374
  },
 
 
 
 
 
 
 
 
 
 
 
 
7375
  "node_modules/util-deprecate": {
7376
  "version": "1.0.2",
7377
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -7406,6 +8361,35 @@
7406
  "node": ">=10.13.0"
7407
  }
7408
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7409
  "node_modules/which": {
7410
  "version": "2.0.2",
7411
  "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -7584,6 +8568,34 @@
7584
  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
7585
  "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
7586
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7587
  "node_modules/yallist": {
7588
  "version": "4.0.0",
7589
  "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
 
35
  "@types/react-dom": "18.2.7",
36
  "@types/uuid": "^9.0.2",
37
  "@upstash/redis": "^1.25.2",
38
+ "alchemy-sdk": "^3.1.2",
39
  "autoprefixer": "10.4.14",
40
  "class-variance-authority": "^0.6.1",
41
  "clsx": "^2.0.0",
 
209
  "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
210
  }
211
  },
212
+ "node_modules/@ethersproject/abi": {
213
+ "version": "5.7.0",
214
+ "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz",
215
+ "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==",
216
+ "funding": [
217
+ {
218
+ "type": "individual",
219
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
220
+ },
221
+ {
222
+ "type": "individual",
223
+ "url": "https://www.buymeacoffee.com/ricmoo"
224
+ }
225
+ ],
226
+ "dependencies": {
227
+ "@ethersproject/address": "^5.7.0",
228
+ "@ethersproject/bignumber": "^5.7.0",
229
+ "@ethersproject/bytes": "^5.7.0",
230
+ "@ethersproject/constants": "^5.7.0",
231
+ "@ethersproject/hash": "^5.7.0",
232
+ "@ethersproject/keccak256": "^5.7.0",
233
+ "@ethersproject/logger": "^5.7.0",
234
+ "@ethersproject/properties": "^5.7.0",
235
+ "@ethersproject/strings": "^5.7.0"
236
+ }
237
+ },
238
+ "node_modules/@ethersproject/abstract-provider": {
239
+ "version": "5.7.0",
240
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz",
241
+ "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==",
242
+ "funding": [
243
+ {
244
+ "type": "individual",
245
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
246
+ },
247
+ {
248
+ "type": "individual",
249
+ "url": "https://www.buymeacoffee.com/ricmoo"
250
+ }
251
+ ],
252
+ "dependencies": {
253
+ "@ethersproject/bignumber": "^5.7.0",
254
+ "@ethersproject/bytes": "^5.7.0",
255
+ "@ethersproject/logger": "^5.7.0",
256
+ "@ethersproject/networks": "^5.7.0",
257
+ "@ethersproject/properties": "^5.7.0",
258
+ "@ethersproject/transactions": "^5.7.0",
259
+ "@ethersproject/web": "^5.7.0"
260
+ }
261
+ },
262
+ "node_modules/@ethersproject/abstract-signer": {
263
+ "version": "5.7.0",
264
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz",
265
+ "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==",
266
+ "funding": [
267
+ {
268
+ "type": "individual",
269
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
270
+ },
271
+ {
272
+ "type": "individual",
273
+ "url": "https://www.buymeacoffee.com/ricmoo"
274
+ }
275
+ ],
276
+ "dependencies": {
277
+ "@ethersproject/abstract-provider": "^5.7.0",
278
+ "@ethersproject/bignumber": "^5.7.0",
279
+ "@ethersproject/bytes": "^5.7.0",
280
+ "@ethersproject/logger": "^5.7.0",
281
+ "@ethersproject/properties": "^5.7.0"
282
+ }
283
+ },
284
+ "node_modules/@ethersproject/address": {
285
+ "version": "5.7.0",
286
+ "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz",
287
+ "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==",
288
+ "funding": [
289
+ {
290
+ "type": "individual",
291
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
292
+ },
293
+ {
294
+ "type": "individual",
295
+ "url": "https://www.buymeacoffee.com/ricmoo"
296
+ }
297
+ ],
298
+ "dependencies": {
299
+ "@ethersproject/bignumber": "^5.7.0",
300
+ "@ethersproject/bytes": "^5.7.0",
301
+ "@ethersproject/keccak256": "^5.7.0",
302
+ "@ethersproject/logger": "^5.7.0",
303
+ "@ethersproject/rlp": "^5.7.0"
304
+ }
305
+ },
306
+ "node_modules/@ethersproject/base64": {
307
+ "version": "5.7.0",
308
+ "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz",
309
+ "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==",
310
+ "funding": [
311
+ {
312
+ "type": "individual",
313
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
314
+ },
315
+ {
316
+ "type": "individual",
317
+ "url": "https://www.buymeacoffee.com/ricmoo"
318
+ }
319
+ ],
320
+ "dependencies": {
321
+ "@ethersproject/bytes": "^5.7.0"
322
+ }
323
+ },
324
+ "node_modules/@ethersproject/basex": {
325
+ "version": "5.7.0",
326
+ "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz",
327
+ "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==",
328
+ "funding": [
329
+ {
330
+ "type": "individual",
331
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
332
+ },
333
+ {
334
+ "type": "individual",
335
+ "url": "https://www.buymeacoffee.com/ricmoo"
336
+ }
337
+ ],
338
+ "dependencies": {
339
+ "@ethersproject/bytes": "^5.7.0",
340
+ "@ethersproject/properties": "^5.7.0"
341
+ }
342
+ },
343
+ "node_modules/@ethersproject/bignumber": {
344
+ "version": "5.7.0",
345
+ "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz",
346
+ "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==",
347
+ "funding": [
348
+ {
349
+ "type": "individual",
350
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
351
+ },
352
+ {
353
+ "type": "individual",
354
+ "url": "https://www.buymeacoffee.com/ricmoo"
355
+ }
356
+ ],
357
+ "dependencies": {
358
+ "@ethersproject/bytes": "^5.7.0",
359
+ "@ethersproject/logger": "^5.7.0",
360
+ "bn.js": "^5.2.1"
361
+ }
362
+ },
363
+ "node_modules/@ethersproject/bytes": {
364
+ "version": "5.7.0",
365
+ "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz",
366
+ "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==",
367
+ "funding": [
368
+ {
369
+ "type": "individual",
370
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
371
+ },
372
+ {
373
+ "type": "individual",
374
+ "url": "https://www.buymeacoffee.com/ricmoo"
375
+ }
376
+ ],
377
+ "dependencies": {
378
+ "@ethersproject/logger": "^5.7.0"
379
+ }
380
+ },
381
+ "node_modules/@ethersproject/constants": {
382
+ "version": "5.7.0",
383
+ "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz",
384
+ "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==",
385
+ "funding": [
386
+ {
387
+ "type": "individual",
388
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
389
+ },
390
+ {
391
+ "type": "individual",
392
+ "url": "https://www.buymeacoffee.com/ricmoo"
393
+ }
394
+ ],
395
+ "dependencies": {
396
+ "@ethersproject/bignumber": "^5.7.0"
397
+ }
398
+ },
399
+ "node_modules/@ethersproject/contracts": {
400
+ "version": "5.7.0",
401
+ "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz",
402
+ "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==",
403
+ "funding": [
404
+ {
405
+ "type": "individual",
406
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
407
+ },
408
+ {
409
+ "type": "individual",
410
+ "url": "https://www.buymeacoffee.com/ricmoo"
411
+ }
412
+ ],
413
+ "dependencies": {
414
+ "@ethersproject/abi": "^5.7.0",
415
+ "@ethersproject/abstract-provider": "^5.7.0",
416
+ "@ethersproject/abstract-signer": "^5.7.0",
417
+ "@ethersproject/address": "^5.7.0",
418
+ "@ethersproject/bignumber": "^5.7.0",
419
+ "@ethersproject/bytes": "^5.7.0",
420
+ "@ethersproject/constants": "^5.7.0",
421
+ "@ethersproject/logger": "^5.7.0",
422
+ "@ethersproject/properties": "^5.7.0",
423
+ "@ethersproject/transactions": "^5.7.0"
424
+ }
425
+ },
426
+ "node_modules/@ethersproject/hash": {
427
+ "version": "5.7.0",
428
+ "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz",
429
+ "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==",
430
+ "funding": [
431
+ {
432
+ "type": "individual",
433
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
434
+ },
435
+ {
436
+ "type": "individual",
437
+ "url": "https://www.buymeacoffee.com/ricmoo"
438
+ }
439
+ ],
440
+ "dependencies": {
441
+ "@ethersproject/abstract-signer": "^5.7.0",
442
+ "@ethersproject/address": "^5.7.0",
443
+ "@ethersproject/base64": "^5.7.0",
444
+ "@ethersproject/bignumber": "^5.7.0",
445
+ "@ethersproject/bytes": "^5.7.0",
446
+ "@ethersproject/keccak256": "^5.7.0",
447
+ "@ethersproject/logger": "^5.7.0",
448
+ "@ethersproject/properties": "^5.7.0",
449
+ "@ethersproject/strings": "^5.7.0"
450
+ }
451
+ },
452
+ "node_modules/@ethersproject/hdnode": {
453
+ "version": "5.7.0",
454
+ "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz",
455
+ "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==",
456
+ "funding": [
457
+ {
458
+ "type": "individual",
459
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
460
+ },
461
+ {
462
+ "type": "individual",
463
+ "url": "https://www.buymeacoffee.com/ricmoo"
464
+ }
465
+ ],
466
+ "dependencies": {
467
+ "@ethersproject/abstract-signer": "^5.7.0",
468
+ "@ethersproject/basex": "^5.7.0",
469
+ "@ethersproject/bignumber": "^5.7.0",
470
+ "@ethersproject/bytes": "^5.7.0",
471
+ "@ethersproject/logger": "^5.7.0",
472
+ "@ethersproject/pbkdf2": "^5.7.0",
473
+ "@ethersproject/properties": "^5.7.0",
474
+ "@ethersproject/sha2": "^5.7.0",
475
+ "@ethersproject/signing-key": "^5.7.0",
476
+ "@ethersproject/strings": "^5.7.0",
477
+ "@ethersproject/transactions": "^5.7.0",
478
+ "@ethersproject/wordlists": "^5.7.0"
479
+ }
480
+ },
481
+ "node_modules/@ethersproject/json-wallets": {
482
+ "version": "5.7.0",
483
+ "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz",
484
+ "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==",
485
+ "funding": [
486
+ {
487
+ "type": "individual",
488
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
489
+ },
490
+ {
491
+ "type": "individual",
492
+ "url": "https://www.buymeacoffee.com/ricmoo"
493
+ }
494
+ ],
495
+ "dependencies": {
496
+ "@ethersproject/abstract-signer": "^5.7.0",
497
+ "@ethersproject/address": "^5.7.0",
498
+ "@ethersproject/bytes": "^5.7.0",
499
+ "@ethersproject/hdnode": "^5.7.0",
500
+ "@ethersproject/keccak256": "^5.7.0",
501
+ "@ethersproject/logger": "^5.7.0",
502
+ "@ethersproject/pbkdf2": "^5.7.0",
503
+ "@ethersproject/properties": "^5.7.0",
504
+ "@ethersproject/random": "^5.7.0",
505
+ "@ethersproject/strings": "^5.7.0",
506
+ "@ethersproject/transactions": "^5.7.0",
507
+ "aes-js": "3.0.0",
508
+ "scrypt-js": "3.0.1"
509
+ }
510
+ },
511
+ "node_modules/@ethersproject/keccak256": {
512
+ "version": "5.7.0",
513
+ "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz",
514
+ "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==",
515
+ "funding": [
516
+ {
517
+ "type": "individual",
518
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
519
+ },
520
+ {
521
+ "type": "individual",
522
+ "url": "https://www.buymeacoffee.com/ricmoo"
523
+ }
524
+ ],
525
+ "dependencies": {
526
+ "@ethersproject/bytes": "^5.7.0",
527
+ "js-sha3": "0.8.0"
528
+ }
529
+ },
530
+ "node_modules/@ethersproject/logger": {
531
+ "version": "5.7.0",
532
+ "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz",
533
+ "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==",
534
+ "funding": [
535
+ {
536
+ "type": "individual",
537
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
538
+ },
539
+ {
540
+ "type": "individual",
541
+ "url": "https://www.buymeacoffee.com/ricmoo"
542
+ }
543
+ ]
544
+ },
545
+ "node_modules/@ethersproject/networks": {
546
+ "version": "5.7.1",
547
+ "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz",
548
+ "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==",
549
+ "funding": [
550
+ {
551
+ "type": "individual",
552
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
553
+ },
554
+ {
555
+ "type": "individual",
556
+ "url": "https://www.buymeacoffee.com/ricmoo"
557
+ }
558
+ ],
559
+ "dependencies": {
560
+ "@ethersproject/logger": "^5.7.0"
561
+ }
562
+ },
563
+ "node_modules/@ethersproject/pbkdf2": {
564
+ "version": "5.7.0",
565
+ "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz",
566
+ "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==",
567
+ "funding": [
568
+ {
569
+ "type": "individual",
570
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
571
+ },
572
+ {
573
+ "type": "individual",
574
+ "url": "https://www.buymeacoffee.com/ricmoo"
575
+ }
576
+ ],
577
+ "dependencies": {
578
+ "@ethersproject/bytes": "^5.7.0",
579
+ "@ethersproject/sha2": "^5.7.0"
580
+ }
581
+ },
582
+ "node_modules/@ethersproject/properties": {
583
+ "version": "5.7.0",
584
+ "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz",
585
+ "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==",
586
+ "funding": [
587
+ {
588
+ "type": "individual",
589
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
590
+ },
591
+ {
592
+ "type": "individual",
593
+ "url": "https://www.buymeacoffee.com/ricmoo"
594
+ }
595
+ ],
596
+ "dependencies": {
597
+ "@ethersproject/logger": "^5.7.0"
598
+ }
599
+ },
600
+ "node_modules/@ethersproject/providers": {
601
+ "version": "5.7.2",
602
+ "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz",
603
+ "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==",
604
+ "funding": [
605
+ {
606
+ "type": "individual",
607
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
608
+ },
609
+ {
610
+ "type": "individual",
611
+ "url": "https://www.buymeacoffee.com/ricmoo"
612
+ }
613
+ ],
614
+ "dependencies": {
615
+ "@ethersproject/abstract-provider": "^5.7.0",
616
+ "@ethersproject/abstract-signer": "^5.7.0",
617
+ "@ethersproject/address": "^5.7.0",
618
+ "@ethersproject/base64": "^5.7.0",
619
+ "@ethersproject/basex": "^5.7.0",
620
+ "@ethersproject/bignumber": "^5.7.0",
621
+ "@ethersproject/bytes": "^5.7.0",
622
+ "@ethersproject/constants": "^5.7.0",
623
+ "@ethersproject/hash": "^5.7.0",
624
+ "@ethersproject/logger": "^5.7.0",
625
+ "@ethersproject/networks": "^5.7.0",
626
+ "@ethersproject/properties": "^5.7.0",
627
+ "@ethersproject/random": "^5.7.0",
628
+ "@ethersproject/rlp": "^5.7.0",
629
+ "@ethersproject/sha2": "^5.7.0",
630
+ "@ethersproject/strings": "^5.7.0",
631
+ "@ethersproject/transactions": "^5.7.0",
632
+ "@ethersproject/web": "^5.7.0",
633
+ "bech32": "1.1.4",
634
+ "ws": "7.4.6"
635
+ }
636
+ },
637
+ "node_modules/@ethersproject/random": {
638
+ "version": "5.7.0",
639
+ "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz",
640
+ "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==",
641
+ "funding": [
642
+ {
643
+ "type": "individual",
644
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
645
+ },
646
+ {
647
+ "type": "individual",
648
+ "url": "https://www.buymeacoffee.com/ricmoo"
649
+ }
650
+ ],
651
+ "dependencies": {
652
+ "@ethersproject/bytes": "^5.7.0",
653
+ "@ethersproject/logger": "^5.7.0"
654
+ }
655
+ },
656
+ "node_modules/@ethersproject/rlp": {
657
+ "version": "5.7.0",
658
+ "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz",
659
+ "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==",
660
+ "funding": [
661
+ {
662
+ "type": "individual",
663
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
664
+ },
665
+ {
666
+ "type": "individual",
667
+ "url": "https://www.buymeacoffee.com/ricmoo"
668
+ }
669
+ ],
670
+ "dependencies": {
671
+ "@ethersproject/bytes": "^5.7.0",
672
+ "@ethersproject/logger": "^5.7.0"
673
+ }
674
+ },
675
+ "node_modules/@ethersproject/sha2": {
676
+ "version": "5.7.0",
677
+ "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz",
678
+ "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==",
679
+ "funding": [
680
+ {
681
+ "type": "individual",
682
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
683
+ },
684
+ {
685
+ "type": "individual",
686
+ "url": "https://www.buymeacoffee.com/ricmoo"
687
+ }
688
+ ],
689
+ "dependencies": {
690
+ "@ethersproject/bytes": "^5.7.0",
691
+ "@ethersproject/logger": "^5.7.0",
692
+ "hash.js": "1.1.7"
693
+ }
694
+ },
695
+ "node_modules/@ethersproject/signing-key": {
696
+ "version": "5.7.0",
697
+ "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz",
698
+ "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==",
699
+ "funding": [
700
+ {
701
+ "type": "individual",
702
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
703
+ },
704
+ {
705
+ "type": "individual",
706
+ "url": "https://www.buymeacoffee.com/ricmoo"
707
+ }
708
+ ],
709
+ "dependencies": {
710
+ "@ethersproject/bytes": "^5.7.0",
711
+ "@ethersproject/logger": "^5.7.0",
712
+ "@ethersproject/properties": "^5.7.0",
713
+ "bn.js": "^5.2.1",
714
+ "elliptic": "6.5.4",
715
+ "hash.js": "1.1.7"
716
+ }
717
+ },
718
+ "node_modules/@ethersproject/strings": {
719
+ "version": "5.7.0",
720
+ "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz",
721
+ "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==",
722
+ "funding": [
723
+ {
724
+ "type": "individual",
725
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
726
+ },
727
+ {
728
+ "type": "individual",
729
+ "url": "https://www.buymeacoffee.com/ricmoo"
730
+ }
731
+ ],
732
+ "dependencies": {
733
+ "@ethersproject/bytes": "^5.7.0",
734
+ "@ethersproject/constants": "^5.7.0",
735
+ "@ethersproject/logger": "^5.7.0"
736
+ }
737
+ },
738
+ "node_modules/@ethersproject/transactions": {
739
+ "version": "5.7.0",
740
+ "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz",
741
+ "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==",
742
+ "funding": [
743
+ {
744
+ "type": "individual",
745
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
746
+ },
747
+ {
748
+ "type": "individual",
749
+ "url": "https://www.buymeacoffee.com/ricmoo"
750
+ }
751
+ ],
752
+ "dependencies": {
753
+ "@ethersproject/address": "^5.7.0",
754
+ "@ethersproject/bignumber": "^5.7.0",
755
+ "@ethersproject/bytes": "^5.7.0",
756
+ "@ethersproject/constants": "^5.7.0",
757
+ "@ethersproject/keccak256": "^5.7.0",
758
+ "@ethersproject/logger": "^5.7.0",
759
+ "@ethersproject/properties": "^5.7.0",
760
+ "@ethersproject/rlp": "^5.7.0",
761
+ "@ethersproject/signing-key": "^5.7.0"
762
+ }
763
+ },
764
+ "node_modules/@ethersproject/units": {
765
+ "version": "5.7.0",
766
+ "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz",
767
+ "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==",
768
+ "funding": [
769
+ {
770
+ "type": "individual",
771
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
772
+ },
773
+ {
774
+ "type": "individual",
775
+ "url": "https://www.buymeacoffee.com/ricmoo"
776
+ }
777
+ ],
778
+ "dependencies": {
779
+ "@ethersproject/bignumber": "^5.7.0",
780
+ "@ethersproject/constants": "^5.7.0",
781
+ "@ethersproject/logger": "^5.7.0"
782
+ }
783
+ },
784
+ "node_modules/@ethersproject/wallet": {
785
+ "version": "5.7.0",
786
+ "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz",
787
+ "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==",
788
+ "funding": [
789
+ {
790
+ "type": "individual",
791
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
792
+ },
793
+ {
794
+ "type": "individual",
795
+ "url": "https://www.buymeacoffee.com/ricmoo"
796
+ }
797
+ ],
798
+ "dependencies": {
799
+ "@ethersproject/abstract-provider": "^5.7.0",
800
+ "@ethersproject/abstract-signer": "^5.7.0",
801
+ "@ethersproject/address": "^5.7.0",
802
+ "@ethersproject/bignumber": "^5.7.0",
803
+ "@ethersproject/bytes": "^5.7.0",
804
+ "@ethersproject/hash": "^5.7.0",
805
+ "@ethersproject/hdnode": "^5.7.0",
806
+ "@ethersproject/json-wallets": "^5.7.0",
807
+ "@ethersproject/keccak256": "^5.7.0",
808
+ "@ethersproject/logger": "^5.7.0",
809
+ "@ethersproject/properties": "^5.7.0",
810
+ "@ethersproject/random": "^5.7.0",
811
+ "@ethersproject/signing-key": "^5.7.0",
812
+ "@ethersproject/transactions": "^5.7.0",
813
+ "@ethersproject/wordlists": "^5.7.0"
814
+ }
815
+ },
816
+ "node_modules/@ethersproject/web": {
817
+ "version": "5.7.1",
818
+ "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz",
819
+ "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==",
820
+ "funding": [
821
+ {
822
+ "type": "individual",
823
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
824
+ },
825
+ {
826
+ "type": "individual",
827
+ "url": "https://www.buymeacoffee.com/ricmoo"
828
+ }
829
+ ],
830
+ "dependencies": {
831
+ "@ethersproject/base64": "^5.7.0",
832
+ "@ethersproject/bytes": "^5.7.0",
833
+ "@ethersproject/logger": "^5.7.0",
834
+ "@ethersproject/properties": "^5.7.0",
835
+ "@ethersproject/strings": "^5.7.0"
836
+ }
837
+ },
838
+ "node_modules/@ethersproject/wordlists": {
839
+ "version": "5.7.0",
840
+ "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz",
841
+ "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==",
842
+ "funding": [
843
+ {
844
+ "type": "individual",
845
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
846
+ },
847
+ {
848
+ "type": "individual",
849
+ "url": "https://www.buymeacoffee.com/ricmoo"
850
+ }
851
+ ],
852
+ "dependencies": {
853
+ "@ethersproject/bytes": "^5.7.0",
854
+ "@ethersproject/hash": "^5.7.0",
855
+ "@ethersproject/logger": "^5.7.0",
856
+ "@ethersproject/properties": "^5.7.0",
857
+ "@ethersproject/strings": "^5.7.0"
858
+ }
859
+ },
860
  "node_modules/@floating-ui/core": {
861
  "version": "1.5.3",
862
  "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
 
2826
  "node": ">=0.4.0"
2827
  }
2828
  },
2829
+ "node_modules/aes-js": {
2830
+ "version": "3.0.0",
2831
+ "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz",
2832
+ "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw=="
2833
+ },
2834
  "node_modules/ajv": {
2835
  "version": "6.12.6",
2836
  "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
 
2846
  "url": "https://github.com/sponsors/epoberezkin"
2847
  }
2848
  },
2849
+ "node_modules/alchemy-sdk": {
2850
+ "version": "3.1.2",
2851
+ "resolved": "https://registry.npmjs.org/alchemy-sdk/-/alchemy-sdk-3.1.2.tgz",
2852
+ "integrity": "sha512-xpCgQRLektp6imKdGdHyuVHvbMGpaSe22+qvg9jjGx0Wwkh0XgPzSfKwAzFDlkCGMMdazhKCsHu22XP0xh1noQ==",
2853
+ "dependencies": {
2854
+ "@ethersproject/abi": "^5.7.0",
2855
+ "@ethersproject/abstract-provider": "^5.7.0",
2856
+ "@ethersproject/bignumber": "^5.7.0",
2857
+ "@ethersproject/bytes": "^5.7.0",
2858
+ "@ethersproject/contracts": "^5.7.0",
2859
+ "@ethersproject/hash": "^5.7.0",
2860
+ "@ethersproject/networks": "^5.7.0",
2861
+ "@ethersproject/providers": "^5.7.0",
2862
+ "@ethersproject/units": "^5.7.0",
2863
+ "@ethersproject/wallet": "^5.7.0",
2864
+ "@ethersproject/web": "^5.7.0",
2865
+ "axios": "^1.6.5",
2866
+ "sturdy-websocket": "^0.2.1",
2867
+ "websocket": "^1.0.34"
2868
+ }
2869
+ },
2870
  "node_modules/ansi-regex": {
2871
  "version": "5.0.1",
2872
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
 
3070
  "has-symbols": "^1.0.3"
3071
  }
3072
  },
3073
+ "node_modules/asynckit": {
3074
+ "version": "0.4.0",
3075
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
3076
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
3077
+ },
3078
  "node_modules/autoprefixer": {
3079
  "version": "10.4.14",
3080
  "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
 
3126
  "node": ">=4"
3127
  }
3128
  },
3129
+ "node_modules/axios": {
3130
+ "version": "1.6.7",
3131
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz",
3132
+ "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
3133
+ "dependencies": {
3134
+ "follow-redirects": "^1.15.4",
3135
+ "form-data": "^4.0.0",
3136
+ "proxy-from-env": "^1.1.0"
3137
+ }
3138
+ },
3139
  "node_modules/axobject-query": {
3140
  "version": "3.2.1",
3141
  "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
 
3173
  }
3174
  ]
3175
  },
3176
+ "node_modules/bech32": {
3177
+ "version": "1.1.4",
3178
+ "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz",
3179
+ "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ=="
3180
+ },
3181
  "node_modules/binary-extensions": {
3182
  "version": "2.2.0",
3183
  "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
 
3196
  "readable-stream": "^3.4.0"
3197
  }
3198
  },
3199
+ "node_modules/bn.js": {
3200
+ "version": "5.2.1",
3201
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
3202
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="
3203
+ },
3204
  "node_modules/boundary": {
3205
  "version": "2.0.0",
3206
  "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz",
 
3226
  "node": ">=8"
3227
  }
3228
  },
3229
+ "node_modules/brorand": {
3230
+ "version": "1.1.0",
3231
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
3232
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="
3233
+ },
3234
  "node_modules/browserslist": {
3235
  "version": "4.22.2",
3236
  "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
 
3285
  "ieee754": "^1.1.13"
3286
  }
3287
  },
3288
+ "node_modules/bufferutil": {
3289
+ "version": "4.0.8",
3290
+ "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz",
3291
+ "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==",
3292
+ "hasInstallScript": true,
3293
+ "dependencies": {
3294
+ "node-gyp-build": "^4.3.0"
3295
+ },
3296
+ "engines": {
3297
+ "node": ">=6.14.2"
3298
+ }
3299
+ },
3300
  "node_modules/busboy": {
3301
  "version": "1.6.0",
3302
  "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
 
3742
  "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
3743
  "dev": true
3744
  },
3745
+ "node_modules/combined-stream": {
3746
+ "version": "1.0.8",
3747
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
3748
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
3749
+ "dependencies": {
3750
+ "delayed-stream": "~1.0.0"
3751
+ },
3752
+ "engines": {
3753
+ "node": ">= 0.8"
3754
+ }
3755
+ },
3756
  "node_modules/command-score": {
3757
  "version": "0.1.2",
3758
  "resolved": "https://registry.npmjs.org/command-score/-/command-score-0.1.2.tgz",
 
3869
  "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
3870
  "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
3871
  },
3872
+ "node_modules/d": {
3873
+ "version": "1.0.1",
3874
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
3875
+ "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
3876
+ "dependencies": {
3877
+ "es5-ext": "^0.10.50",
3878
+ "type": "^1.0.1"
3879
+ }
3880
+ },
3881
  "node_modules/daisyui": {
3882
  "version": "3.9.4",
3883
  "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.9.4.tgz",
 
3998
  "url": "https://github.com/sponsors/ljharb"
3999
  }
4000
  },
4001
+ "node_modules/delayed-stream": {
4002
+ "version": "1.0.0",
4003
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
4004
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
4005
+ "engines": {
4006
+ "node": ">=0.4.0"
4007
+ }
4008
+ },
4009
  "node_modules/dequal": {
4010
  "version": "2.0.3",
4011
  "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
 
4136
  "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.629.tgz",
4137
  "integrity": "sha512-5UUkr3k3CZ/k+9Sw7vaaIMyOzMC0XbPyprKI3n0tbKDqkzTDOjK4izm7DxlkueRMim6ZZQ1ja9F7hoFVplHihA=="
4138
  },
4139
+ "node_modules/elliptic": {
4140
+ "version": "6.5.4",
4141
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
4142
+ "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
4143
+ "dependencies": {
4144
+ "bn.js": "^4.11.9",
4145
+ "brorand": "^1.1.0",
4146
+ "hash.js": "^1.0.0",
4147
+ "hmac-drbg": "^1.0.1",
4148
+ "inherits": "^2.0.4",
4149
+ "minimalistic-assert": "^1.0.1",
4150
+ "minimalistic-crypto-utils": "^1.0.1"
4151
+ }
4152
+ },
4153
+ "node_modules/elliptic/node_modules/bn.js": {
4154
+ "version": "4.12.0",
4155
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
4156
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
4157
+ },
4158
  "node_modules/emoji-regex": {
4159
  "version": "9.2.2",
4160
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
 
4301
  "url": "https://github.com/sponsors/ljharb"
4302
  }
4303
  },
4304
+ "node_modules/es5-ext": {
4305
+ "version": "0.10.62",
4306
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
4307
+ "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
4308
+ "hasInstallScript": true,
4309
+ "dependencies": {
4310
+ "es6-iterator": "^2.0.3",
4311
+ "es6-symbol": "^3.1.3",
4312
+ "next-tick": "^1.1.0"
4313
+ },
4314
+ "engines": {
4315
+ "node": ">=0.10"
4316
+ }
4317
+ },
4318
+ "node_modules/es6-iterator": {
4319
+ "version": "2.0.3",
4320
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
4321
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
4322
+ "dependencies": {
4323
+ "d": "1",
4324
+ "es5-ext": "^0.10.35",
4325
+ "es6-symbol": "^3.1.1"
4326
+ }
4327
+ },
4328
+ "node_modules/es6-symbol": {
4329
+ "version": "3.1.3",
4330
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
4331
+ "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
4332
+ "dependencies": {
4333
+ "d": "^1.0.1",
4334
+ "ext": "^1.1.2"
4335
+ }
4336
+ },
4337
  "node_modules/escalade": {
4338
  "version": "3.1.1",
4339
  "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
 
4763
  "node": ">=6"
4764
  }
4765
  },
4766
+ "node_modules/ext": {
4767
+ "version": "1.7.0",
4768
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
4769
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
4770
+ "dependencies": {
4771
+ "type": "^2.7.2"
4772
+ }
4773
+ },
4774
+ "node_modules/ext/node_modules/type": {
4775
+ "version": "2.7.2",
4776
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
4777
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
4778
+ },
4779
  "node_modules/fast-deep-equal": {
4780
  "version": "3.1.3",
4781
  "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
 
4891
  "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
4892
  "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="
4893
  },
4894
+ "node_modules/follow-redirects": {
4895
+ "version": "1.15.5",
4896
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
4897
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
4898
+ "funding": [
4899
+ {
4900
+ "type": "individual",
4901
+ "url": "https://github.com/sponsors/RubenVerborgh"
4902
+ }
4903
+ ],
4904
+ "engines": {
4905
+ "node": ">=4.0"
4906
+ },
4907
+ "peerDependenciesMeta": {
4908
+ "debug": {
4909
+ "optional": true
4910
+ }
4911
+ }
4912
+ },
4913
  "node_modules/for-each": {
4914
  "version": "0.3.3",
4915
  "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
 
4933
  "url": "https://github.com/sponsors/isaacs"
4934
  }
4935
  },
4936
+ "node_modules/form-data": {
4937
+ "version": "4.0.0",
4938
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
4939
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
4940
+ "dependencies": {
4941
+ "asynckit": "^0.4.0",
4942
+ "combined-stream": "^1.0.8",
4943
+ "mime-types": "^2.1.12"
4944
+ },
4945
+ "engines": {
4946
+ "node": ">= 6"
4947
+ }
4948
+ },
4949
  "node_modules/fraction.js": {
4950
  "version": "4.3.7",
4951
  "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
 
5249
  "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.11.0.tgz",
5250
  "integrity": "sha512-HVusNXlVqHe0fzIzdQOGolnFN6mX/fqcrSAOcTBXdvzrXVHwTz11vXeKRmkR5gTuwVpvHZEIyKoePDvuAR+XwQ=="
5251
  },
5252
+ "node_modules/hash.js": {
5253
+ "version": "1.1.7",
5254
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
5255
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
5256
+ "dependencies": {
5257
+ "inherits": "^2.0.3",
5258
+ "minimalistic-assert": "^1.0.1"
5259
+ }
5260
+ },
5261
  "node_modules/hasown": {
5262
  "version": "2.0.0",
5263
  "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
 
5269
  "node": ">= 0.4"
5270
  }
5271
  },
5272
+ "node_modules/hmac-drbg": {
5273
+ "version": "1.0.1",
5274
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
5275
+ "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
5276
+ "dependencies": {
5277
+ "hash.js": "^1.0.3",
5278
+ "minimalistic-assert": "^1.0.0",
5279
+ "minimalistic-crypto-utils": "^1.0.1"
5280
+ }
5281
+ },
5282
  "node_modules/htmlparser2": {
5283
  "version": "8.0.2",
5284
  "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
 
5677
  "url": "https://github.com/sponsors/ljharb"
5678
  }
5679
  },
5680
+ "node_modules/is-typedarray": {
5681
+ "version": "1.0.0",
5682
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
5683
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
5684
+ },
5685
  "node_modules/is-weakmap": {
5686
  "version": "2.0.1",
5687
  "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
 
5760
  "jiti": "bin/jiti.js"
5761
  }
5762
  },
5763
+ "node_modules/js-sha3": {
5764
+ "version": "0.8.0",
5765
+ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
5766
+ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
5767
+ },
5768
  "node_modules/js-tokens": {
5769
  "version": "4.0.0",
5770
  "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
 
5976
  "node": ">=8.6"
5977
  }
5978
  },
5979
+ "node_modules/mime-db": {
5980
+ "version": "1.52.0",
5981
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
5982
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
5983
+ "engines": {
5984
+ "node": ">= 0.6"
5985
+ }
5986
+ },
5987
+ "node_modules/mime-types": {
5988
+ "version": "2.1.35",
5989
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
5990
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
5991
+ "dependencies": {
5992
+ "mime-db": "1.52.0"
5993
+ },
5994
+ "engines": {
5995
+ "node": ">= 0.6"
5996
+ }
5997
+ },
5998
  "node_modules/mimic-response": {
5999
  "version": "3.1.0",
6000
  "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
 
6006
  "url": "https://github.com/sponsors/sindresorhus"
6007
  }
6008
  },
6009
+ "node_modules/minimalistic-assert": {
6010
+ "version": "1.0.1",
6011
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
6012
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
6013
+ },
6014
+ "node_modules/minimalistic-crypto-utils": {
6015
+ "version": "1.0.1",
6016
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
6017
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="
6018
+ },
6019
  "node_modules/minimatch": {
6020
  "version": "3.1.2",
6021
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
 
6136
  }
6137
  }
6138
  },
6139
+ "node_modules/next-tick": {
6140
+ "version": "1.1.0",
6141
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
6142
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
6143
+ },
6144
  "node_modules/next/node_modules/postcss": {
6145
  "version": "8.4.31",
6146
  "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
 
6184
  "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
6185
  "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="
6186
  },
6187
+ "node_modules/node-gyp-build": {
6188
+ "version": "4.8.0",
6189
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz",
6190
+ "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==",
6191
+ "bin": {
6192
+ "node-gyp-build": "bin.js",
6193
+ "node-gyp-build-optional": "optional.js",
6194
+ "node-gyp-build-test": "build-test.js"
6195
+ }
6196
+ },
6197
  "node_modules/node-releases": {
6198
  "version": "2.0.14",
6199
  "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
 
6716
  "react-is": "^16.13.1"
6717
  }
6718
  },
6719
+ "node_modules/proxy-from-env": {
6720
+ "version": "1.1.0",
6721
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
6722
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
6723
+ },
6724
  "node_modules/pump": {
6725
  "version": "3.0.0",
6726
  "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
 
7283
  "loose-envify": "^1.1.0"
7284
  }
7285
  },
7286
+ "node_modules/scrypt-js": {
7287
+ "version": "3.0.1",
7288
+ "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz",
7289
+ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA=="
7290
+ },
7291
  "node_modules/semver": {
7292
  "version": "7.5.4",
7293
  "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
 
7676
  "boundary": "^2.0.0"
7677
  }
7678
  },
7679
+ "node_modules/sturdy-websocket": {
7680
+ "version": "0.2.1",
7681
+ "resolved": "https://registry.npmjs.org/sturdy-websocket/-/sturdy-websocket-0.2.1.tgz",
7682
+ "integrity": "sha512-NnzSOEKyv4I83qbuKw9ROtJrrT6Z/Xt7I0HiP/e6H6GnpeTDvzwGIGeJ8slai+VwODSHQDooW2CAilJwT9SpRg=="
7683
+ },
7684
  "node_modules/styled-components": {
7685
  "version": "6.1.8",
7686
  "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.8.tgz",
 
8094
  "node": "*"
8095
  }
8096
  },
8097
+ "node_modules/type": {
8098
+ "version": "1.2.0",
8099
+ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
8100
+ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
8101
+ },
8102
  "node_modules/type-check": {
8103
  "version": "0.4.0",
8104
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
 
8182
  "url": "https://github.com/sponsors/ljharb"
8183
  }
8184
  },
8185
+ "node_modules/typedarray-to-buffer": {
8186
+ "version": "3.1.5",
8187
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
8188
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
8189
+ "dependencies": {
8190
+ "is-typedarray": "^1.0.0"
8191
+ }
8192
+ },
8193
  "node_modules/typescript": {
8194
  "version": "5.1.6",
8195
  "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
 
8315
  "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
8316
  }
8317
  },
8318
+ "node_modules/utf-8-validate": {
8319
+ "version": "5.0.10",
8320
+ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
8321
+ "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
8322
+ "hasInstallScript": true,
8323
+ "dependencies": {
8324
+ "node-gyp-build": "^4.3.0"
8325
+ },
8326
+ "engines": {
8327
+ "node": ">=6.14.2"
8328
+ }
8329
+ },
8330
  "node_modules/util-deprecate": {
8331
  "version": "1.0.2",
8332
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
 
8361
  "node": ">=10.13.0"
8362
  }
8363
  },
8364
+ "node_modules/websocket": {
8365
+ "version": "1.0.34",
8366
+ "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz",
8367
+ "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==",
8368
+ "dependencies": {
8369
+ "bufferutil": "^4.0.1",
8370
+ "debug": "^2.2.0",
8371
+ "es5-ext": "^0.10.50",
8372
+ "typedarray-to-buffer": "^3.1.5",
8373
+ "utf-8-validate": "^5.0.2",
8374
+ "yaeti": "^0.0.6"
8375
+ },
8376
+ "engines": {
8377
+ "node": ">=4.0.0"
8378
+ }
8379
+ },
8380
+ "node_modules/websocket/node_modules/debug": {
8381
+ "version": "2.6.9",
8382
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
8383
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
8384
+ "dependencies": {
8385
+ "ms": "2.0.0"
8386
+ }
8387
+ },
8388
+ "node_modules/websocket/node_modules/ms": {
8389
+ "version": "2.0.0",
8390
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
8391
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
8392
+ },
8393
  "node_modules/which": {
8394
  "version": "2.0.2",
8395
  "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
 
8568
  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
8569
  "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
8570
  },
8571
+ "node_modules/ws": {
8572
+ "version": "7.4.6",
8573
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
8574
+ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
8575
+ "engines": {
8576
+ "node": ">=8.3.0"
8577
+ },
8578
+ "peerDependencies": {
8579
+ "bufferutil": "^4.0.1",
8580
+ "utf-8-validate": "^5.0.2"
8581
+ },
8582
+ "peerDependenciesMeta": {
8583
+ "bufferutil": {
8584
+ "optional": true
8585
+ },
8586
+ "utf-8-validate": {
8587
+ "optional": true
8588
+ }
8589
+ }
8590
+ },
8591
+ "node_modules/yaeti": {
8592
+ "version": "0.0.6",
8593
+ "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
8594
+ "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==",
8595
+ "engines": {
8596
+ "node": ">=0.10.32"
8597
+ }
8598
+ },
8599
  "node_modules/yallist": {
8600
  "version": "4.0.0",
8601
  "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
package.json CHANGED
@@ -36,6 +36,7 @@
36
  "@types/react-dom": "18.2.7",
37
  "@types/uuid": "^9.0.2",
38
  "@upstash/redis": "^1.25.2",
 
39
  "autoprefixer": "10.4.14",
40
  "class-variance-authority": "^0.6.1",
41
  "clsx": "^2.0.0",
 
36
  "@types/react-dom": "18.2.7",
37
  "@types/uuid": "^9.0.2",
38
  "@upstash/redis": "^1.25.2",
39
+ "alchemy-sdk": "^3.1.2",
40
  "autoprefixer": "10.4.14",
41
  "class-variance-authority": "^0.6.1",
42
  "clsx": "^2.0.0",
public/aframe/aframe-master.js ADDED
The diff for this file is too large to render. See raw diff
 
public/aframe/hide-on-play.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global AFRAME */
2
+ AFRAME.registerComponent('hide-on-play', {
3
+ schema: {type: 'selector'},
4
+ init: function () {
5
+ this.onPlaying = this.onPlaying.bind(this);
6
+ this.onPause = this.onPause.bind(this);
7
+ this.el.object3D.visible = !this.data.playing;
8
+ },
9
+ play: function () {
10
+ if (this.data) {
11
+ this.data.addEventListener('playing', this.onPlaying);
12
+ this.data.addEventListener('pause', this.onPause);
13
+ }
14
+ },
15
+ pause: function () {
16
+ if (this.data) {
17
+ this.data.removeEventListener('playing', this.onPlaying);
18
+ this.data.removeEventListener('pause', this.onPause);
19
+ }
20
+ },
21
+ onPlaying: function (evt) {
22
+ this.el.object3D.visible = false;
23
+ },
24
+ onPause: function (evt) {
25
+ this.el.object3D.visible = true;
26
+ }
27
+ });
public/aframe/play-on-click.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global AFRAME */
2
+ AFRAME.registerComponent('play-on-click', {
3
+ init: function () {
4
+ this.onClick = this.onClick.bind(this);
5
+ },
6
+ play: function () {
7
+ window.addEventListener('click', this.onClick);
8
+ },
9
+ pause: function () {
10
+ window.removeEventListener('click', this.onClick);
11
+ },
12
+ onClick: function (evt) {
13
+ var videoEl = this.el.getAttribute('material').src;
14
+ if (!videoEl) { return; }
15
+ this.el.object3D.visible = true;
16
+ videoEl.play();
17
+ }
18
+ });
src/app/alchemy/README.md ADDED
@@ -0,0 +1 @@
 
 
1
+ This is just to experiment around the idea, nothing is 100% sure yet.
src/app/alchemy/test.ts ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Network, Alchemy, AssetTransfersCategory } from 'alchemy-sdk';
2
+
3
+ const settings = {
4
+ apiKey: `${process.env.AUTH_ALCHEMY_API_KEY || ""}`,
5
+ network: Network.ETH_MAINNET,
6
+ };
7
+
8
+ const alchemy = new Alchemy(settings);
9
+
10
+ // get the latest block
11
+ const latestBlock = alchemy.core.getBlock("latest").then(console.log);
12
+
13
+ // get all the sent transactions from given address
14
+ const sentTransactions = alchemy.core.getAssetTransfers({
15
+ fromBlock: "0x0",
16
+ fromAddress: "0x994b342dd87fc825f66e51ffa3ef71ad818b6893",
17
+ category: [
18
+ // ERC721 transfers.
19
+ AssetTransfersCategory.ERC721,
20
+
21
+ // Top level ETH transactions that occur where the `fromAddress` is an
22
+ // external user-created address. External addresses have private keys and are
23
+ // accessed by users.
24
+ AssetTransfersCategory.EXTERNAL,
25
+
26
+ // ERC20 transfers
27
+ AssetTransfersCategory.ERC20
28
+ ],
29
+ }).then(console.log);
src/app/api/video/[videoId]/route.ts ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { NextResponse, NextRequest } from "next/server"
2
+
3
+ import { getVideo } from "@/app/server/actions/ai-tube-hf/getVideo"
4
+ import { parseProjectionFromLoRA } from "@/app/server/actions/utils/parseProjectionFromLoRA";
5
+
6
+ export async function GET(req: NextRequest) {
7
+ const videoId = req.url.split("/").pop() || ""
8
+ const video = await getVideo({ videoId, neverThrow: true })
9
+ if (!video) {
10
+ return new NextResponse("video not found", { status: 404 });
11
+ }
12
+ const isEquirectangular = (
13
+ video.projection === "equirectangular" ||
14
+ parseProjectionFromLoRA(video.lora) === "equirectangular"
15
+ )
16
+
17
+ const html = `
18
+ <!DOCTYPE html>
19
+ <html>
20
+ <head>
21
+ <meta charset="utf-8">
22
+ <meta name="apple-mobile-web-app-capable" content="yes">
23
+ <title>${video.label} - AI Tube</title>
24
+ <meta name="description" content="${video.description}<">
25
+ <script src="/aframe/aframe-master.js"></script>
26
+ <script src="/aframe/play-on-click.js"></script>
27
+ <script src="/aframe/hide-on-play.js"></script>
28
+ </head>
29
+ <body>
30
+ <a-scene>
31
+ <a-assets>
32
+ <video
33
+ id="video"
34
+ loop
35
+ crossorigin="anonymous"
36
+ playsinline
37
+ webkit-playsinline
38
+ src="${video.assetUrl}">
39
+ </video>
40
+ </a-assets>
41
+ ${
42
+ isEquirectangular
43
+ ? `
44
+ <a-videosphere
45
+ rotation="0 -90 0"
46
+ src="#video"
47
+ play-on-click>
48
+ </a-videosphere>
49
+ ` :
50
+ `<a-video
51
+ src="#video"
52
+ width="${
53
+ 3 // 1024
54
+ }" height="${
55
+ 1.6875 // 576
56
+ }"
57
+ play-on-click>
58
+ </a-video>`
59
+ }
60
+ <a-camera>
61
+ <a-entity
62
+ position="0 0 -1.5"
63
+ text="align: center;
64
+ width: 6;
65
+ wrapCount: 100;
66
+ color: white;
67
+ value: Click or tap to start video"
68
+ hide-on-play="#video">
69
+ </a-entity>
70
+ </a-camera>
71
+ </a-scene>
72
+ </body>
73
+ </html>`
74
+
75
+ return new NextResponse(html, {
76
+ status: 200,
77
+ headers: new Headers({ "content-type": "text/html" }),
78
+ })
79
+ }
src/app/interface/about/index.tsx ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { ReactNode, useState } from "react"
2
+
3
+ import { Button } from "@/components/ui/button"
4
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"
5
+ import { cn } from "@/lib/utils"
6
+ import { AiOutlineQuestionCircle } from "react-icons/ai"
7
+
8
+ export function About() {
9
+ const [isOpen, setOpen] = useState(false)
10
+
11
+ return (
12
+ <Dialog open={isOpen} onOpenChange={setOpen}>
13
+ <DialogTrigger asChild>
14
+ <div className={cn(
15
+ `flex flex-col`,
16
+ `items-center justify-center justify-items-stretch`,
17
+ // `bg-green-500`,
18
+ `cursor-pointer`,
19
+ `w-20 h-18 sm:w-full sm:h-21`,
20
+ `p-1`,
21
+ `group`
22
+ )}
23
+ >
24
+ <div
25
+ className={cn(
26
+ `flex flex-col`,
27
+ `items-center justify-center`,
28
+ `w-full h-full`,
29
+ `space-y-1.5`,
30
+ `rounded-xl`,
31
+ `text-xs`,
32
+ `transition-all duration-300 ease-in-out`,
33
+
34
+ `group-hover:bg-neutral-100/10 bg-neutral-100/0`,
35
+ )}
36
+ >
37
+ <AiOutlineQuestionCircle className="h-6 w-6" />
38
+ <div className="text-center">
39
+ About
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </DialogTrigger>
44
+ <DialogContent className="sm:max-w-[800px]">
45
+ <DialogHeader>
46
+ <DialogTitle>AI Tube</DialogTitle>
47
+ <DialogDescription className="w-full text-center text-lg font-bold text-stone-800">
48
+ What is AI Tube?
49
+ </DialogDescription>
50
+ </DialogHeader>
51
+ <div className="grid gap-4 py-4 text-stone-200 text-base">
52
+ <p className="">
53
+ AI Tube is a sandbox platform launched in Nov 2023 to experiment with autonomous creation of long videos. The videos are generated from single text prompts by humans and by AI robots.
54
+ </p>
55
+ <p>
56
+ To my knowledge, is the first platform to operate this way. As a research sandbox, it features other experiments such as being the first platform to autonomously generate VR videos using AI (<a href="api/video/37b626a8-3eb9-4127-8d91-20837bc08ae7" target="_blank" className="underline">open this example</a> with a WebXR-compatible device eg. an iPhone).
57
+ </p>
58
+ <p>
59
+ Since the generation is unsupervised, some videos might contain factually incorrect or biased outputs.
60
+ </p>
61
+ <p>
62
+ As the platform runs while I sleep and can generate tons of content, I do not have the time to review each video.
63
+ So if you see a user or robot producing unethical content or infringing a copyright, please follow the appropriate reporting process (see the button under each video).
64
+ </p>
65
+ <p>
66
+ I am working to progressively allow more people to be able to create AI channels (AI video creation bots).
67
+ But if you want to skip line (eg. if have some incredible ideas/content, or are a billionnaire with great plans etc) feel free to get in touch on Discord.
68
+ </p>
69
+ </div>
70
+ <DialogFooter>
71
+ <Button type="submit" onClick={() => setOpen(false)}>Understood</Button>
72
+ </DialogFooter>
73
+ </DialogContent>
74
+ </Dialog>
75
+ )
76
+ }
src/app/interface/left-menu/index.tsx CHANGED
@@ -1,6 +1,6 @@
1
  import Link from "next/link"
2
  import { TbBrandDiscord } from "react-icons/tb"
3
-
4
  import { GrChannel } from "react-icons/gr"
5
  import { MdVideoLibrary } from "react-icons/md"
6
  import { RiHome8Line } from "react-icons/ri"
@@ -13,6 +13,7 @@ import { cn } from "@/lib/utils"
13
  import { showBetaFeatures } from "@/app/config"
14
 
15
  import { MenuItem } from "./menu-item"
 
16
 
17
  export function LeftMenu() {
18
  const view = useStore(s => s.view)
@@ -68,6 +69,7 @@ export function LeftMenu() {
68
  My Videos
69
  </MenuItem>
70
  */}
 
71
  <a href="https://discord.gg/Q6mJ2rnDPe" target="_blank">
72
  <MenuItem
73
  icon={<TbBrandDiscord className="h-6 w-6" />}
 
1
  import Link from "next/link"
2
  import { TbBrandDiscord } from "react-icons/tb"
3
+ import { AiOutlineQuestionCircle } from "react-icons/ai"
4
  import { GrChannel } from "react-icons/gr"
5
  import { MdVideoLibrary } from "react-icons/md"
6
  import { RiHome8Line } from "react-icons/ri"
 
13
  import { showBetaFeatures } from "@/app/config"
14
 
15
  import { MenuItem } from "./menu-item"
16
+ import { About } from "../about"
17
 
18
  export function LeftMenu() {
19
  const view = useStore(s => s.view)
 
69
  My Videos
70
  </MenuItem>
71
  */}
72
+ <About />
73
  <a href="https://discord.gg/Q6mJ2rnDPe" target="_blank">
74
  <MenuItem
75
  icon={<TbBrandDiscord className="h-6 w-6" />}
src/app/interface/left-menu/menu-item/index.tsx CHANGED
@@ -26,11 +26,11 @@ export function MenuItem({
26
  `p-1`,
27
  `group`
28
  )}
29
- onClick={() => {
30
- if (onClick && !selected) {
31
- onClick()
32
- }
33
- }}
34
  >
35
  <div
36
  className={cn(
 
26
  `p-1`,
27
  `group`
28
  )}
29
+ onClick={onClick ? () => {
30
+ if (!selected) {
31
+ onClick()
32
+ }
33
+ } : undefined}
34
  >
35
  <div
36
  className={cn(
src/app/interface/top-header/index.tsx CHANGED
@@ -118,8 +118,7 @@ export function TopHeader() {
118
  `px-4 py-2 w-max-64`,
119
  `text-neutral-400 text-2xs sm:text-xs lg:text-sm italic`
120
  )}>
121
- All the videos are generated using AI, for research purposes only. Some models might produce factually incorrect or biased outputs.
122
- </div>
123
  <div className={cn()}>
124
  &nbsp; {/* more buttons? unused for now */}
125
  </div>
 
118
  `px-4 py-2 w-max-64`,
119
  `text-neutral-400 text-2xs sm:text-xs lg:text-sm italic`
120
  )}>
121
+ Note: AI Tube is still in beta (and this text will be replaced by a search box)</div>
 
122
  <div className={cn()}>
123
  &nbsp; {/* more buttons? unused for now */}
124
  </div>
src/app/views/public-video-view/index.tsx CHANGED
@@ -3,6 +3,7 @@
3
  import { useEffect, useRef, useState, useTransition } from "react"
4
  import { RiCheckboxCircleFill } from "react-icons/ri"
5
  import { PiShareFatLight } from "react-icons/pi"
 
6
  import CopyToClipboard from "react-copy-to-clipboard"
7
  import { LuCopyCheck } from "react-icons/lu"
8
  import { LuScrollText } from "react-icons/lu"
@@ -30,6 +31,7 @@ import { defaultSettings } from "@/app/state/defaultSettings"
30
  import { getComments, submitComment } from "@/app/server/actions/comments"
31
  import { useCurrentUser } from "@/app/state/useCurrentUser"
32
  import { useLocalStorage } from "usehooks-ts"
 
33
 
34
  export function PublicVideoView() {
35
  const [_pending, startTransition] = useTransition()
@@ -72,6 +74,11 @@ export function PublicVideoView() {
72
 
73
  const setPublicComments = useStore(s => s.setPublicComments)
74
 
 
 
 
 
 
75
  // we inject the current videoId in the URL, if it's not already present
76
  // this is a hack for Hugging Face iframes
77
  useEffect(() => {
@@ -336,6 +343,15 @@ export function PublicVideoView() {
336
  </span>
337
  </ActionButton>
338
 
 
 
 
 
 
 
 
 
 
339
  <ActionButton
340
  href={
341
  `https://huggingface.co/datasets/${
 
3
  import { useEffect, useRef, useState, useTransition } from "react"
4
  import { RiCheckboxCircleFill } from "react-icons/ri"
5
  import { PiShareFatLight } from "react-icons/pi"
6
+ import { BsHeadsetVr } from "react-icons/bs"
7
  import CopyToClipboard from "react-copy-to-clipboard"
8
  import { LuCopyCheck } from "react-icons/lu"
9
  import { LuScrollText } from "react-icons/lu"
 
31
  import { getComments, submitComment } from "@/app/server/actions/comments"
32
  import { useCurrentUser } from "@/app/state/useCurrentUser"
33
  import { useLocalStorage } from "usehooks-ts"
34
+ import { parseProjectionFromLoRA } from "@/app/server/actions/utils/parseProjectionFromLoRA"
35
 
36
  export function PublicVideoView() {
37
  const [_pending, startTransition] = useTransition()
 
74
 
75
  const setPublicComments = useStore(s => s.setPublicComments)
76
 
77
+ const isEquirectangular = (
78
+ video?.projection === "equirectangular" ||
79
+ parseProjectionFromLoRA(video?.lora) === "equirectangular"
80
+ )
81
+
82
  // we inject the current videoId in the URL, if it's not already present
83
  // this is a hack for Hugging Face iframes
84
  useEffect(() => {
 
343
  </span>
344
  </ActionButton>
345
 
346
+ {isEquirectangular && <ActionButton
347
+ href={`/api/video/${video.id}`}
348
+ >
349
+ <BsHeadsetVr className="w-5 h-5" />
350
+ <span>
351
+ See in VR
352
+ </span>
353
+ </ActionButton>}
354
+
355
  <ActionButton
356
  href={
357
  `https://huggingface.co/datasets/${
src/clap/types.ts CHANGED
@@ -1,5 +1,5 @@
1
 
2
- export type ClapSegmentCategory = "render" | "preview" | "transition" | "characters" | "location" | "time" | "era" | "lighting" | "weather" | "action" | "music" | "sound" | "dialogue" | "style" | "camera" | "generic"
3
  export type ClapOutputType = "text" | "animation" | "transition" | "image" | "video" | "audio"
4
  export type ClapSegmentStatus =
5
  | "to_generate"
 
1
 
2
+ export type ClapSegmentCategory = "splat" | "mesh" | "depth" | "video" | "storyboard" | "transition" | "characters" | "location" | "time" | "era" | "lighting" | "weather" | "action" | "music" | "sound" | "dialogue" | "style" | "camera" | "generic"
3
  export type ClapOutputType = "text" | "animation" | "transition" | "image" | "video" | "audio"
4
  export type ClapSegmentStatus =
5
  | "to_generate"