karin-plugin-kkk 2.45.1-beta.0 → 2.45.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,8 +4,7 @@ import $, { createRequire } from "node:module";
4
4
  import fs, { existsSync, readFileSync, writeSync } from "node:fs";
5
5
  import minpath, { default as path } from "node:path";
6
6
  import { fileURLToPath, fileURLToPath as urlToPath, pathToFileURL } from "node:url";
7
- import crypto$1, { createCipheriv, createHash, randomBytes } from "node:crypto";
8
- import { gzipSync } from "node:zlib";
7
+ import crypto$1 from "node:crypto";
9
8
  import jt from "fs";
10
9
  import minproc from "node:process";
11
10
  import { inspect } from "node:util";
@@ -541,6 +540,8 @@ function constantCatch(value) {
541
540
  //#endregion
542
541
  //#region ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/core.js
543
542
  var _a$2;
543
+ /** A special constant with type `never` */
544
+ var NEVER = /*@__PURE__*/ Object.freeze({ status: "aborted" });
544
545
  var _zodDesc = {
545
546
  value: void 0,
546
547
  enumerable: false
@@ -1032,6 +1033,7 @@ function datetime(args) {
1032
1033
  var anyString = /^[\s\S]{0,}$/;
1033
1034
  var integer = /^-?\d+$/;
1034
1035
  var number$3 = /^-?\d+(?:\.\d+)?$/;
1036
+ var boolean$2 = /^(?:true|false)$/i;
1035
1037
  var lowercase = /^[^A-Z]*$/;
1036
1038
  var uppercase = /^[^a-z]*$/;
1037
1039
  //#endregion
@@ -1835,6 +1837,24 @@ var $ZodNumberFormat = /*@__PURE__*/ $constructor("$ZodNumberFormat", (inst, def
1835
1837
  $ZodCheckNumberFormat.init(inst, def);
1836
1838
  $ZodNumber.init(inst, def);
1837
1839
  });
1840
+ var $ZodBoolean = /*@__PURE__*/ $constructor("$ZodBoolean", (inst, def) => {
1841
+ $ZodType.init(inst, def);
1842
+ inst._zod.pattern = boolean$2;
1843
+ inst._zod.parse = (payload, _ctx) => {
1844
+ if (def.coerce) try {
1845
+ payload.value = Boolean(payload.value);
1846
+ } catch (_) {}
1847
+ const input = payload.value;
1848
+ if (typeof input === "boolean") return payload;
1849
+ payload.issues.push({
1850
+ expected: "boolean",
1851
+ code: "invalid_type",
1852
+ input,
1853
+ inst
1854
+ });
1855
+ return payload;
1856
+ };
1857
+ });
1838
1858
  var $ZodAny = /*@__PURE__*/ $constructor("$ZodAny", (inst, def) => {
1839
1859
  $ZodType.init(inst, def);
1840
1860
  inst._zod.parse = (payload) => payload;
@@ -2684,6 +2704,49 @@ function handlePipeResult(left, next, ctx) {
2684
2704
  issues: left.issues
2685
2705
  }, ctx);
2686
2706
  }
2707
+ var $ZodCodec = /*@__PURE__*/ $constructor("$ZodCodec", (inst, def) => {
2708
+ $ZodType.init(inst, def);
2709
+ defineLazyInternal(inst, "values", (zod) => zod.def.in._zod.values);
2710
+ defineLazyInternal(inst, "optin", (zod) => zod.def.in._zod.optin);
2711
+ defineLazyInternal(inst, "optout", (zod) => zod.def.out._zod.optout);
2712
+ defineLazyInternal(inst, "propValues", (zod) => zod.def.in._zod.propValues);
2713
+ inst._zod.parse = (payload, ctx) => {
2714
+ if ((ctx.direction || "forward") === "forward") {
2715
+ const left = def.in._zod.run(payload, ctx);
2716
+ if (left instanceof Promise) return left.then((left) => handleCodecAResult(left, def, ctx));
2717
+ return handleCodecAResult(left, def, ctx);
2718
+ } else {
2719
+ const right = def.out._zod.run(payload, ctx);
2720
+ if (right instanceof Promise) return right.then((right) => handleCodecAResult(right, def, ctx));
2721
+ return handleCodecAResult(right, def, ctx);
2722
+ }
2723
+ };
2724
+ });
2725
+ function handleCodecAResult(result, def, ctx) {
2726
+ if (result.issues.length) {
2727
+ result.aborted = true;
2728
+ return result;
2729
+ }
2730
+ if ((ctx.direction || "forward") === "forward") {
2731
+ const transformed = def.transform(result.value, result);
2732
+ if (transformed instanceof Promise) return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));
2733
+ return handleCodecTxResult(result, transformed, def.out, ctx);
2734
+ } else {
2735
+ const transformed = def.reverseTransform(result.value, result);
2736
+ if (transformed instanceof Promise) return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));
2737
+ return handleCodecTxResult(result, transformed, def.in, ctx);
2738
+ }
2739
+ }
2740
+ function handleCodecTxResult(left, value, nextSchema, ctx) {
2741
+ if (left.issues.length) {
2742
+ left.aborted = true;
2743
+ return left;
2744
+ }
2745
+ return nextSchema._zod.run({
2746
+ value,
2747
+ issues: left.issues
2748
+ }, ctx);
2749
+ }
2687
2750
  var $ZodReadonly = /*@__PURE__*/ $constructor("$ZodReadonly", (inst, def) => {
2688
2751
  $ZodType.init(inst, def);
2689
2752
  defineLazyInternal(inst, "propValues", (zod) => zod.def.innerType._zod.propValues);
@@ -3444,6 +3507,13 @@ function _int(Class, params) {
3444
3507
  });
3445
3508
  }
3446
3509
  // @__NO_SIDE_EFFECTS__
3510
+ function _boolean(Class, params) {
3511
+ return new Class({
3512
+ type: "boolean",
3513
+ ...normalizeParams(params)
3514
+ });
3515
+ }
3516
+ // @__NO_SIDE_EFFECTS__
3447
3517
  function _any(Class) {
3448
3518
  return new Class({ type: "any" });
3449
3519
  }
@@ -3650,6 +3720,71 @@ function _check(fn, params) {
3650
3720
  ch._zod.check = fn;
3651
3721
  return ch;
3652
3722
  }
3723
+ // @__NO_SIDE_EFFECTS__
3724
+ function _stringbool(Classes, _params) {
3725
+ const params = normalizeParams(_params);
3726
+ let truthyArray = params.truthy ?? [
3727
+ "true",
3728
+ "1",
3729
+ "yes",
3730
+ "on",
3731
+ "y",
3732
+ "enabled"
3733
+ ];
3734
+ let falsyArray = params.falsy ?? [
3735
+ "false",
3736
+ "0",
3737
+ "no",
3738
+ "off",
3739
+ "n",
3740
+ "disabled"
3741
+ ];
3742
+ if (params.case !== "sensitive") {
3743
+ truthyArray = truthyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v);
3744
+ falsyArray = falsyArray.map((v) => typeof v === "string" ? v.toLowerCase() : v);
3745
+ }
3746
+ const truthySet = new Set(truthyArray);
3747
+ const falsySet = new Set(falsyArray);
3748
+ const _Codec = Classes.Codec ?? $ZodCodec;
3749
+ const _Boolean = Classes.Boolean ?? $ZodBoolean;
3750
+ const codec = new _Codec({
3751
+ type: "pipe",
3752
+ in: new (Classes.String ?? $ZodString)({
3753
+ type: "string",
3754
+ error: params.error
3755
+ }),
3756
+ out: new _Boolean({
3757
+ type: "boolean",
3758
+ error: params.error
3759
+ }),
3760
+ transform: ((input, payload) => {
3761
+ let data = input;
3762
+ if (params.case !== "sensitive") data = data.toLowerCase();
3763
+ if (truthySet.has(data)) return true;
3764
+ else if (falsySet.has(data)) return false;
3765
+ else {
3766
+ payload.issues.push({
3767
+ code: "invalid_value",
3768
+ expected: "stringbool",
3769
+ values: [...truthySet, ...falsySet],
3770
+ input: payload.value,
3771
+ inst: codec,
3772
+ continue: false
3773
+ });
3774
+ return {};
3775
+ }
3776
+ }),
3777
+ reverseTransform: ((input, _payload) => {
3778
+ if (input === true) return truthyArray[0] || "true";
3779
+ else return falsyArray[0] || "false";
3780
+ }),
3781
+ error: params.error
3782
+ });
3783
+ codec._zod.bag.truthy = truthyArray;
3784
+ codec._zod.bag.falsy = falsyArray;
3785
+ codec._zod.bag.case = params.case ?? "insensitive";
3786
+ return codec;
3787
+ }
3653
3788
  //#endregion
3654
3789
  //#region ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/to-json-schema.js
3655
3790
  function assignProps$1(target, ...sources) {
@@ -5301,6 +5436,14 @@ var ZodNumberFormat = /*@__PURE__*/ $constructor("ZodNumberFormat", (inst, def)
5301
5436
  function int(params) {
5302
5437
  return /* @__PURE__ */ _int(ZodNumberFormat, params);
5303
5438
  }
5439
+ var ZodBoolean = /*@__PURE__*/ $constructor("ZodBoolean", (inst, def) => {
5440
+ $ZodBoolean.init(inst, def);
5441
+ ZodType.init(inst, def);
5442
+ inst._zod.processJSONSchema = (ctx, json, params) => booleanProcessor(inst, ctx, json, params);
5443
+ });
5444
+ function boolean$1(params) {
5445
+ return /* @__PURE__ */ _boolean(ZodBoolean, params);
5446
+ }
5304
5447
  var ZodAny = /*@__PURE__*/ $constructor("ZodAny", (inst, def) => {
5305
5448
  $ZodAny.init(inst, def);
5306
5449
  ZodType.init(inst, def);
@@ -5650,6 +5793,10 @@ function pipe(in_, out) {
5650
5793
  out
5651
5794
  });
5652
5795
  }
5796
+ var ZodCodec = /*@__PURE__*/ $constructor("ZodCodec", (inst, def) => {
5797
+ ZodPipe.init(inst, def);
5798
+ $ZodCodec.init(inst, def);
5799
+ });
5653
5800
  var ZodReadonly = /*@__PURE__*/ $constructor("ZodReadonly", (inst, def) => {
5654
5801
  $ZodReadonly.init(inst, def);
5655
5802
  ZodType.init(inst, def);
@@ -5673,2316 +5820,17 @@ function refine(fn, _params = {}) {
5673
5820
  function superRefine(fn, params) {
5674
5821
  return /* @__PURE__ */ _superRefine(fn, params);
5675
5822
  }
5823
+ var stringbool = (...args) => /* @__PURE__ */ _stringbool({
5824
+ Codec: ZodCodec,
5825
+ Boolean: ZodBoolean,
5826
+ String: ZodString
5827
+ }, ...args);
5676
5828
  //#endregion
5677
5829
  //#region ../../node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/coerce.js
5678
5830
  function number$1(params) {
5679
5831
  return /* @__PURE__ */ _coercedNumber(ZodNumber, params);
5680
5832
  }
5681
5833
  //#endregion
5682
- //#region ../../node_modules/.pnpm/@ikenxuan+xhshow-ts@1.1.0/node_modules/@ikenxuan/xhshow-ts/dist/index.mjs
5683
- var CryptoConfig = class CryptoConfig {
5684
- DES_KEY = "zbp30y86";
5685
- GID_URL = "https://as.xiaohongshu.com/api/sec/v1/shield/webprofile";
5686
- DATA_PLATFORM = "Windows";
5687
- DATA_SVN = "2";
5688
- DATA_SDK_VERSION = "4.3.5";
5689
- DATA_WEB_BUILD = "6.3.0";
5690
- MAX_32BIT = 4294967295;
5691
- MAX_SIGNED_32BIT = 2147483647;
5692
- MAX_BYTE = 255;
5693
- STANDARD_BASE64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
5694
- CUSTOM_BASE64_ALPHABET = "ZmserbBoHQtNP+wOcza/LpngG8yJq42KWYj0DSfdikx3VT16IlUAFM97hECvuRX5";
5695
- X3_BASE64_ALPHABET = "MfgqrsbcyzPQRStuvC7mn501HIJBo2DEFTKdeNOwxWXYZap89+/A4UVLhijkl63G";
5696
- HEX_KEY = "71a302257793271ddd273bcee3e4b98d9d7935e1da33f5765e2ea8afb6dc77a51a499d23b67c20660025860cbf13d4540d92497f58686c574e508f46e1956344f39139bf4faf22a3eef120b79258145b2feb5193b6478669961298e79bedca646e1a693a926154a5a7a1bd1cf0dedb742f917a747a1e388b234f2277516db7116035439730fa61e9822a0eca7bff72d8";
5697
- EXPECTED_HEX_LENGTH = 32;
5698
- OUTPUT_BYTE_COUNT = 8;
5699
- HEX_CHUNK_SIZE = 2;
5700
- VERSION_BYTES = [
5701
- 121,
5702
- 104,
5703
- 96,
5704
- 41
5705
- ];
5706
- PAYLOAD_LENGTH = 144;
5707
- A1_LENGTH = 52;
5708
- APP_ID_LENGTH = 10;
5709
- MD5_XOR_LENGTH = 8;
5710
- A3_PREFIX = [
5711
- 2,
5712
- 97,
5713
- 51,
5714
- 16
5715
- ];
5716
- TIMESTAMP_LE_LENGTH = 8;
5717
- SEQUENCE_VALUE_MIN = 15;
5718
- SEQUENCE_VALUE_MAX = 50;
5719
- WINDOW_PROPS_LENGTH_MIN = 1e3;
5720
- WINDOW_PROPS_LENGTH_MAX = 1200;
5721
- SESSION_WINDOW_PROPS_INIT_MIN = 1e3;
5722
- SESSION_WINDOW_PROPS_INIT_MAX = 2e3;
5723
- SESSION_SEQUENCE_INIT_MIN = 15;
5724
- SESSION_SEQUENCE_INIT_MAX = 17;
5725
- SESSION_SEQUENCE_STEP_MIN = 0;
5726
- SESSION_SEQUENCE_STEP_MAX = 1;
5727
- SESSION_WINDOW_PROPS_STEP_MIN = 1;
5728
- SESSION_WINDOW_PROPS_STEP_MAX = 10;
5729
- CHECKSUM_VERSION = 1;
5730
- CHECKSUM_XOR_KEY = 115;
5731
- CHECKSUM_FIXED_TAIL = [
5732
- 249,
5733
- 65,
5734
- 103,
5735
- 103,
5736
- 201,
5737
- 181,
5738
- 131,
5739
- 99,
5740
- 94,
5741
- 7,
5742
- 68,
5743
- 250,
5744
- 132,
5745
- 21
5746
- ];
5747
- ENV_TABLE = [
5748
- 115,
5749
- 248,
5750
- 83,
5751
- 102,
5752
- 103,
5753
- 201,
5754
- 181,
5755
- 131,
5756
- 99,
5757
- 94,
5758
- 4,
5759
- 68,
5760
- 250,
5761
- 132,
5762
- 21
5763
- ];
5764
- ENV_CHECKS_DEFAULT = [
5765
- 0,
5766
- 1,
5767
- 18,
5768
- 1,
5769
- 0,
5770
- 0,
5771
- 0,
5772
- 0,
5773
- 0,
5774
- 0,
5775
- 3,
5776
- 0,
5777
- 0,
5778
- 0,
5779
- 0
5780
- ];
5781
- HASH_IV = [
5782
- 1831565813,
5783
- 461845907,
5784
- 2246822507,
5785
- 3266489909
5786
- ];
5787
- ENV_FINGERPRINT_XOR_KEY = 41;
5788
- ENV_FINGERPRINT_TIME_OFFSET_MIN = 10;
5789
- ENV_FINGERPRINT_TIME_OFFSET_MAX = 50;
5790
- SIGNATURE_DATA_TEMPLATE = {
5791
- x0: "4.4.3",
5792
- x1: "xhs-pc-web",
5793
- x2: "Windows",
5794
- x3: "",
5795
- x4: ""
5796
- };
5797
- X3_PREFIX = "mns0301_";
5798
- XYS_PREFIX = "XYS_";
5799
- XYW_PREFIX = "XYW_";
5800
- XYW_SIGN_SVN = "56";
5801
- XYW_SIGN_TYPE = "x2";
5802
- XYW_SIGN_VERSION = "1";
5803
- XYW_AES_KEY = "7cc4adla5ay0701v";
5804
- XYW_AES_IV = "4uzjr7mbsibcaldp";
5805
- XYW_ENV_FLAGS_DEFAULT = "0|0|0|1|0|0|1|0|0|0|1|0|0|0|0|1|0|0|1";
5806
- HEX_CHARS = "abcdef0123456789";
5807
- XRAY_TRACE_ID_SEQ_MAX = 8388607;
5808
- XRAY_TRACE_ID_TIMESTAMP_SHIFT = 23;
5809
- XRAY_TRACE_ID_PART1_LENGTH = 16;
5810
- XRAY_TRACE_ID_PART2_LENGTH = 16;
5811
- B3_TRACE_ID_LENGTH = 16;
5812
- B1_SECRET_KEY = "xhswebmplfbt";
5813
- XRAP_SDK_VERSION = 10300;
5814
- SIGNATURE_XSCOMMON_TEMPLATE = {
5815
- s0: 5,
5816
- s1: "",
5817
- x0: "1",
5818
- x1: "4.3.5",
5819
- x2: "Windows",
5820
- x3: "xhs-pc-web",
5821
- x4: "4.86.0",
5822
- x5: "",
5823
- x6: "",
5824
- x7: "",
5825
- x8: "",
5826
- x9: -596800761,
5827
- x10: 0,
5828
- x11: "normal"
5829
- };
5830
- PUBLIC_USERAGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0";
5831
- /**
5832
- * Create a new config instance with overridden values
5833
- */
5834
- withOverrides(overrides) {
5835
- const newConfig = new CryptoConfig();
5836
- Object.assign(newConfig, overrides);
5837
- return newConfig;
5838
- }
5839
- };
5840
- var BitOperations = class {
5841
- config;
5842
- constructor(config) {
5843
- this.config = config || new CryptoConfig();
5844
- }
5845
- normalizeTo32bit(value) {
5846
- return value & this.config.MAX_32BIT;
5847
- }
5848
- toSigned32bit(unsignedValue) {
5849
- if (unsignedValue > this.config.MAX_SIGNED_32BIT) return unsignedValue - 4294967296;
5850
- return unsignedValue;
5851
- }
5852
- computeSeedValue(seed32bit) {
5853
- const normalizedSeed = this.normalizeTo32bit(seed32bit);
5854
- const shift15Bits = normalizedSeed >> 15;
5855
- const shift13Bits = normalizedSeed >> 13;
5856
- const shift12Bits = normalizedSeed >> 12;
5857
- const shift10Bits = normalizedSeed >> 10;
5858
- const shiftedResult = ((shift15Bits & ~shift13Bits | shift13Bits & ~shift15Bits) ^ shift12Bits ^ shift10Bits) << 31 & this.config.MAX_32BIT;
5859
- return this.toSigned32bit(shiftedResult);
5860
- }
5861
- xorTransformArray(sourceIntegers) {
5862
- const result = new Uint8Array(sourceIntegers.length);
5863
- const keyBytes = Buffer.from(this.config.HEX_KEY, "hex");
5864
- const keyLength = keyBytes.length;
5865
- for (let i = 0; i < sourceIntegers.length; i++) if (i < keyLength) result[i] = (sourceIntegers[i] ^ keyBytes[i]) & 255;
5866
- else result[i] = sourceIntegers[i] & 255;
5867
- return result;
5868
- }
5869
- };
5870
- var Base64Encoder = class {
5871
- config;
5872
- customEncodeTable;
5873
- customDecodeTable;
5874
- x3EncodeTable;
5875
- x3DecodeTable;
5876
- constructor(config) {
5877
- this.config = config || new CryptoConfig();
5878
- this.customEncodeTable = this.buildTranslationTable(this.config.STANDARD_BASE64_ALPHABET, this.config.CUSTOM_BASE64_ALPHABET);
5879
- this.customDecodeTable = this.buildTranslationTable(this.config.CUSTOM_BASE64_ALPHABET, this.config.STANDARD_BASE64_ALPHABET);
5880
- this.x3EncodeTable = this.buildTranslationTable(this.config.STANDARD_BASE64_ALPHABET, this.config.X3_BASE64_ALPHABET);
5881
- this.x3DecodeTable = this.buildTranslationTable(this.config.X3_BASE64_ALPHABET, this.config.STANDARD_BASE64_ALPHABET);
5882
- }
5883
- buildTranslationTable(from, to) {
5884
- const table = /* @__PURE__ */ new Map();
5885
- for (let i = 0; i < from.length; i++) table.set(from[i], to[i]);
5886
- return table;
5887
- }
5888
- translate(str, table) {
5889
- let result = "";
5890
- for (const char of str) result += table.get(char) ?? char;
5891
- return result;
5892
- }
5893
- /**
5894
- * Encode a string using custom Base64 alphabet
5895
- */
5896
- encode(dataToEncode) {
5897
- const standardEncoded = Buffer.from(dataToEncode, "utf8").toString("base64");
5898
- return this.translate(standardEncoded, this.customEncodeTable);
5899
- }
5900
- /**
5901
- * Decode string using custom Base64 alphabet
5902
- */
5903
- decode(encodedString) {
5904
- const standardEncoded = this.translate(encodedString, this.customDecodeTable);
5905
- try {
5906
- return Buffer.from(standardEncoded, "base64").toString("utf8");
5907
- } catch (e) {
5908
- throw new Error("Invalid Base64 input: unable to decode string");
5909
- }
5910
- }
5911
- /**
5912
- * Decode x3 signature using X3_BASE64_ALPHABET
5913
- */
5914
- decodeX3(encodedString) {
5915
- const standardEncoded = this.translate(encodedString, this.x3DecodeTable);
5916
- try {
5917
- return Buffer.from(standardEncoded, "base64");
5918
- } catch (e) {
5919
- throw new Error("Invalid Base64 input: unable to decode string");
5920
- }
5921
- }
5922
- /**
5923
- * Encode x3 signature using X3_BASE64_ALPHABET
5924
- */
5925
- encodeX3(inputBytes) {
5926
- const standardEncoded = Buffer.from(inputBytes).toString("base64");
5927
- return this.translate(standardEncoded, this.x3EncodeTable);
5928
- }
5929
- };
5930
- var HexProcessor = class {
5931
- config;
5932
- constructor() {
5933
- this.config = new CryptoConfig();
5934
- }
5935
- hexStringToBytes(hexString) {
5936
- const byteValues = [];
5937
- for (let i = 0; i < hexString.length; i += this.config.HEX_CHUNK_SIZE) {
5938
- const hexChunk = hexString.slice(i, i + this.config.HEX_CHUNK_SIZE);
5939
- byteValues.push(parseInt(hexChunk, 16));
5940
- }
5941
- return byteValues;
5942
- }
5943
- processHexParameter(hexString, xorKey) {
5944
- if (hexString.length !== this.config.EXPECTED_HEX_LENGTH) throw new Error(`hex parameter must be ${this.config.EXPECTED_HEX_LENGTH} characters`);
5945
- return this.hexStringToBytes(hexString).map((byteVal) => byteVal ^ xorKey).slice(0, this.config.OUTPUT_BYTE_COUNT);
5946
- }
5947
- };
5948
- var BASE36_CHARS = "0123456789abcdefghijklmnopqrstuvwxyz";
5949
- var A1_CHARSET = "abcdefghijklmnopqrstuvwxyz1234567890";
5950
- var STD_CRC32_TABLE = null;
5951
- function stdCrc32(bytes) {
5952
- if (STD_CRC32_TABLE === null) {
5953
- const tbl = new Array(256);
5954
- for (let n = 0; n < 256; n++) {
5955
- let c = n;
5956
- for (let k = 0; k < 8; k++) c = c & 1 ? c >>> 1 ^ 3988292384 : c >>> 1;
5957
- tbl[n] = c >>> 0;
5958
- }
5959
- STD_CRC32_TABLE = tbl;
5960
- }
5961
- let crc = 4294967295;
5962
- for (let i = 0; i < bytes.length; i++) crc = (STD_CRC32_TABLE[(crc ^ bytes[i]) & 255] ^ crc >>> 8) >>> 0;
5963
- return (crc ^ 4294967295) >>> 0;
5964
- }
5965
- /**
5966
- * Convert a non-negative BigInt to a base36 string.
5967
- */
5968
- function intToBase36(value) {
5969
- if (value === 0n) return "0";
5970
- let result = "";
5971
- const base = 36n;
5972
- while (value > 0n) {
5973
- const remainder = value % base;
5974
- value = value / base;
5975
- result = BASE36_CHARS[Number(remainder)] + result;
5976
- }
5977
- return result;
5978
- }
5979
- var RandomGenerator = class {
5980
- config;
5981
- constructor() {
5982
- this.config = new CryptoConfig();
5983
- }
5984
- /**
5985
- * Generate random byte array
5986
- */
5987
- generateRandomBytes(byteCount) {
5988
- return Array.from({ length: byteCount }, () => Math.floor(Math.random() * (this.config.MAX_BYTE + 1)));
5989
- }
5990
- /**
5991
- * Generate random integer in range
5992
- */
5993
- generateRandomByteInRange(minVal, maxVal) {
5994
- return Math.floor(Math.random() * (maxVal - minVal + 1)) + minVal;
5995
- }
5996
- /**
5997
- * Generate 32-bit random integer
5998
- */
5999
- generateRandomInt() {
6000
- return Math.floor(Math.random() * (this.config.MAX_32BIT + 1));
6001
- }
6002
- /**
6003
- * Generate x-b3-traceid (16 random hex characters)
6004
- */
6005
- generateB3TraceId() {
6006
- let result = "";
6007
- for (let i = 0; i < this.config.B3_TRACE_ID_LENGTH; i++) result += this.config.HEX_CHARS[Math.floor(Math.random() * this.config.HEX_CHARS.length)];
6008
- return result;
6009
- }
6010
- /**
6011
- * Generate x-xray-traceid (32 characters: 16 timestamp+seq + 16 random)
6012
- */
6013
- generateXrayTraceId(timestamp, seq) {
6014
- if (timestamp === void 0) timestamp = Date.now();
6015
- if (seq === void 0) seq = Math.floor(Math.random() * (this.config.XRAY_TRACE_ID_SEQ_MAX + 1));
6016
- const part1 = (BigInt(timestamp) << BigInt(this.config.XRAY_TRACE_ID_TIMESTAMP_SHIFT) | BigInt(seq)).toString(16).padStart(this.config.XRAY_TRACE_ID_PART1_LENGTH, "0");
6017
- let part2 = "";
6018
- for (let i = 0; i < this.config.XRAY_TRACE_ID_PART2_LENGTH; i++) part2 += this.config.HEX_CHARS[Math.floor(Math.random() * this.config.HEX_CHARS.length)];
6019
- return part1 + part2;
6020
- }
6021
- /**
6022
- * Generate a random ASCII string of the given length
6023
- */
6024
- static generateRandomAscii(length, charset = "abcdefghijklmnopqrstuvwxyz0123456789") {
6025
- let result = "";
6026
- for (let i = 0; i < length; i++) result += charset[Math.floor(Math.random() * charset.length)];
6027
- return result;
6028
- }
6029
- /**
6030
- * Generate an a1 cookie value (52 characters)
6031
- */
6032
- static generateA1() {
6033
- const tsHex = Math.floor(Date.now()).toString(16);
6034
- let randomStr = "";
6035
- for (let i = 0; i < 30; i++) randomStr += A1_CHARSET[Math.floor(Math.random() * 36)];
6036
- const aPart = tsHex + randomStr + "50000";
6037
- const crc = stdCrc32(Buffer.from(aPart)) >>> 0;
6038
- return (aPart + String(crc)).slice(0, 52);
6039
- }
6040
- /**
6041
- * Generate web_id (32-character hex MD5) from an a1 cookie value
6042
- */
6043
- static generateWebId(a1) {
6044
- return createHash("md5").update(a1).digest("hex");
6045
- }
6046
- /**
6047
- * Generate search_id for search endpoints (base36 of (timestamp_ms << 64) + random)
6048
- */
6049
- generateSearchId() {
6050
- const timestampMs = BigInt(Date.now());
6051
- const randomPart = BigInt(Math.ceil(2147483646 * Math.random()));
6052
- return intToBase36((timestampMs << 64n) + randomPart);
6053
- }
6054
- /**
6055
- * Generate search request_id for search endpoints. Format: "{random}-{timestamp_ms}"
6056
- */
6057
- generateSearchRequestId() {
6058
- const timestampMs = Date.now();
6059
- return `${Math.ceil(2147483646 * Math.random())}-${timestampMs}`;
6060
- }
6061
- };
6062
- /**
6063
- * Extract URI path from full URL (removes protocol, host, query, fragment)
6064
- */
6065
- function extractUri(url) {
6066
- if (!url || typeof url !== "string") throw new Error("URL must be a non-empty string");
6067
- url = url.trim();
6068
- try {
6069
- if (url.startsWith("http://") || url.startsWith("https://")) {
6070
- const path = new URL(url).pathname;
6071
- if (!path || path === "/") throw new Error(`Cannot extract valid URI path from URL: ${url}`);
6072
- return path;
6073
- }
6074
- const queryIndex = url.indexOf("?");
6075
- const path = queryIndex >= 0 ? url.substring(0, queryIndex) : url;
6076
- if (!path || path === "/") throw new Error(`Cannot extract valid URI path from URL: ${url}`);
6077
- return path;
6078
- } catch (e) {
6079
- if (e instanceof Error && e.message.includes("Cannot extract")) throw e;
6080
- throw new Error(`Cannot extract valid URI path from URL: ${url}`);
6081
- }
6082
- }
6083
- /**
6084
- * Build complete URL with query parameters (handles parameter escaping)
6085
- *
6086
- * IMPORTANT: This function uses XHS platform-specific encoding rules.
6087
- * Only '=' characters are encoded as '%3D'. Other special characters
6088
- * (including ',') are NOT encoded, as required by XHS signature algorithm.
6089
- */
6090
- function buildUrl(baseUrl, params) {
6091
- if (!baseUrl || typeof baseUrl !== "string") throw new Error("baseUrl must be a non-empty string");
6092
- if (!params) return baseUrl;
6093
- const queryParts = [];
6094
- for (const [key, value] of Object.entries(params)) {
6095
- let formattedValue;
6096
- if (Array.isArray(value)) formattedValue = value.map((v) => String(v)).join(",");
6097
- else if (value !== null && value !== void 0) formattedValue = String(value);
6098
- else formattedValue = "";
6099
- const encodedValue = formattedValue.replace(/=/g, "%3D");
6100
- queryParts.push(`${key}=${encodedValue}`);
6101
- }
6102
- const queryString = queryParts.join("&");
6103
- let separator;
6104
- if (!baseUrl.includes("?")) separator = "?";
6105
- else if (baseUrl.endsWith("?") || baseUrl.endsWith("&")) separator = "";
6106
- else separator = "&";
6107
- return `${baseUrl}${separator}${queryString}`;
6108
- }
6109
- /**
6110
- * Pure TypeScript xxHash32 implementation.
6111
- *
6112
- * Ported from the upstream Python `utils/hash.py`. Used by the x-rap-param
6113
- * generator to compute integrity hashes over the request body and envelope.
6114
- */
6115
- var MASK_32 = 4294967295;
6116
- /**
6117
- * 32-bit left rotation (unsigned)
6118
- */
6119
- function rotl32$1(val, shift) {
6120
- val = val >>> 0;
6121
- return (val << shift | val >>> 32 - shift) >>> 0;
6122
- }
6123
- /**
6124
- * Compute the xxHash32 digest of the given bytes.
6125
- *
6126
- * @param data - Input bytes
6127
- * @param seed - Optional seed (default 0)
6128
- * @returns Unsigned 32-bit hash value
6129
- */
6130
- function xxh32(data, seed = 0) {
6131
- const buf = data;
6132
- const length = buf.length;
6133
- let pos = 0;
6134
- const prime1 = 2654435761;
6135
- const prime2 = 2246822519;
6136
- const prime3 = 3266489917;
6137
- const prime4 = 668265263;
6138
- const prime5 = 374761393;
6139
- let digest;
6140
- if (length >= 16) {
6141
- let acc1 = seed + prime1 + prime2 >>> 0;
6142
- let acc2 = seed + prime2 >>> 0;
6143
- let acc3 = seed >>> 0;
6144
- let acc4 = seed - prime1 >>> 0;
6145
- const end = length - 16;
6146
- while (pos <= end) for (let accRef = 0; accRef < 4; accRef++) {
6147
- const word = readU32LE(buf, pos);
6148
- pos += 4;
6149
- if (accRef === 0) acc1 = Math.imul(rotl32$1(acc1 + Math.imul(word, prime2) >>> 0, 13), prime1) >>> 0;
6150
- else if (accRef === 1) acc2 = Math.imul(rotl32$1(acc2 + Math.imul(word, prime2) >>> 0, 13), prime1) >>> 0;
6151
- else if (accRef === 2) acc3 = Math.imul(rotl32$1(acc3 + Math.imul(word, prime2) >>> 0, 13), prime1) >>> 0;
6152
- else acc4 = Math.imul(rotl32$1(acc4 + Math.imul(word, prime2) >>> 0, 13), prime1) >>> 0;
6153
- }
6154
- digest = rotl32$1(acc1, 1) + rotl32$1(acc2, 7) + rotl32$1(acc3, 12) + rotl32$1(acc4, 18) >>> 0;
6155
- } else digest = seed + prime5 >>> 0;
6156
- digest = digest + length >>> 0;
6157
- while (pos + 4 <= length) {
6158
- const word = readU32LE(buf, pos);
6159
- pos += 4;
6160
- digest = Math.imul(rotl32$1(digest + Math.imul(word, prime3) >>> 0, 17), prime4) >>> 0;
6161
- }
6162
- while (pos < length) {
6163
- digest = Math.imul(rotl32$1(digest + Math.imul(buf[pos], prime5) >>> 0, 11), prime1) >>> 0;
6164
- pos += 1;
6165
- }
6166
- digest ^= digest >>> 15;
6167
- digest = Math.imul(digest, prime2) >>> 0;
6168
- digest ^= digest >>> 13;
6169
- digest = Math.imul(digest, prime3) >>> 0;
6170
- digest ^= digest >>> 16;
6171
- return (digest & MASK_32) >>> 0;
6172
- }
6173
- /**
6174
- * Read a 32-bit little-endian unsigned integer from a byte buffer.
6175
- */
6176
- function readU32LE(buf, off) {
6177
- return (buf[off] | buf[off + 1] << 8 | buf[off + 2] << 16 | buf[off + 3] << 24) >>> 0;
6178
- }
6179
- /**
6180
- * Sharding key generation for the `xy-direction` request header.
6181
- *
6182
- * Ported from the upstream Python `utils/sharding.py`. When a `user_id` is
6183
- * provided, the key is derived deterministically via a MurmurHash3-x86-32
6184
- * variant; otherwise a random value in [10, 100] is returned.
6185
- */
6186
- var C1 = 3432918353;
6187
- var C2 = 461845907;
6188
- /**
6189
- * 32-bit left rotation (unsigned)
6190
- */
6191
- function rotl32(x, r) {
6192
- x = x >>> 0;
6193
- return (x << r | x >>> 32 - r) >>> 0;
6194
- }
6195
- /**
6196
- * Compute the sharding key for the `xy-direction` header.
6197
- *
6198
- * @param userId - Optional user id. If omitted, a random value in [10, 100].
6199
- * @returns Sharding key
6200
- */
6201
- function getShardingKey(userId) {
6202
- if (userId === null || userId === void 0) return Math.floor(Math.random() * 91) + 10;
6203
- const data = Buffer.from(userId, "utf-8");
6204
- const length = data.length;
6205
- let r = 151488;
6206
- const nblocks = Math.floor(length / 4);
6207
- for (let o = 0; o < nblocks; o++) {
6208
- const i = 4 * o;
6209
- let u = (data[i] | data[i + 1] << 8 | data[i + 2] << 16 | data[i + 3] << 24) >>> 0;
6210
- u = Math.imul(u, C1) >>> 0;
6211
- u = rotl32(u, 15);
6212
- u = Math.imul(u, C2) >>> 0;
6213
- r = (r ^ u) >>> 0;
6214
- r = rotl32(r, 13);
6215
- r = Math.imul(r, 5) + 3864292196 >>> 0;
6216
- }
6217
- const s = 4 * nblocks;
6218
- let c = 0;
6219
- const rem = length % 4;
6220
- if (rem >= 3) c ^= data[s + 2] << 16;
6221
- if (rem >= 2) c ^= data[s + 1] << 8;
6222
- if (rem >= 1) {
6223
- c ^= data[s];
6224
- c = Math.imul(c, C1) >>> 0;
6225
- c = rotl32(c, 15);
6226
- c = Math.imul(c, C2) >>> 0;
6227
- r = (r ^ c) >>> 0;
6228
- }
6229
- r = (r ^ length) >>> 0;
6230
- r ^= r >>> 16;
6231
- r = Math.imul(r, 2246822507) >>> 0;
6232
- r ^= r >>> 13;
6233
- r = Math.imul(r, 3266489909) >>> 0;
6234
- r ^= r >>> 16;
6235
- r = r >>> 0;
6236
- return r % 100 + 1;
6237
- }
6238
- var CryptoProcessor = class {
6239
- config;
6240
- bitOps;
6241
- b64encoder;
6242
- hexProcessor;
6243
- randomGen;
6244
- constructor(config) {
6245
- this.config = config || new CryptoConfig();
6246
- this.bitOps = new BitOperations(this.config);
6247
- this.b64encoder = new Base64Encoder(this.config);
6248
- this.hexProcessor = new HexProcessor();
6249
- this.randomGen = new RandomGenerator();
6250
- }
6251
- intToLeBytes(val, length = 4) {
6252
- const arr = [];
6253
- for (let i = 0; i < length; i++) {
6254
- arr.push(val & 255);
6255
- val = Math.floor(val / 256);
6256
- }
6257
- return arr;
6258
- }
6259
- /**
6260
- * 32-bit left rotation
6261
- */
6262
- rotateLeft(val, n) {
6263
- return (val << n | val >>> 32 - n) >>> 0;
6264
- }
6265
- /**
6266
- * Custom hash function for a3 field generation
6267
- * Input: byte array (must be multiple of 8)
6268
- * Output: 16-byte array
6269
- */
6270
- customHashV2(inputBytes) {
6271
- let [s0, s1, s2, s3] = this.config.HASH_IV;
6272
- const length = inputBytes.length;
6273
- s0 ^= length;
6274
- s1 ^= length << 8;
6275
- s2 ^= length << 16;
6276
- s3 ^= length << 24;
6277
- for (let i = 0; i < Math.floor(length / 8); i++) {
6278
- const offset = i * 8;
6279
- const v0 = (inputBytes[offset] | inputBytes[offset + 1] << 8 | inputBytes[offset + 2] << 16 | inputBytes[offset + 3] << 24) >>> 0;
6280
- const v1 = (inputBytes[offset + 4] | inputBytes[offset + 5] << 8 | inputBytes[offset + 6] << 16 | inputBytes[offset + 7] << 24) >>> 0;
6281
- s0 = this.rotateLeft(s0 + v0 & this.config.MAX_32BIT ^ s2, 7);
6282
- s1 = this.rotateLeft((v0 ^ s1) + s3 & this.config.MAX_32BIT, 11);
6283
- s2 = this.rotateLeft(s2 + v1 & this.config.MAX_32BIT ^ s0, 13);
6284
- s3 = this.rotateLeft((s3 ^ v1) + s1 & this.config.MAX_32BIT, 17);
6285
- }
6286
- const t0 = s0 ^ length;
6287
- const t1 = s1 ^ t0;
6288
- const t2 = s2 + t1 & this.config.MAX_32BIT;
6289
- const t3 = s3 ^ t2;
6290
- const rotT0 = this.rotateLeft(t0, 9);
6291
- const rotT1 = this.rotateLeft(t1, 13);
6292
- const rotT2 = this.rotateLeft(t2, 17);
6293
- const rotT3 = this.rotateLeft(t3, 19);
6294
- s0 = rotT0 + rotT2 & this.config.MAX_32BIT;
6295
- s1 = rotT1 ^ rotT3;
6296
- s2 = rotT2 + s0 & this.config.MAX_32BIT;
6297
- s3 = rotT3 ^ s1;
6298
- const result = [];
6299
- for (const s of [
6300
- s0,
6301
- s1,
6302
- s2,
6303
- s3
6304
- ]) result.push(...this.intToLeBytes(s, 4));
6305
- return result;
6306
- }
6307
- /**
6308
- * Build 144-byte payload array (mns0301 version)
6309
- *
6310
- * @param hexParameter - 32-char hex (MD5 of uri+data), used for the MD5 XOR segment
6311
- * @param hexMd5Path - 32-char hex path hash (GET: MD5 of uri+params, POST: MD5 of uri)
6312
- * @param a1Value - a1 value from cookies
6313
- * @param appIdentifier - Application identifier, default "xhs-pc-web"
6314
- * @param stringParam - String parameter (URI+data, used for length calculation)
6315
- * @param timestamp - Unix timestamp in seconds (defaults to current time)
6316
- * @param signState - Optional session state
6317
- */
6318
- buildPayloadArray(hexParameter, hexMd5Path, a1Value, appIdentifier = "xhs-pc-web", stringParam = "", timestamp, signState) {
6319
- if (timestamp === void 0) timestamp = Date.now() / 1e3;
6320
- const seed = this.randomGen.generateRandomInt();
6321
- const seedByte = seed & 255;
6322
- const payload = [];
6323
- payload.push(...this.config.VERSION_BYTES);
6324
- payload.push(...this.intToLeBytes(seed, 4));
6325
- const tsBytes = this.intToLeBytes(Math.floor(timestamp * 1e3), this.config.TIMESTAMP_LE_LENGTH);
6326
- payload.push(...tsBytes);
6327
- if (signState) {
6328
- payload.push(...this.intToLeBytes(signState.pageLoadTimestamp, this.config.TIMESTAMP_LE_LENGTH));
6329
- payload.push(...this.intToLeBytes(signState.sequenceValue, 4));
6330
- payload.push(...this.intToLeBytes(signState.windowPropsLength, 4));
6331
- payload.push(...this.intToLeBytes(signState.uriLength, 4));
6332
- } else {
6333
- const timeOffset = this.randomGen.generateRandomByteInRange(this.config.ENV_FINGERPRINT_TIME_OFFSET_MIN, this.config.ENV_FINGERPRINT_TIME_OFFSET_MAX);
6334
- const effectiveTsMs = Math.floor((timestamp - timeOffset) * 1e3);
6335
- payload.push(...this.intToLeBytes(effectiveTsMs, this.config.TIMESTAMP_LE_LENGTH));
6336
- const sequenceValue = this.randomGen.generateRandomByteInRange(this.config.SEQUENCE_VALUE_MIN, this.config.SEQUENCE_VALUE_MAX);
6337
- payload.push(...this.intToLeBytes(sequenceValue, 4));
6338
- const windowPropsLength = this.randomGen.generateRandomByteInRange(this.config.WINDOW_PROPS_LENGTH_MIN, this.config.WINDOW_PROPS_LENGTH_MAX);
6339
- payload.push(...this.intToLeBytes(windowPropsLength, 4));
6340
- const uriLength = Buffer.from(stringParam, "utf-8").length;
6341
- payload.push(...this.intToLeBytes(uriLength, 4));
6342
- }
6343
- const md5Bytes = Buffer.from(hexParameter, "hex");
6344
- for (let i = 0; i < this.config.MD5_XOR_LENGTH; i++) payload.push(md5Bytes[i] ^ seedByte);
6345
- const a1Bytes = Buffer.from(a1Value, "utf-8").subarray(0, this.config.A1_LENGTH);
6346
- const a1Padded = Buffer.alloc(this.config.A1_LENGTH);
6347
- a1Bytes.copy(a1Padded);
6348
- payload.push(a1Padded.length);
6349
- payload.push(...Array.from(a1Padded));
6350
- const appBytes = Buffer.from(appIdentifier, "utf-8").subarray(0, this.config.APP_ID_LENGTH);
6351
- const appPadded = Buffer.alloc(this.config.APP_ID_LENGTH);
6352
- appBytes.copy(appPadded);
6353
- payload.push(appPadded.length);
6354
- payload.push(...Array.from(appPadded));
6355
- const part11 = [1, seedByte ^ this.config.ENV_TABLE[0]];
6356
- for (let i = 1; i < 15; i++) part11.push(this.config.ENV_TABLE[i] ^ this.config.ENV_CHECKS_DEFAULT[i]);
6357
- payload.push(...part11);
6358
- const md5PathBytes = [];
6359
- for (let i = 0; i < 32; i += 2) md5PathBytes.push(parseInt(hexMd5Path.substring(i, i + 2), 16));
6360
- const a3Hash = this.customHashV2([...tsBytes, ...md5PathBytes]);
6361
- const a3Field = [...this.config.A3_PREFIX, ...a3Hash.map((b) => b ^ seedByte)];
6362
- payload.push(...a3Field);
6363
- return payload;
6364
- }
6365
- };
6366
- /**
6367
- * Custom CRC32 helper class.
6368
- *
6369
- * This implements a JavaScript-style CRC32 variant compatible with:
6370
- * (-1 ^ c ^ 0xEDB88320) >>> 0
6371
- * where `c` is the intermediate CRC state produced by the core CRC32 loop.
6372
- */
6373
- var MASK32 = 4294967295;
6374
- var POLY = 3988292384;
6375
- var TABLE = null;
6376
- function ensureTable() {
6377
- if (TABLE !== null) return TABLE;
6378
- const tbl = new Array(256);
6379
- for (let d = 0; d < 256; d++) {
6380
- let r = d;
6381
- for (let i = 0; i < 8; i++) {
6382
- r = r & 1 ? r >>> 1 ^ POLY : r >>> 1;
6383
- r = r >>> 0;
6384
- }
6385
- tbl[d] = r;
6386
- }
6387
- TABLE = tbl;
6388
- return TABLE;
6389
- }
6390
- function crc32Core(data, stringMode = "js") {
6391
- const table = ensureTable();
6392
- let c = MASK32;
6393
- let bytes;
6394
- if (typeof data === "string") {
6395
- if (stringMode === "utf8") bytes = Array.from(Buffer.from(data, "utf8"));
6396
- else {
6397
- bytes = [];
6398
- for (let i = 0; i < data.length; i++) bytes.push(data.charCodeAt(i) & 255);
6399
- }
6400
- } else bytes = data.map((b) => b & 255);
6401
- for (const b of bytes) c = (table[(c & 255 ^ b) & 255] ^ c >>> 8) >>> 0;
6402
- return c;
6403
- }
6404
- function toSigned32(u) {
6405
- return u & 2147483648 ? u - 4294967296 : u;
6406
- }
6407
- var CRC32 = class {
6408
- /**
6409
- * JavaScript-style CRC32 public entry.
6410
- *
6411
- * This matches the JS expression:
6412
- * (-1 ^ c ^ 0xEDB88320) >>> 0
6413
- */
6414
- static crc32JsInt(data, options = {}) {
6415
- const { stringMode = "js", signed = true } = options;
6416
- const u = (crc32Core(data, stringMode) ^ 306674911) >>> 0;
6417
- return signed ? toSigned32(u) : u;
6418
- }
6419
- };
6420
- /**
6421
- * Browser fingerprint data constants
6422
- */
6423
- var GPU_VENDORS = [
6424
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 400 (0x00000166) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6425
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 4400 (0x00001112) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6426
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 4600 (0x00000412) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6427
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 520 (0x1912) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6428
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 530 (0x00001912) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6429
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 550 (0x00001512) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6430
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 6000 (0x1606) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6431
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Graphics 540 (0x1912) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6432
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Graphics 550 (0x1913) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6433
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Plus Graphics 640 (0x161C) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6434
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 600 (0x3E80) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6435
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 620 (0x00003EA0) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6436
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 630 (0x00003E9B) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6437
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 655 (0x00009BC8) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6438
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(R) Xe Graphics (0x000046A8) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6439
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(R) Xe Graphics (0x00009A49) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6440
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(R) Xe MAX Graphics (0x00009BC0) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6441
- "Google Inc. (Intel)|ANGLE (Intel, Intel Arc A370M (0x0000AF51) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6442
- "Google Inc. (Intel)|ANGLE (Intel, Intel Arc A380 (0x0000AF41) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6443
- "Google Inc. (Intel)|ANGLE (Intel, Intel Arc A380M (0x0000AF5E) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6444
- "Google Inc. (Intel)|ANGLE (Intel, Intel Arc A550 (0x0000AF42) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6445
- "Google Inc. (Intel)|ANGLE (Intel, Intel Arc A770 (0x0000AF43) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6446
- "Google Inc. (Intel)|ANGLE (Intel, Intel Arc A770M (0x0000AF50) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6447
- "Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) Graphics (RPL‑P GT1) (0x0000A702) OpenGL 4.6)",
6448
- "Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) UHD Graphics 770 (0x00004680) OpenGL 4.6)",
6449
- "Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) HD Graphics 4400 (0x00001122) OpenGL 4.6)",
6450
- "Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) Graphics (ADL‑S GT1) (0x0000A0A1) OpenGL 4.6)",
6451
- "Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) Graphics (RKL GT1) (0x0000A9A1) OpenGL 4.6)",
6452
- "Google Inc. (Intel)|ANGLE (Intel, Mesa Intel(R) UHD Graphics (CML GT2) (0x00009A14) OpenGL 4.6)",
6453
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics 3000 (0x00001022) Direct3D9Ex vs_3_0 ps_3_0, igdumd64.dll)",
6454
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) HD Graphics Family (0x00000A16) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6455
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris Pro OpenGL Engine, OpenGL 4.1)",
6456
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Plus Graphics 645 (0x1616) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6457
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) Iris(TM) Plus Graphics 655 (0x161E) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6458
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 730 (0x0000A100) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6459
- "Google Inc. (Intel)|ANGLE (Intel, Intel(R) UHD Graphics 805 (0x0000B0A0) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6460
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Vega 3 Graphics (0x000015E0) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6461
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Vega 8 Graphics (0x000015D8) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6462
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Vega 11 Graphics (0x000015DD) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6463
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Graphics (0x00001636) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6464
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 5500 XT Direct3D11 vs_5_0 ps_5_0, D3D11)",
6465
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 560 (0x000067EF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6466
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 570 (0x000067DF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6467
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 580 2048SP (0x00006FDF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6468
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 590 (0x000067FF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6469
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6600 (0x000073FF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6470
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6600 XT (0x000073FF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6471
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6650 XT Direct3D11 vs_5_0 ps_5_0, D3D11)",
6472
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6700 XT (0x000073DF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6473
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6800 (0x000073BF) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6474
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 6900 XT (0x000073C2) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6475
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon RX 7700 XT Direct3D11 vs_5_0 ps_5_0, D3D11)",
6476
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Pro 5300M OpenGL Engine, OpenGL 4.1)",
6477
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon Pro 5500 XT OpenGL Engine, OpenGL 4.1)",
6478
- "Google Inc. (AMD)|ANGLE (AMD, AMD Radeon R7 370 Series (0x00006811) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6479
- "Google Inc. (AMD)|ANGLE (AMD, ATI Technologies Inc. AMD Radeon RX Vega 64 OpenGL Engine, OpenGL 4.1)",
6480
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1050 (0x00001C81) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6481
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1050 Ti (0x00001C8C) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6482
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1060 6GB (0x000010DE) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6483
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1070 (0x00001B81) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6484
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce GTX 1080 (0x00001B80) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6485
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2060 (0x00001F06) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6486
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2060 SUPER (0x00001F06) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6487
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2070 (0x00001F10) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6488
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 2070 SUPER (0x00001F10) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6489
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 (0x0000250F) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6490
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 Ti (0x00002489) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6491
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3070 (0x00002488) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6492
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3070 Ti (0x000028A5) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6493
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3080 (0x00002206) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6494
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3080 Ti (0x00002208) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6495
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 3090 (0x00002204) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6496
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4060 (0x00002882) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6497
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4060 Ti (0x00002803) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6498
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4070 (0x00002786) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6499
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4070 Ti (0x00002857) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6500
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4080 (0x00002819) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6501
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA GeForce RTX 4090 (0x00002684) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6502
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA Quadro RTX 5000 Ada Generation (0x000026B2) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6503
- "Google Inc. (NVIDIA)|ANGLE (NVIDIA, NVIDIA Quadro P400 (0x00001CB3) Direct3D11 vs_5_0 ps_5_0, D3D11)",
6504
- "Google Inc. (Google)|ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)",
6505
- "Google Inc. (Google)|ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero)), SwiftShader driver)",
6506
- "Google Inc. (Google)|ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device), SwiftShader driver)"
6507
- ];
6508
- var SCREEN_RESOLUTIONS = {
6509
- resolutions: [
6510
- "1366;768",
6511
- "1600;900",
6512
- "1920;1080",
6513
- "2560;1440",
6514
- "3840;2160",
6515
- "7680;4320"
6516
- ],
6517
- weights: [
6518
- .25,
6519
- .15,
6520
- .35,
6521
- .15,
6522
- .08,
6523
- .02
6524
- ]
6525
- };
6526
- var COLOR_DEPTH_OPTIONS = {
6527
- values: [
6528
- 16,
6529
- 24,
6530
- 30,
6531
- 32
6532
- ],
6533
- weights: [
6534
- .05,
6535
- .6,
6536
- .05,
6537
- .3
6538
- ]
6539
- };
6540
- var DEVICE_MEMORY_OPTIONS = {
6541
- values: [
6542
- 1,
6543
- 2,
6544
- 4,
6545
- 8,
6546
- 12,
6547
- 16
6548
- ],
6549
- weights: [
6550
- .1,
6551
- .25,
6552
- .4,
6553
- .2,
6554
- .03,
6555
- .01
6556
- ]
6557
- };
6558
- var CORE_OPTIONS = {
6559
- values: [
6560
- 2,
6561
- 4,
6562
- 6,
6563
- 8,
6564
- 12,
6565
- 16,
6566
- 24,
6567
- 32
6568
- ],
6569
- weights: [
6570
- .1,
6571
- .4,
6572
- .2,
6573
- .15,
6574
- .08,
6575
- .04,
6576
- .02,
6577
- .01
6578
- ]
6579
- };
6580
- var BROWSER_PLUGINS = "PDF Viewer,Chrome PDF Viewer,Chromium PDF Viewer,Microsoft Edge PDF Viewer,WebKit built-in PDF";
6581
- var CANVAS_HASH = "742cc32c";
6582
- var VOICE_HASH_OPTIONS = "10311144241322244122";
6583
- var FONTS = "system-ui, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\", -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif, BlinkMacSystemFont, \"Helvetica Neue\", Arial, \"PingFang SC\", \"PingFang TC\", \"PingFang HK\", \"Microsoft Yahei\", \"Microsoft JhengHei\"";
6584
- /**
6585
- * Fingerprint generation helper functions
6586
- */
6587
- /**
6588
- * Random choice a value from list according to the given weights
6589
- */
6590
- function weightedRandomChoice(options, weights) {
6591
- const totalWeight = weights.reduce((sum, w) => sum + w, 0);
6592
- let random = Math.random() * totalWeight;
6593
- for (let i = 0; i < options.length; i++) {
6594
- random -= weights[i];
6595
- if (random <= 0) return String(options[i]);
6596
- }
6597
- return String(options[options.length - 1]);
6598
- }
6599
- /**
6600
- * Get random GPU renderer information
6601
- */
6602
- function getRendererInfo() {
6603
- const [vendor, renderer] = GPU_VENDORS[Math.floor(Math.random() * GPU_VENDORS.length)].split("|");
6604
- return [vendor, renderer];
6605
- }
6606
- /**
6607
- * Get random screen configuration with width, height, and available dimensions
6608
- */
6609
- function getScreenConfig() {
6610
- const [widthStr, heightStr] = weightedRandomChoice(SCREEN_RESOLUTIONS.resolutions, SCREEN_RESOLUTIONS.weights).split(";");
6611
- const width = parseInt(widthStr, 10);
6612
- const height = parseInt(heightStr, 10);
6613
- let availWidth;
6614
- let availHeight;
6615
- if (Math.random() < .5) {
6616
- availWidth = width - parseInt(weightedRandomChoice([
6617
- 0,
6618
- 30,
6619
- 60,
6620
- 80
6621
- ], [
6622
- .1,
6623
- .4,
6624
- .3,
6625
- .2
6626
- ]), 10);
6627
- availHeight = height;
6628
- } else {
6629
- availWidth = width;
6630
- availHeight = height - parseInt(weightedRandomChoice([
6631
- 30,
6632
- 60,
6633
- 80,
6634
- 100
6635
- ], [
6636
- .2,
6637
- .5,
6638
- .2,
6639
- .1
6640
- ]), 10);
6641
- }
6642
- return {
6643
- width,
6644
- height,
6645
- availWidth,
6646
- availHeight
6647
- };
6648
- }
6649
- /**
6650
- * Generate canvas fingerprint hash
6651
- */
6652
- function generateCanvasHash() {
6653
- return CANVAS_HASH;
6654
- }
6655
- /**
6656
- * Generate WebGL fingerprint hash
6657
- */
6658
- function generateWebglHash() {
6659
- return createHash("md5").update(randomBytes(32)).digest("hex");
6660
- }
6661
- /**
6662
- * Browser fingerprint generator
6663
- */
6664
- var FingerprintGenerator = class {
6665
- config;
6666
- b1Key;
6667
- encoder;
6668
- constructor(config) {
6669
- this.config = config || new CryptoConfig();
6670
- this.b1Key = Buffer.from(this.config.B1_SECRET_KEY, "utf8");
6671
- this.encoder = new Base64Encoder(this.config);
6672
- }
6673
- /**
6674
- * Generate b1 parameter from fingerprint
6675
- */
6676
- generateB1(fp) {
6677
- const b1Fp = {
6678
- x33: fp.x33,
6679
- x34: fp.x34,
6680
- x35: fp.x35,
6681
- x36: fp.x36,
6682
- x37: fp.x37,
6683
- x38: fp.x38,
6684
- x39: fp.x39,
6685
- x42: fp.x42,
6686
- x43: fp.x43,
6687
- x44: fp.x44,
6688
- x45: fp.x45,
6689
- x46: fp.x46,
6690
- x48: fp.x48,
6691
- x49: fp.x49,
6692
- x50: fp.x50,
6693
- x51: fp.x51,
6694
- x52: fp.x52,
6695
- x82: fp.x82
6696
- };
6697
- const b1Json = JSON.stringify(b1Fp);
6698
- const ciphertext = this.rc4Encrypt(b1Json, this.b1Key);
6699
- const encodedUrl = this.customUrlEncode(ciphertext);
6700
- const b = [];
6701
- const parts = encodedUrl.split("%").slice(1);
6702
- for (const part of parts) {
6703
- const chars = part.split("");
6704
- b.push(parseInt(chars.slice(0, 2).join(""), 16));
6705
- for (const c of chars.slice(2)) b.push(c.charCodeAt(0));
6706
- }
6707
- return this.encoder.encode(JSON.stringify(b));
6708
- }
6709
- /**
6710
- * RC4 encryption implementation
6711
- */
6712
- rc4Encrypt(data, key) {
6713
- const S = new Array(256);
6714
- for (let i = 0; i < 256; i++) S[i] = i;
6715
- let j = 0;
6716
- for (let i = 0; i < 256; i++) {
6717
- j = (j + S[i] + key[i % key.length]) % 256;
6718
- [S[i], S[j]] = [S[j], S[i]];
6719
- }
6720
- const dataBytes = Buffer.from(data, "utf8");
6721
- const result = Buffer.alloc(dataBytes.length);
6722
- let i = 0;
6723
- j = 0;
6724
- for (let k = 0; k < dataBytes.length; k++) {
6725
- i = (i + 1) % 256;
6726
- j = (j + S[i]) % 256;
6727
- [S[i], S[j]] = [S[j], S[i]];
6728
- const t = (S[i] + S[j]) % 256;
6729
- result[k] = dataBytes[k] ^ S[t];
6730
- }
6731
- return result.toString("latin1");
6732
- }
6733
- /**
6734
- * Custom URL encode matching Python's quote with safe="!*'()~_-"
6735
- */
6736
- customUrlEncode(str) {
6737
- const safeChars = "!*'()~_-";
6738
- let result = "";
6739
- for (let i = 0; i < str.length; i++) {
6740
- const char = str[i];
6741
- const code = str.charCodeAt(i);
6742
- if (code >= 65 && code <= 90 || code >= 97 && code <= 122 || code >= 48 && code <= 57 || safeChars.includes(char)) result += char;
6743
- else result += "%" + code.toString(16).toUpperCase().padStart(2, "0");
6744
- }
6745
- return result;
6746
- }
6747
- /**
6748
- * Generate browser fingerprint
6749
- */
6750
- generate(cookies, userAgent) {
6751
- const cookieString = Object.entries(cookies).map(([k, v]) => `${k}=${v}`).join("; ");
6752
- const screenConfig = getScreenConfig();
6753
- const isIncognitoMode = weightedRandomChoice(["true", "false"], [.95, .05]);
6754
- const [vendor, renderer] = getRendererInfo();
6755
- const x78Y = Math.floor(Math.random() * 100) + 2350;
6756
- return {
6757
- x1: userAgent,
6758
- x2: "false",
6759
- x3: "zh-CN",
6760
- x4: weightedRandomChoice(COLOR_DEPTH_OPTIONS.values, COLOR_DEPTH_OPTIONS.weights),
6761
- x5: weightedRandomChoice(DEVICE_MEMORY_OPTIONS.values, DEVICE_MEMORY_OPTIONS.weights),
6762
- x6: "24",
6763
- x7: `${vendor},${renderer}`,
6764
- x8: weightedRandomChoice(CORE_OPTIONS.values, CORE_OPTIONS.weights),
6765
- x9: `${screenConfig.width};${screenConfig.height}`,
6766
- x10: `${screenConfig.availWidth};${screenConfig.availHeight}`,
6767
- x11: "-480",
6768
- x12: "Asia/Shanghai",
6769
- x13: isIncognitoMode,
6770
- x14: isIncognitoMode,
6771
- x15: isIncognitoMode,
6772
- x16: "false",
6773
- x17: "false",
6774
- x18: "un",
6775
- x19: "Win32",
6776
- x20: "",
6777
- x21: BROWSER_PLUGINS,
6778
- x22: generateWebglHash(),
6779
- x23: "false",
6780
- x24: "false",
6781
- x25: "false",
6782
- x26: "false",
6783
- x27: "false",
6784
- x28: "0,false,false",
6785
- x29: "4,7,8",
6786
- x30: "swf object not loaded",
6787
- x33: "0",
6788
- x34: "0",
6789
- x35: "0",
6790
- x36: `${Math.floor(Math.random() * 20) + 1}`,
6791
- x37: "0|0|0|0|0|0|0|0|0|1|0|0|0|0|0|0|0|0|1|0|0|0|0|0",
6792
- x38: "0|0|1|0|1|0|0|0|0|0|1|0|1|0|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0",
6793
- x39: 0,
6794
- x40: "0",
6795
- x41: "0",
6796
- x42: "3.4.4",
6797
- x43: generateCanvasHash(),
6798
- x44: `${Date.now()}`,
6799
- x45: "__SEC_CAV__1-1-1-1-1|__SEC_WSA__|",
6800
- x46: "false",
6801
- x47: "1|0|0|0|0|0",
6802
- x48: "",
6803
- x49: "{list:[],type:}",
6804
- x50: "",
6805
- x51: "",
6806
- x52: "",
6807
- x55: "380,380,360,400,380,400,420,380,400,400,360,360,440,420",
6808
- x56: `${vendor}|${renderer}|${generateWebglHash()}|35`,
6809
- x57: cookieString,
6810
- x58: "180",
6811
- x59: "2",
6812
- x60: "63",
6813
- x61: "1291",
6814
- x62: "2047",
6815
- x63: "0",
6816
- x64: "0",
6817
- x65: "0",
6818
- x66: {
6819
- referer: "",
6820
- location: "https://www.xiaohongshu.com/explore",
6821
- frame: 0
6822
- },
6823
- x67: "1|0",
6824
- x68: "0",
6825
- x69: "326|1292|30",
6826
- x70: ["location"],
6827
- x71: "true",
6828
- x72: "complete",
6829
- x73: "1191",
6830
- x74: "0|0|0",
6831
- x75: "Google Inc.",
6832
- x76: "true",
6833
- x77: "1|1|1|1|1|1|1|1|1|1",
6834
- x78: {
6835
- x: 0,
6836
- y: x78Y,
6837
- left: 0,
6838
- right: 290.828125,
6839
- bottom: x78Y + 18,
6840
- height: 18,
6841
- top: x78Y,
6842
- width: 290.828125,
6843
- font: FONTS
6844
- },
6845
- x82: "_0x17a2|_0x1954",
6846
- x31: "124.04347527516074",
6847
- x79: "144|599565058866",
6848
- x53: createHash("md5").update(randomBytes(32)).digest("hex"),
6849
- x54: VOICE_HASH_OPTIONS,
6850
- x80: "1|[object FileSystemDirectoryHandle]"
6851
- };
6852
- }
6853
- /**
6854
- * Update fingerprint with new cookies and URL
6855
- */
6856
- update(fp, cookies, url) {
6857
- const cookieString = Object.entries(cookies).map(([k, v]) => `${k}=${v}`).join("; ");
6858
- fp.x39 = 0;
6859
- fp.x44 = `${Date.now()}`;
6860
- fp.x57 = cookieString;
6861
- fp.x66 = {
6862
- referer: "https://www.xiaohongshu.com/explore",
6863
- location: url,
6864
- frame: 0
6865
- };
6866
- }
6867
- };
6868
- /**
6869
- * x-s-common signature generation
6870
- */
6871
- var XsCommonSigner = class {
6872
- config;
6873
- fpGenerator;
6874
- encoder;
6875
- constructor(config) {
6876
- this.config = config || new CryptoConfig();
6877
- this.fpGenerator = new FingerprintGenerator(this.config);
6878
- this.encoder = new Base64Encoder(this.config);
6879
- }
6880
- /**
6881
- * Generate x-s-common signature
6882
- */
6883
- sign(cookieDict) {
6884
- const a1Value = cookieDict.a1;
6885
- if (!a1Value) throw new Error("Missing 'a1' in cookies");
6886
- const fingerprint = this.fpGenerator.generate(cookieDict, this.config.PUBLIC_USERAGENT);
6887
- const b1 = this.fpGenerator.generateB1(fingerprint);
6888
- const x9 = CRC32.crc32JsInt(b1);
6889
- const signStruct = { ...this.config.SIGNATURE_XSCOMMON_TEMPLATE };
6890
- signStruct.x5 = a1Value;
6891
- signStruct.x8 = b1;
6892
- signStruct.x9 = x9;
6893
- const signJson = JSON.stringify(signStruct);
6894
- return this.encoder.encode(signJson);
6895
- }
6896
- };
6897
- /**
6898
- * XYW_ signature crypto (AES-128-CBC).
6899
- *
6900
- * Ported from the upstream Python `core/xyw_crypto.py`. Data-fetching APIs
6901
- * (user_posted, otherinfo, etc.) reject the traditional XYS_ format with HTTP
6902
- * 406; the XYW_ format uses an independent AES-128-CBC crypto path.
6903
- *
6904
- * The upstream ships a hand-rolled AES-128 implementation. Since it is
6905
- * standard AES-128 (identical S-box, RCON, key schedule and MixColumns), this
6906
- * port uses Node's native `aes-128-cbc` cipher, which produces byte-identical
6907
- * ciphertext while being far less error-prone.
6908
- */
6909
- var AES_BLOCK_SIZE = 16;
6910
- /**
6911
- * Apply PKCS#7 padding to a byte buffer.
6912
- */
6913
- function pkcs7Pad(data) {
6914
- const padLen = AES_BLOCK_SIZE - data.length % AES_BLOCK_SIZE;
6915
- return Buffer.concat([data, Buffer.alloc(padLen, padLen)]);
6916
- }
6917
- /**
6918
- * AES-128-CBC cipher matching the upstream XYW implementation.
6919
- */
6920
- var XywCipher = class {
6921
- key;
6922
- iv;
6923
- constructor(key, iv) {
6924
- if (key.length !== AES_BLOCK_SIZE) throw new Error("AES-128 requires a 16-byte key");
6925
- if (iv.length !== AES_BLOCK_SIZE) throw new Error("AES-CBC IV must be 16 bytes");
6926
- this.key = key;
6927
- this.iv = iv;
6928
- }
6929
- /**
6930
- * Encrypt PKCS#7-padded plaintext with AES-128-CBC.
6931
- *
6932
- * @param plaintextBytes - Plaintext, already padded to a 16-byte boundary
6933
- * @returns Ciphertext bytes
6934
- */
6935
- encrypt(plaintextBytes) {
6936
- if (plaintextBytes.length % AES_BLOCK_SIZE !== 0) throw new Error("plaintextBytes must be PKCS#7 padded to a 16-byte boundary");
6937
- const cipher = createCipheriv("aes-128-cbc", this.key, this.iv);
6938
- cipher.setAutoPadding(false);
6939
- return Buffer.concat([cipher.update(plaintextBytes), cipher.final()]);
6940
- }
6941
- };
6942
- /**
6943
- * Build the hex-encoded payload for an XYW_ signature.
6944
- *
6945
- * @param options.fullUri - The content string (uri + params/body)
6946
- * @param options.a1Value - a1 value from cookies
6947
- * @param options.timestampMs - Millisecond timestamp string
6948
- * @param options.config - Crypto configuration
6949
- * @param options.envFlags - Optional environment flags string
6950
- * @returns Hex-encoded AES-128-CBC ciphertext
6951
- */
6952
- function buildXywPayloadHex(options) {
6953
- const { fullUri, a1Value, timestampMs, config, envFlags } = options;
6954
- const x1 = createHash("md5").update(`url=${fullUri}`).digest("hex");
6955
- const x2 = envFlags || config.XYW_ENV_FLAGS_DEFAULT;
6956
- const message = Buffer.from(`x1=${x1};x2=${x2};x3=${a1Value};x4=${timestampMs};`);
6957
- const plaintext = pkcs7Pad(Buffer.from(message.toString("base64")));
6958
- return new XywCipher(Buffer.from(config.XYW_AES_KEY, "utf-8"), Buffer.from(config.XYW_AES_IV, "utf-8")).encrypt(plaintext).toString("hex");
6959
- }
6960
- /**
6961
- * x-rap-param generation.
6962
- *
6963
- * Ported from the upstream Python `core/xrap.py`. Required for feed, search,
6964
- * and note-publishing endpoints. Builds a TLV body structure, gzip-compresses
6965
- * it, then XOR + block-encrypts (SM4-variant with custom S-box/round keys) and
6966
- * wraps it in a base64 envelope.
6967
- */
6968
- var cfg = new CryptoConfig();
6969
- cfg.MAX_32BIT;
6970
- var XRAP_SDK_VERSION = cfg.XRAP_SDK_VERSION;
6971
- var ROUND_KEYS = [
6972
- [
6973
- 1802586417,
6974
- 1146381175,
6975
- 1264073008,
6976
- 1517568377
6977
- ],
6978
- [
6979
- 2301709464,
6980
- 3445960687,
6981
- 2252150495,
6982
- 3695794086
6983
- ],
6984
- [
6985
- 3255120652,
6986
- 257957091,
6987
- 2304576060,
6988
- 1427398042
6989
- ],
6990
- [
6991
- 3523543150,
6992
- 3714391181,
6993
- 1412961969,
6994
- 19680043
6995
- ],
6996
- [
6997
- 1997286255,
6998
- 2859022306,
6999
- 4266729811,
7000
- 4286409336
7001
- ],
7002
- [
7003
- 2020015092,
7004
- 3524250646,
7005
- 744418629,
7006
- 3542320957
7007
- ],
7008
- [
7009
- 2431239806,
7010
- 1122372200,
7011
- 1857611565,
7012
- 3181076496
7013
- ],
7014
- [
7015
- 3922013166,
7016
- 2871206278,
7017
- 3315320491,
7018
- 2013308603
7019
- ],
7020
- [
7021
- 330996286,
7022
- 3097082808,
7023
- 2097315091,
7024
- 84073384
7025
- ],
7026
- [
7027
- 1348547184,
7028
- 3908602312,
7029
- 2516251867,
7030
- 2432184179
7031
- ]
7032
- ];
7033
- var LAST_ROUND_KEY = [
7034
- 4086740047,
7035
- 460209543,
7036
- 2392115548,
7037
- 510453295
7038
- ];
7039
- var LAST_ROUND_KEY_BYTES = (() => {
7040
- const b = Buffer.alloc(16);
7041
- for (let i = 0; i < 4; i++) b.writeUInt32BE(LAST_ROUND_KEY[i] >>> 0, i * 4);
7042
- return b;
7043
- })();
7044
- var SBOX = [
7045
- 122,
7046
- 1,
7047
- 88,
7048
- 224,
7049
- 80,
7050
- 78,
7051
- 2,
7052
- 121,
7053
- 29,
7054
- 75,
7055
- 83,
7056
- 218,
7057
- 107,
7058
- 72,
7059
- 212,
7060
- 82,
7061
- 237,
7062
- 119,
7063
- 18,
7064
- 33,
7065
- 20,
7066
- 21,
7067
- 236,
7068
- 16,
7069
- 24,
7070
- 229,
7071
- 185,
7072
- 241,
7073
- 12,
7074
- 8,
7075
- 252,
7076
- 125,
7077
- 249,
7078
- 205,
7079
- 181,
7080
- 200,
7081
- 230,
7082
- 55,
7083
- 38,
7084
- 135,
7085
- 86,
7086
- 186,
7087
- 184,
7088
- 43,
7089
- 173,
7090
- 240,
7091
- 104,
7092
- 247,
7093
- 139,
7094
- 141,
7095
- 211,
7096
- 94,
7097
- 54,
7098
- 77,
7099
- 46,
7100
- 146,
7101
- 49,
7102
- 130,
7103
- 242,
7104
- 41,
7105
- 112,
7106
- 61,
7107
- 45,
7108
- 215,
7109
- 182,
7110
- 64,
7111
- 178,
7112
- 67,
7113
- 68,
7114
- 128,
7115
- 120,
7116
- 210,
7117
- 13,
7118
- 73,
7119
- 74,
7120
- 9,
7121
- 99,
7122
- 108,
7123
- 7,
7124
- 58,
7125
- 158,
7126
- 213,
7127
- 6,
7128
- 198,
7129
- 225,
7130
- 98,
7131
- 244,
7132
- 52,
7133
- 36,
7134
- 89,
7135
- 169,
7136
- 87,
7137
- 42,
7138
- 0,
7139
- 62,
7140
- 23,
7141
- 44,
7142
- 10,
7143
- 26,
7144
- 66,
7145
- 250,
7146
- 147,
7147
- 190,
7148
- 220,
7149
- 245,
7150
- 179,
7151
- 106,
7152
- 19,
7153
- 232,
7154
- 3,
7155
- 199,
7156
- 151,
7157
- 187,
7158
- 115,
7159
- 118,
7160
- 134,
7161
- 227,
7162
- 70,
7163
- 114,
7164
- 71,
7165
- 208,
7166
- 5,
7167
- 76,
7168
- 56,
7169
- 124,
7170
- 31,
7171
- 129,
7172
- 171,
7173
- 117,
7174
- 81,
7175
- 235,
7176
- 243,
7177
- 50,
7178
- 116,
7179
- 17,
7180
- 143,
7181
- 132,
7182
- 137,
7183
- 156,
7184
- 113,
7185
- 34,
7186
- 126,
7187
- 157,
7188
- 207,
7189
- 63,
7190
- 145,
7191
- 105,
7192
- 101,
7193
- 60,
7194
- 109,
7195
- 150,
7196
- 162,
7197
- 152,
7198
- 153,
7199
- 51,
7200
- 57,
7201
- 154,
7202
- 202,
7203
- 195,
7204
- 159,
7205
- 160,
7206
- 188,
7207
- 228,
7208
- 163,
7209
- 164,
7210
- 84,
7211
- 127,
7212
- 167,
7213
- 168,
7214
- 4,
7215
- 111,
7216
- 93,
7217
- 172,
7218
- 183,
7219
- 39,
7220
- 175,
7221
- 176,
7222
- 40,
7223
- 65,
7224
- 174,
7225
- 180,
7226
- 110,
7227
- 11,
7228
- 27,
7229
- 223,
7230
- 142,
7231
- 48,
7232
- 177,
7233
- 254,
7234
- 144,
7235
- 97,
7236
- 96,
7237
- 192,
7238
- 203,
7239
- 92,
7240
- 14,
7241
- 239,
7242
- 22,
7243
- 131,
7244
- 234,
7245
- 32,
7246
- 233,
7247
- 201,
7248
- 85,
7249
- 196,
7250
- 69,
7251
- 133,
7252
- 204,
7253
- 30,
7254
- 170,
7255
- 103,
7256
- 138,
7257
- 123,
7258
- 53,
7259
- 214,
7260
- 25,
7261
- 216,
7262
- 217,
7263
- 194,
7264
- 219,
7265
- 148,
7266
- 221,
7267
- 28,
7268
- 222,
7269
- 166,
7270
- 255,
7271
- 248,
7272
- 191,
7273
- 91,
7274
- 90,
7275
- 15,
7276
- 231,
7277
- 193,
7278
- 189,
7279
- 209,
7280
- 102,
7281
- 197,
7282
- 37,
7283
- 238,
7284
- 140,
7285
- 226,
7286
- 95,
7287
- 136,
7288
- 161,
7289
- 59,
7290
- 165,
7291
- 246,
7292
- 206,
7293
- 149,
7294
- 47,
7295
- 100,
7296
- 35,
7297
- 251,
7298
- 253,
7299
- 79,
7300
- 155
7301
- ];
7302
- function gfDouble(x) {
7303
- x <<= 1;
7304
- return x & 256 ? (x ^ 283) & 255 : x & 255;
7305
- }
7306
- function gfMul(x, n) {
7307
- if (n === 1) return x;
7308
- if (n === 2) return gfDouble(x);
7309
- if (n === 3) return gfDouble(x) ^ x;
7310
- throw new Error(`unsupported GF multiplier: ${n}`);
7311
- }
7312
- /**
7313
- * Pre-compute 4 shifted T-tables from the S-box for the round function.
7314
- */
7315
- function buildLookupTables() {
7316
- const col0 = [];
7317
- const col1 = [];
7318
- const col2 = [];
7319
- const col3 = [];
7320
- for (const s of SBOX) {
7321
- const a = gfMul(s, 2);
7322
- const d = gfMul(s, 3);
7323
- col0.push((a << 24 | s << 16 | s << 8 | d) >>> 0);
7324
- col1.push((d << 24 | a << 16 | s << 8 | s) >>> 0);
7325
- col2.push((s << 24 | d << 16 | a << 8 | s) >>> 0);
7326
- col3.push((s << 24 | s << 16 | d << 8 | a) >>> 0);
7327
- }
7328
- return [
7329
- col0,
7330
- col1,
7331
- col2,
7332
- col3
7333
- ];
7334
- }
7335
- var [LUT0, LUT1, LUT2, LUT3] = buildLookupTables();
7336
- function readU32BE(buf, off = 0) {
7337
- return buf.readUInt32BE(off);
7338
- }
7339
- function toCompactJson(data) {
7340
- if (typeof data === "string") return data;
7341
- if (Buffer.isBuffer(data) || data instanceof Uint8Array) return Buffer.from(data).toString("utf-8");
7342
- return JSON.stringify(data);
7343
- }
7344
- function fieldByte(tag, val = 0) {
7345
- const b = Buffer.alloc(3);
7346
- b.writeUInt16BE(tag, 0);
7347
- b.writeUInt8(val & 255, 2);
7348
- return b;
7349
- }
7350
- function fieldU32(tag, val) {
7351
- const b = Buffer.alloc(6);
7352
- b.writeUInt16BE(tag, 0);
7353
- b.writeUInt32BE(val >>> 0, 2);
7354
- return b;
7355
- }
7356
- function fieldU64(tag, val) {
7357
- const b = Buffer.alloc(10);
7358
- b.writeUInt16BE(tag, 0);
7359
- b.writeBigUInt64BE(BigInt(val), 2);
7360
- return b;
7361
- }
7362
- function fieldBlob(tag, data) {
7363
- const head = Buffer.alloc(6);
7364
- head.writeUInt16BE(tag, 0);
7365
- head.writeUInt32BE(data.length >>> 0, 2);
7366
- return Buffer.concat([head, data]);
7367
- }
7368
- /**
7369
- * Encrypt a single 16-byte block; shorter input is zero-padded on the right.
7370
- */
7371
- function encryptBlock16(block) {
7372
- const src = Buffer.from(block);
7373
- if (src.length > 16) throw new Error("block length must be <= 16");
7374
- const padded = Buffer.alloc(16);
7375
- src.copy(padded);
7376
- let s0 = (readU32BE(padded, 0) ^ ROUND_KEYS[0][0]) >>> 0;
7377
- let s1 = (readU32BE(padded, 4) ^ ROUND_KEYS[0][1]) >>> 0;
7378
- let s2 = (readU32BE(padded, 8) ^ ROUND_KEYS[0][2]) >>> 0;
7379
- let s3 = (readU32BE(padded, 12) ^ ROUND_KEYS[0][3]) >>> 0;
7380
- for (let rnd = 1; rnd < 10; rnd++) {
7381
- const rk = ROUND_KEYS[rnd];
7382
- const n0 = (LUT0[s0 >>> 24 & 255] ^ LUT1[s1 >>> 16 & 255] ^ LUT2[s2 >>> 8 & 255] ^ LUT3[s3 & 255] ^ rk[0]) >>> 0;
7383
- const n1 = (LUT0[s1 >>> 24 & 255] ^ LUT1[s2 >>> 16 & 255] ^ LUT2[s3 >>> 8 & 255] ^ LUT3[s0 & 255] ^ rk[1]) >>> 0;
7384
- const n2 = (LUT0[s2 >>> 24 & 255] ^ LUT1[s3 >>> 16 & 255] ^ LUT2[s0 >>> 8 & 255] ^ LUT3[s1 & 255] ^ rk[2]) >>> 0;
7385
- const n3 = (LUT0[s3 >>> 24 & 255] ^ LUT1[s0 >>> 16 & 255] ^ LUT2[s1 >>> 8 & 255] ^ LUT3[s2 & 255] ^ rk[3]) >>> 0;
7386
- s0 = n0;
7387
- s1 = n1;
7388
- s2 = n2;
7389
- s3 = n3;
7390
- }
7391
- const state = [
7392
- s0,
7393
- s1,
7394
- s2,
7395
- s3
7396
- ];
7397
- const out = Buffer.alloc(16);
7398
- for (let row = 0; row < 4; row++) for (let col = 0; col < 4; col++) {
7399
- const idx = state[row + col & 3] >>> 24 - 8 * col & 255;
7400
- out[4 * row + col] = SBOX[idx] ^ LAST_ROUND_KEY_BYTES[4 * row + col];
7401
- }
7402
- return out;
7403
- }
7404
- /**
7405
- * Encrypt data by splitting into 16-byte blocks (ECB mode).
7406
- */
7407
- function encryptBlocks(src) {
7408
- const parts = [];
7409
- for (let i = 0; i < src.length; i += 16) parts.push(encryptBlock16(src.subarray(i, i + 16)));
7410
- return Buffer.concat(parts);
7411
- }
7412
- /**
7413
- * Encrypt the 16-byte session key and append its length.
7414
- */
7415
- function encryptSessionKey(key) {
7416
- if (key.length !== 16) throw new Error("session key must be 16 bytes");
7417
- const len = Buffer.alloc(4);
7418
- len.writeUInt32BE(16, 0);
7419
- return Buffer.concat([encryptBlock16(key), len]);
7420
- }
7421
- var DEFAULT_INTERACTION_TRACE = Buffer.from("0002000200004700000000000001ffd9ffa8005c23fff1ffff001501ff90fff9000022fff2ffff001501ffb800770061a5ffe3ffff002a01fffcffe70000f0ffe4ffff002a01ffd30000003e01ffd40000003e01ffc8ffff005301ffbdfffa006901ffbefffb006901ffb1fff4007d01ffa6ffee009301ffa8ffef009301ff9effe900a801ff96ffe600be01ff97ffe600be01ff93ffe500d301ff92ffe500ea01ff92ffe4010501ff92ffe3011b01ff92ffe402d101ff93ffe502f201ff94ffe6040501", "hex");
7422
- var DEFAULT_ENVIRONMENT_SNAPSHOT = Buffer.from("000000010000000000000000fffeffff00000000000000390001ffff00bc00000000006e00020001013400000000012f00000002011a00000000016100000000019f0000000002470000000002790000000002b1", "hex");
7423
- /**
7424
- * Build the pre-compression TLV payload for the RAP parameter.
7425
- */
7426
- function buildBodyStructure(api, data, options = {}) {
7427
- const bodyStr = toCompactJson(data);
7428
- const hashInput = Buffer.from(api + bodyStr, "utf-8");
7429
- const ts = options.timestampMs === null || options.timestampMs === void 0 ? Math.floor(Date.now()) : Math.floor(options.timestampMs);
7430
- let key;
7431
- if (typeof options.sessionKey === "string") key = Buffer.from(options.sessionKey, "ascii");
7432
- else if (options.sessionKey) key = Buffer.from(options.sessionKey);
7433
- else key = Buffer.from(RandomGenerator.generateRandomAscii(16), "ascii");
7434
- if (key.length !== 16) throw new Error("sessionKey must be 16 bytes");
7435
- const xorByte = options.obfuscationByte === null || options.obfuscationByte === void 0 ? Math.floor(Math.random() * 255) + 1 : options.obfuscationByte & 255;
7436
- const randNonce = options.nonce === null || options.nonce === void 0 ? Math.floor(Math.random() * 4294967296) >>> 0 : options.nonce >>> 0;
7437
- const trace = options.interactionTrace ?? DEFAULT_INTERACTION_TRACE;
7438
- const env = options.environmentSnapshot ?? DEFAULT_ENVIRONMENT_SNAPSHOT;
7439
- const parts = [];
7440
- parts.push(fieldU64(1e3, ts));
7441
- parts.push(fieldU32(1001, randNonce));
7442
- parts.push(fieldBlob(1002, key));
7443
- parts.push(fieldU32(1003, xxh32(hashInput)));
7444
- const flagTags = [];
7445
- for (let t = 1051; t < 1066; t++) flagTags.push(t);
7446
- flagTags.push(1070);
7447
- for (let t = 1066; t < 1070; t++) flagTags.push(t);
7448
- for (const tag of flagTags) parts.push(fieldByte(tag));
7449
- parts.push(fieldU32(1100, 0));
7450
- for (let t = 1071; t < 1074; t++) parts.push(fieldByte(t));
7451
- parts.push(fieldU32(1075, 1380));
7452
- parts.push(fieldU32(1076, 44));
7453
- parts.push(fieldU64(1077, Math.max(0, ts - 1076)));
7454
- parts.push(fieldBlob(1078, trace));
7455
- parts.push(fieldU32(1082, 0));
7456
- parts.push(fieldU32(1084, 0));
7457
- parts.push(fieldU32(1085, 0));
7458
- parts.push(fieldU32(1086, 100));
7459
- parts.push(fieldU64(1087, Math.max(0, ts - 727)));
7460
- parts.push(fieldBlob(1088, env));
7461
- parts.push(fieldU32(1090, 0));
7462
- parts.push(fieldU32(1097, 0));
7463
- parts.push(fieldU32(1092, 1382));
7464
- parts.push(fieldU32(1094, 1305));
7465
- parts.push(fieldU64(1095, Math.max(0, ts - 8588)));
7466
- parts.push(fieldU32(1093, 0));
7467
- parts.push(fieldByte(1096));
7468
- parts.push(fieldBlob(1091, Buffer.from([
7469
- 0,
7470
- 0,
7471
- 255,
7472
- 255
7473
- ])));
7474
- for (let t = 1151; t < 1157; t++) parts.push(fieldByte(t));
7475
- const buf = Buffer.concat(parts);
7476
- const out = Buffer.from(buf);
7477
- for (let i = 16; i < out.length; i++) out[i] = out[i] ^ xorByte;
7478
- return out;
7479
- }
7480
- /**
7481
- * Gzip-compress with OS byte patched to match the browser runtime (0x03).
7482
- */
7483
- function compressBody(raw, mtime, level = 6) {
7484
- const mt = mtime === null || mtime === void 0 ? Math.floor(Date.now() / 1e3) : mtime;
7485
- const out = Buffer.from(gzipSync(raw, { level }));
7486
- if (out.length >= 10) {
7487
- out.writeUInt32LE(mt >>> 0, 4);
7488
- out[9] = 3;
7489
- }
7490
- return out;
7491
- }
7492
- function cyclicXor(data, key) {
7493
- const out = Buffer.alloc(data.length);
7494
- for (let i = 0; i < data.length; i++) out[i] = data[i] ^ key[i % key.length];
7495
- return out;
7496
- }
7497
- /**
7498
- * Encrypt, wrap, and base64-encode the compressed body into the final x-rap-param.
7499
- */
7500
- function packEnvelope(compressed, options = {}) {
7501
- const gz = Buffer.from(compressed);
7502
- let key;
7503
- if (typeof options.encryptionKey === "string") key = Buffer.from(options.encryptionKey, "ascii");
7504
- else if (options.encryptionKey) key = Buffer.from(options.encryptionKey);
7505
- else key = Buffer.from(RandomGenerator.generateRandomAscii(16), "ascii");
7506
- if (key.length !== 16) throw new Error("encryptionKey must be 16 bytes");
7507
- const salt = options.saltString === null || options.saltString === void 0 ? RandomGenerator.generateRandomAscii([
7508
- 4,
7509
- 5,
7510
- 6
7511
- ][Math.floor(Math.random() * 3)]) : options.saltString;
7512
- const saltBytes = Buffer.from(salt, "ascii");
7513
- if (saltBytes.length < 0 || saltBytes.length > 255) throw new Error("saltString length must fit one byte");
7514
- const cipherBlocks = encryptBlocks(cyclicXor(gz, key));
7515
- const gzLen = Buffer.alloc(4);
7516
- gzLen.writeUInt32BE(gz.length >>> 0, 0);
7517
- const cipherBody = Buffer.concat([cipherBlocks, gzLen]);
7518
- const content = Buffer.concat([
7519
- saltBytes,
7520
- encryptSessionKey(key),
7521
- cipherBody
7522
- ]);
7523
- const contentHash = xxh32(content);
7524
- const encTime = options.processingTime === null || options.processingTime === void 0 ? Math.floor(Math.random() * 181) + 60 : options.processingTime;
7525
- const protocolVersion = options.protocolVersion ?? XRAP_SDK_VERSION;
7526
- const header = Buffer.alloc(36);
7527
- header[0] = 7;
7528
- header[1] = 36;
7529
- header[2] = 1;
7530
- header[3] = saltBytes.length & 255;
7531
- header.writeUInt32BE(1, 4);
7532
- header.writeUInt32BE(20, 8);
7533
- header.writeUInt32BE(cipherBody.length >>> 0, 12);
7534
- header.writeUInt32BE(contentHash >>> 0, 16);
7535
- header.writeUInt32BE(protocolVersion >>> 0, 20);
7536
- header.writeUInt32BE(encTime >>> 0, 24);
7537
- return Buffer.concat([header, content]).toString("base64");
7538
- }
7539
- /**
7540
- * Generate x-rap-param from API path and request payload.
7541
- *
7542
- * @param api - Request API path (e.g. "//edith.xiaohongshu.com/api/sns/web/v1/feed")
7543
- * @param data - Request body as object, JSON string, or raw bytes
7544
- * @param options - Optional deterministic overrides (used for testing)
7545
- * @returns Base64-encoded x-rap-param string
7546
- */
7547
- function xRapParam(api, data, options = {}) {
7548
- return packEnvelope(compressBody(buildBodyStructure(api, data, {
7549
- sessionKey: options.innerKey,
7550
- timestampMs: options.timestampMs,
7551
- nonce: options.bodyRand32,
7552
- obfuscationByte: options.mask,
7553
- interactionTrace: options.tracePayload,
7554
- environmentSnapshot: options.envPayload
7555
- }), options.gzipMtime, options.compresslevel ?? 6), {
7556
- encryptionKey: options.aesKey,
7557
- saltString: options.randomString,
7558
- processingTime: options.bodyEncryTime,
7559
- protocolVersion: options.sdkVersion ?? XRAP_SDK_VERSION
7560
- });
7561
- }
7562
- var methodSchema = _enum(["GET", "POST"], { message: "method must be \"GET\" or \"POST\"" });
7563
- var uriSchema = string$2({ message: "uri must be a string" }).min(1, "uri cannot be empty");
7564
- var a1ValueSchema = string$2({ message: "a1Value must be a string" }).min(1, "a1Value cannot be empty");
7565
- string$2({ message: "xsecAppid must be a string" }).min(1, "xsecAppid cannot be empty");
7566
- record(string$2(), any()).nullable().optional();
7567
- var cookieSchema = union([record(string$2(), any()), string$2()]);
7568
- var signatureParamsSchema = object({
7569
- method: methodSchema,
7570
- uri: uriSchema,
7571
- a1Value: a1ValueSchema
7572
- });
7573
- var getSignatureParamsSchema = object({
7574
- uri: uriSchema,
7575
- a1Value: a1ValueSchema
7576
- });
7577
- var postSignatureParamsSchema = object({
7578
- uri: uriSchema,
7579
- a1Value: a1ValueSchema
7580
- });
7581
- var xsCommonParamsSchema = object({ cookieDict: cookieSchema });
7582
- function validateSignatureParams(method, uri, a1Value) {
7583
- try {
7584
- signatureParamsSchema.parse({
7585
- method,
7586
- uri,
7587
- a1Value
7588
- });
7589
- } catch (error) {
7590
- if (error instanceof ZodError) {
7591
- const firstError = error.issues[0];
7592
- throw new TypeError(firstError.message);
7593
- }
7594
- throw error;
7595
- }
7596
- }
7597
- function validateGetSignatureParams(uri, a1Value) {
7598
- try {
7599
- getSignatureParamsSchema.parse({
7600
- uri,
7601
- a1Value
7602
- });
7603
- } catch (error) {
7604
- if (error instanceof ZodError) {
7605
- const firstError = error.issues[0];
7606
- throw new TypeError(firstError.message);
7607
- }
7608
- throw error;
7609
- }
7610
- }
7611
- function validatePostSignatureParams(uri, a1Value) {
7612
- try {
7613
- postSignatureParamsSchema.parse({
7614
- uri,
7615
- a1Value
7616
- });
7617
- } catch (error) {
7618
- if (error instanceof ZodError) {
7619
- const firstError = error.issues[0];
7620
- throw new TypeError(firstError.message);
7621
- }
7622
- throw error;
7623
- }
7624
- }
7625
- function validateXsCommonParams(cookieDict) {
7626
- try {
7627
- xsCommonParamsSchema.parse({ cookieDict });
7628
- } catch (error) {
7629
- if (error instanceof ZodError) {
7630
- const firstError = error.issues[0];
7631
- throw new TypeError(firstError.message);
7632
- }
7633
- throw error;
7634
- }
7635
- }
7636
- var Xhshow = class {
7637
- config;
7638
- cryptoProcessor;
7639
- randomGenerator;
7640
- /**
7641
- * 创建 Xhshow 实例
7642
- * @param config - 可选的加密配置对象,不传则使用默认配置
7643
- */
7644
- constructor(config) {
7645
- this.config = config || new CryptoConfig();
7646
- this.cryptoProcessor = new CryptoProcessor(this.config);
7647
- this.randomGenerator = new RandomGenerator();
7648
- }
7649
- /**
7650
- * 构建内容字符串(用于 MD5 计算和签名生成)
7651
- * @param method - HTTP 请求方法
7652
- * @param uri - 请求 URI 路径
7653
- * @param payload - 请求参数或请求体
7654
- * @returns 用于签名的内容字符串
7655
- */
7656
- buildContentString(method, uri, payload = null) {
7657
- const normalizedPayload = payload || {};
7658
- if (method.toUpperCase() === "POST") return uri + JSON.stringify(normalizedPayload);
7659
- else {
7660
- if (Object.keys(normalizedPayload).length === 0) return uri;
7661
- return `${uri}?${Object.entries(normalizedPayload).map(([key, value]) => {
7662
- let valStr = "";
7663
- if (Array.isArray(value)) valStr = value.map((v) => String(v)).join(",");
7664
- else valStr = value !== null && value !== void 0 ? String(value) : "";
7665
- return `${key}=${valStr.replace(/=/g, "%3D")}`;
7666
- }).join("&")}`;
7667
- }
7668
- }
7669
- /**
7670
- * 根据内容字符串生成 d 值(MD5 哈希)
7671
- * @param content - 内容字符串
7672
- * @returns MD5 哈希值(十六进制字符串)
7673
- */
7674
- generateDValue(content) {
7675
- return createHash("md5").update(content, "utf8").digest("hex");
7676
- }
7677
- /**
7678
- * 构建签名
7679
- * @param dValue - MD5 哈希值
7680
- * @param a1Value - Cookie 中的 a1 值
7681
- * @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
7682
- * @param stringParam - 字符串参数
7683
- * @param timestamp - 可选的时间戳
7684
- * @param signState - 可选的签名状态(用于会话管理)
7685
- * @returns 编码后的签名字符串
7686
- */
7687
- buildSignature(dValue, mValue, a1Value, xsecAppid = "xhs-pc-web", stringParam = "", timestamp, signState) {
7688
- const payloadArray = this.cryptoProcessor.buildPayloadArray(dValue, mValue, a1Value, xsecAppid, stringParam, timestamp, signState);
7689
- const xorResult = this.cryptoProcessor.bitOps.xorTransformArray(payloadArray);
7690
- return this.cryptoProcessor.b64encoder.encodeX3(xorResult.subarray(0, this.config.PAYLOAD_LENGTH));
7691
- }
7692
- /**
7693
- * 生成请求签名(支持 GET 和 POST)
7694
- * @param method - HTTP 请求方法,'GET' 或 'POST'
7695
- * @param uri - 请求 URI 路径(可以是完整 URL,会自动提取路径部分)
7696
- * @param a1Value - Cookie 中的 a1 值
7697
- * @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
7698
- * @param payload - GET 请求的查询参数或 POST 请求的请求体
7699
- * @param timestamp - 可选的时间戳(秒),不传则使用当前时间
7700
- * @param session - 可选的会话管理器,用于生成更真实的签名
7701
- * @returns x-s 签名字符串
7702
- */
7703
- signXs(method, uri, a1Value, xsecAppid = "xhs-pc-web", payload = null, timestamp, session) {
7704
- validateSignatureParams(method, uri, a1Value);
7705
- uri = extractUri(uri);
7706
- const signatureData = { ...this.config.SIGNATURE_DATA_TEMPLATE };
7707
- const contentString = this.buildContentString(method, uri, payload);
7708
- const dValue = this.generateDValue(contentString);
7709
- const mValue = method === "GET" ? dValue : createHash("md5").update(uri, "utf8").digest("hex");
7710
- const signState = session ? session.getCurrentState(contentString) : void 0;
7711
- signatureData.x3 = this.config.X3_PREFIX + this.buildSignature(dValue, mValue, a1Value, xsecAppid, contentString, timestamp, signState);
7712
- const jsonStr = JSON.stringify(signatureData);
7713
- return this.config.XYS_PREFIX + this.cryptoProcessor.b64encoder.encode(jsonStr);
7714
- }
7715
- /**
7716
- * 生成 XYW_ 格式签名(AES-128-CBC 加密)
7717
- *
7718
- * 数据获取类接口(user_posted、otherinfo 等)自 2026 年 3 月起会以 HTTP 406
7719
- * 拒绝传统 XYS_ 格式,此时需改用 XYW_ 格式。它使用独立于 signXs 的加密路径。
7720
- *
7721
- * @param method - HTTP 请求方法,'GET' 或 'POST'
7722
- * @param uri - 请求 URI 路径(可以是完整 URL)
7723
- * @param a1Value - Cookie 中的 a1 值
7724
- * @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
7725
- * @param payload - GET 请求的查询参数或 POST 请求的请求体
7726
- * @param timestamp - 可选的时间戳(秒),不传则使用当前时间
7727
- * @param _session - 未使用,仅为保持与 signXs 的接口一致
7728
- * @returns XYW_ 格式签名字符串
7729
- */
7730
- signXyw(method, uri, a1Value, xsecAppid = "xhs-pc-web", payload = null, timestamp, _session) {
7731
- validateSignatureParams(method, uri, a1Value);
7732
- uri = extractUri(uri);
7733
- const payloadHex = buildXywPayloadHex({
7734
- fullUri: this.buildContentString(method, uri, payload),
7735
- a1Value,
7736
- timestampMs: String(this.getXT(timestamp)),
7737
- config: this.config
7738
- });
7739
- const xywData = {
7740
- signSvn: this.config.XYW_SIGN_SVN,
7741
- signType: this.config.XYW_SIGN_TYPE,
7742
- appId: xsecAppid,
7743
- signVersion: this.config.XYW_SIGN_VERSION,
7744
- payload: payloadHex
7745
- };
7746
- const xywJson = JSON.stringify(xywData);
7747
- return this.config.XYW_PREFIX + Buffer.from(xywJson, "utf-8").toString("base64");
7748
- }
7749
- /**
7750
- * 生成 x-s-common 签名
7751
- * @param cookieDict - Cookie 字典对象或 Cookie 字符串
7752
- * @returns x-s-common 签名字符串
7753
- */
7754
- signXsCommon(cookieDict) {
7755
- const parsedCookies = this.parseCookies(cookieDict);
7756
- return new XsCommonSigner(this.config).sign(parsedCookies);
7757
- }
7758
- /**
7759
- * 生成 GET 请求签名(便捷方法)
7760
- * @param uri - 请求 URI 路径
7761
- * @param a1Value - Cookie 中的 a1 值
7762
- * @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
7763
- * @param params - 查询参数对象
7764
- * @param timestamp - 可选的时间戳(秒)
7765
- * @param session - 可选的会话管理器
7766
- * @returns x-s 签名字符串
7767
- */
7768
- signXsGet(uri, a1Value, xsecAppid = "xhs-pc-web", params = null, timestamp, session) {
7769
- validateGetSignatureParams(uri, a1Value);
7770
- return this.signXs("GET", uri, a1Value, xsecAppid, params, timestamp, session);
7771
- }
7772
- /**
7773
- * 生成 POST 请求签名(便捷方法)
7774
- * @param uri - 请求 URI 路径
7775
- * @param a1Value - Cookie 中的 a1 值
7776
- * @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
7777
- * @param payload - 请求体对象
7778
- * @param timestamp - 可选的时间戳(秒)
7779
- * @param session - 可选的会话管理器
7780
- * @returns x-s 签名字符串
7781
- */
7782
- signXsPost(uri, a1Value, xsecAppid = "xhs-pc-web", payload = null, timestamp, session) {
7783
- validatePostSignatureParams(uri, a1Value);
7784
- return this.signXs("POST", uri, a1Value, xsecAppid, payload, timestamp, session);
7785
- }
7786
- /**
7787
- * 生成 x-s-common 签名的便捷包装方法
7788
- * @param cookieDict - Cookie 字典对象或 Cookie 字符串
7789
- * @returns x-s-common 签名字符串
7790
- */
7791
- signXsc(cookieDict) {
7792
- validateXsCommonParams(cookieDict);
7793
- return this.signXsCommon(cookieDict);
7794
- }
7795
- /**
7796
- * 解密 x3 签名(Base64 格式)
7797
- * @param x3Signature - x3 签名字符串
7798
- * @returns 解密后的字节数组
7799
- */
7800
- decodeX3(x3Signature) {
7801
- if (x3Signature.startsWith(this.config.X3_PREFIX)) x3Signature = x3Signature.slice(this.config.X3_PREFIX.length);
7802
- const decodedBytes = this.cryptoProcessor.b64encoder.decodeX3(x3Signature);
7803
- return this.cryptoProcessor.bitOps.xorTransformArray(Array.from(decodedBytes));
7804
- }
7805
- /**
7806
- * 解密完整的 XYS 签名
7807
- * @param xsSignature - x-s 签名字符串
7808
- * @returns 解密后的签名数据对象
7809
- * @throws 如果 JSON 解析失败则抛出错误
7810
- */
7811
- decodeXs(xsSignature) {
7812
- if (xsSignature.startsWith(this.config.XYS_PREFIX)) xsSignature = xsSignature.slice(this.config.XYS_PREFIX.length);
7813
- const jsonString = this.cryptoProcessor.b64encoder.decode(xsSignature);
7814
- try {
7815
- return JSON.parse(jsonString);
7816
- } catch (e) {
7817
- throw new Error(`Invalid signature: JSON decode failed - ${e}`);
7818
- }
7819
- }
7820
- /**
7821
- * 构建带查询参数的完整 URL(便捷方法)
7822
- * @param baseUrl - 基础 URL
7823
- * @param params - 可选的查询参数对象
7824
- * @returns 完整的 URL 字符串
7825
- */
7826
- buildUrl(baseUrl, params) {
7827
- return buildUrl(baseUrl, params);
7828
- }
7829
- /**
7830
- * 构建 POST 请求的 JSON 请求体字符串(便捷方法)
7831
- * @param payload - 请求体对象
7832
- * @returns JSON 字符串
7833
- */
7834
- buildJsonBody(payload) {
7835
- return JSON.stringify(payload);
7836
- }
7837
- /**
7838
- * 生成 HTTP 请求头中的 x-b3-traceid
7839
- * @returns x-b3-traceid 字符串
7840
- */
7841
- getB3TraceId() {
7842
- return this.randomGenerator.generateB3TraceId();
7843
- }
7844
- /**
7845
- * 生成 HTTP 请求头中的 x-xray-traceid
7846
- * @param timestamp - 可选的时间戳(毫秒)
7847
- * @param seq - 可选的序列号
7848
- * @returns x-xray-traceid 字符串
7849
- */
7850
- getXrayTraceId(timestamp, seq) {
7851
- return this.randomGenerator.generateXrayTraceId(timestamp, seq);
7852
- }
7853
- /**
7854
- * 生成搜索接口所需的 search_id
7855
- * @returns Base36 编码的搜索 ID
7856
- */
7857
- getSearchId() {
7858
- return this.randomGenerator.generateSearchId();
7859
- }
7860
- /**
7861
- * 生成搜索接口所需的 request_id
7862
- * @returns 格式为 "{random}-{timestamp_ms}" 的字符串
7863
- */
7864
- getSearchRequestId() {
7865
- return this.randomGenerator.generateSearchRequestId();
7866
- }
7867
- /**
7868
- * 生成 a1 Cookie 值
7869
- * @returns 52 字符的 a1 值
7870
- */
7871
- static generateA1() {
7872
- return RandomGenerator.generateA1();
7873
- }
7874
- /**
7875
- * 根据 a1 值生成 web_id
7876
- * @param a1 - a1 Cookie 值
7877
- * @returns 32 字符的十六进制 web_id
7878
- */
7879
- static generateWebId(a1) {
7880
- return RandomGenerator.generateWebId(a1);
7881
- }
7882
- /**
7883
- * 生成 x-t 请求头值(Unix 时间戳,毫秒)
7884
- * @param timestamp - 可选的时间戳(秒),不传则使用当前时间
7885
- * @returns Unix 时间戳(毫秒)
7886
- */
7887
- getXT(timestamp) {
7888
- if (timestamp === void 0) timestamp = Date.now() / 1e3;
7889
- return Math.floor(timestamp * 1e3);
7890
- }
7891
- /**
7892
- * 将 Cookie 解析为字典格式
7893
- * @param cookies - Cookie 字典对象或 Cookie 字符串
7894
- * @returns Cookie 字典对象
7895
- */
7896
- parseCookies(cookies) {
7897
- if (typeof cookies === "string") {
7898
- const result = {};
7899
- const pairs = cookies.split(";");
7900
- for (const pair of pairs) {
7901
- const trimmed = pair.trim();
7902
- const eqIndex = trimmed.indexOf("=");
7903
- if (eqIndex > 0) {
7904
- const key = trimmed.substring(0, eqIndex).trim();
7905
- result[key] = trimmed.substring(eqIndex + 1).trim();
7906
- }
7907
- }
7908
- return result;
7909
- }
7910
- return cookies;
7911
- }
7912
- /**
7913
- * 生成包含签名和追踪 ID 的完整请求头
7914
- * @param method - HTTP 请求方法,'GET' 或 'POST'
7915
- * @param uri - 请求 URI 路径
7916
- * @param cookies - Cookie 字典对象或 Cookie 字符串(必须包含 a1)
7917
- * @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
7918
- * @param params - GET 请求的查询参数(POST 请求时不可用)
7919
- * @param payload - POST 请求的请求体(GET 请求时不可用)
7920
- * @param timestamp - 可选的时间戳(秒)
7921
- * @param session - 可选的会话管理器
7922
- * @returns 包含 x-s、x-s-common、x-t、x-b3-traceid、x-xray-traceid 的请求头对象
7923
- * @throws 如果 GET 请求使用 payload 或 POST 请求使用 params 则抛出错误
7924
- * @throws 如果 cookies 中缺少 a1 则抛出错误
7925
- */
7926
- signHeaders(method, uri, cookies, xsecAppid = "xhs-pc-web", params, payload, timestamp, session, signFormat = "xys", userId, xRap = false) {
7927
- if (timestamp === void 0) timestamp = Date.now() / 1e3;
7928
- const methodUpper = method.toUpperCase();
7929
- let requestData;
7930
- if (methodUpper === "GET") {
7931
- if (payload !== void 0 && payload !== null) throw new Error("GET requests must use 'params', not 'payload'");
7932
- requestData = params ?? null;
7933
- } else if (methodUpper === "POST") {
7934
- if (params !== void 0 && params !== null) throw new Error("POST requests must use 'payload', not 'params'");
7935
- requestData = payload ?? null;
7936
- } else throw new Error(`Unsupported method: ${method}`);
7937
- if (signFormat !== "xys" && signFormat !== "xyw") throw new Error(`Unsupported signFormat=${JSON.stringify(signFormat)}; expected 'xys' or 'xyw'`);
7938
- const cookieDict = this.parseCookies(cookies);
7939
- const a1Value = cookieDict.a1;
7940
- if (!a1Value) throw new Error("Missing 'a1' in cookies");
7941
- const xS = signFormat === "xyw" ? this.signXyw(methodUpper, uri, a1Value, xsecAppid, requestData, timestamp) : this.signXs(methodUpper, uri, a1Value, xsecAppid, requestData, timestamp, session);
7942
- const xSCommon = this.signXsCommon(cookieDict);
7943
- const xT = this.getXT(timestamp);
7944
- const xB3Traceid = this.getB3TraceId();
7945
- const xXrayTraceid = this.getXrayTraceId(Math.floor(timestamp * 1e3));
7946
- const headers = {
7947
- "x-s": xS,
7948
- "x-s-common": xSCommon,
7949
- "x-t": String(xT),
7950
- "x-b3-traceid": xB3Traceid,
7951
- "x-xray-traceid": xXrayTraceid,
7952
- "x-mns": "unload",
7953
- "xy-direction": String(getShardingKey(userId))
7954
- };
7955
- if (xRap) headers["x-rap-param"] = xRapParam("//edith.xiaohongshu.com" + extractUri(uri), requestData || {});
7956
- return headers;
7957
- }
7958
- /**
7959
- * 生成 GET 请求的完整请求头(便捷方法)
7960
- * @param uri - 请求 URI 路径
7961
- * @param cookies - Cookie 字典对象或 Cookie 字符串(必须包含 a1)
7962
- * @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
7963
- * @param params - 查询参数对象
7964
- * @param timestamp - 可选的时间戳(秒)
7965
- * @param session - 可选的会话管理器
7966
- * @returns 包含签名和追踪 ID 的请求头对象
7967
- */
7968
- signHeadersGet(uri, cookies, xsecAppid = "xhs-pc-web", params, timestamp, session, signFormat = "xys", userId, xRap = false) {
7969
- return this.signHeaders("GET", uri, cookies, xsecAppid, params, void 0, timestamp, session, signFormat, userId, xRap);
7970
- }
7971
- /**
7972
- * 生成 POST 请求的完整请求头(便捷方法)
7973
- * @param uri - 请求 URI 路径
7974
- * @param cookies - Cookie 字典对象或 Cookie 字符串(必须包含 a1)
7975
- * @param xsecAppid - 应用 ID,默认为 'xhs-pc-web'
7976
- * @param payload - 请求体对象
7977
- * @param timestamp - 可选的时间戳(秒)
7978
- * @param session - 可选的会话管理器
7979
- * @returns 包含签名和追踪 ID 的请求头对象
7980
- */
7981
- signHeadersPost(uri, cookies, xsecAppid = "xhs-pc-web", payload, timestamp, session, signFormat = "xys", userId, xRap = false) {
7982
- return this.signHeaders("POST", uri, cookies, xsecAppid, void 0, payload, timestamp, session, signFormat, userId, xRap);
7983
- }
7984
- };
7985
- //#endregion
7986
5834
  //#region ../../node_modules/.pnpm/protobufjs@8.8.0/node_modules/protobufjs/src/util/aspromise.js
7987
5835
  var require_aspromise = /* @__PURE__ */ __commonJSMin$1(((exports, module) => {
7988
5836
  module.exports = asPromise;
@@ -56992,7 +54840,7 @@ function createLucideIcon(iconDataOrName, iconNode = [], aliases = []) {
56992
54840
  * This source code is licensed under the ISC license.
56993
54841
  * See the LICENSE file in the root directory of this source tree.
56994
54842
  */
56995
- var __iconData$93 = {
54843
+ var __iconData$95 = {
56996
54844
  name: "arrow-right",
56997
54845
  size: 24,
56998
54846
  node: [["path", {
@@ -57003,8 +54851,8 @@ var __iconData$93 = {
57003
54851
  key: "xquz4c"
57004
54852
  }]]
57005
54853
  };
57006
- __iconData$93.node;
57007
- var ArrowRight = createLucideIcon(__iconData$93);
54854
+ __iconData$95.node;
54855
+ var ArrowRight = createLucideIcon(__iconData$95);
57008
54856
  //#endregion
57009
54857
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/bell-ring.mjs
57010
54858
  /**
@@ -57013,7 +54861,7 @@ var ArrowRight = createLucideIcon(__iconData$93);
57013
54861
  * This source code is licensed under the ISC license.
57014
54862
  * See the LICENSE file in the root directory of this source tree.
57015
54863
  */
57016
- var __iconData$92 = {
54864
+ var __iconData$94 = {
57017
54865
  name: "bell-ring",
57018
54866
  size: 24,
57019
54867
  node: [
@@ -57035,8 +54883,8 @@ var __iconData$92 = {
57035
54883
  }]
57036
54884
  ]
57037
54885
  };
57038
- __iconData$92.node;
57039
- var BellRing = createLucideIcon(__iconData$92);
54886
+ __iconData$94.node;
54887
+ var BellRing = createLucideIcon(__iconData$94);
57040
54888
  //#endregion
57041
54889
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/book-open-text.mjs
57042
54890
  /**
@@ -57045,7 +54893,7 @@ var BellRing = createLucideIcon(__iconData$92);
57045
54893
  * This source code is licensed under the ISC license.
57046
54894
  * See the LICENSE file in the root directory of this source tree.
57047
54895
  */
57048
- var __iconData$91 = {
54896
+ var __iconData$93 = {
57049
54897
  name: "book-open-text",
57050
54898
  size: 24,
57051
54899
  node: [
@@ -57075,8 +54923,8 @@ var __iconData$91 = {
57075
54923
  }]
57076
54924
  ]
57077
54925
  };
57078
- __iconData$91.node;
57079
- var BookOpenText = createLucideIcon(__iconData$91);
54926
+ __iconData$93.node;
54927
+ var BookOpenText = createLucideIcon(__iconData$93);
57080
54928
  //#endregion
57081
54929
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/bookmark.mjs
57082
54930
  /**
@@ -57085,7 +54933,7 @@ var BookOpenText = createLucideIcon(__iconData$91);
57085
54933
  * This source code is licensed under the ISC license.
57086
54934
  * See the LICENSE file in the root directory of this source tree.
57087
54935
  */
57088
- var __iconData$90 = {
54936
+ var __iconData$92 = {
57089
54937
  name: "bookmark",
57090
54938
  size: 24,
57091
54939
  node: [["path", {
@@ -57093,8 +54941,8 @@ var __iconData$90 = {
57093
54941
  key: "oz39mx"
57094
54942
  }]]
57095
54943
  };
57096
- __iconData$90.node;
57097
- var Bookmark = createLucideIcon(__iconData$90);
54944
+ __iconData$92.node;
54945
+ var Bookmark = createLucideIcon(__iconData$92);
57098
54946
  //#endregion
57099
54947
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/bot.mjs
57100
54948
  /**
@@ -57103,7 +54951,7 @@ var Bookmark = createLucideIcon(__iconData$90);
57103
54951
  * This source code is licensed under the ISC license.
57104
54952
  * See the LICENSE file in the root directory of this source tree.
57105
54953
  */
57106
- var __iconData$89 = {
54954
+ var __iconData$91 = {
57107
54955
  name: "bot",
57108
54956
  size: 24,
57109
54957
  node: [
@@ -57137,8 +54985,8 @@ var __iconData$89 = {
57137
54985
  }]
57138
54986
  ]
57139
54987
  };
57140
- __iconData$89.node;
57141
- var Bot = createLucideIcon(__iconData$89);
54988
+ __iconData$91.node;
54989
+ var Bot = createLucideIcon(__iconData$91);
57142
54990
  //#endregion
57143
54991
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/box.mjs
57144
54992
  /**
@@ -57147,7 +54995,7 @@ var Bot = createLucideIcon(__iconData$89);
57147
54995
  * This source code is licensed under the ISC license.
57148
54996
  * See the LICENSE file in the root directory of this source tree.
57149
54997
  */
57150
- var __iconData$88 = {
54998
+ var __iconData$90 = {
57151
54999
  name: "box",
57152
55000
  size: 24,
57153
55001
  node: [
@@ -57165,8 +55013,8 @@ var __iconData$88 = {
57165
55013
  }]
57166
55014
  ]
57167
55015
  };
57168
- __iconData$88.node;
57169
- var Box = createLucideIcon(__iconData$88);
55016
+ __iconData$90.node;
55017
+ var Box = createLucideIcon(__iconData$90);
57170
55018
  //#endregion
57171
55019
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/braces.mjs
57172
55020
  /**
@@ -57175,7 +55023,7 @@ var Box = createLucideIcon(__iconData$88);
57175
55023
  * This source code is licensed under the ISC license.
57176
55024
  * See the LICENSE file in the root directory of this source tree.
57177
55025
  */
57178
- var __iconData$87 = {
55026
+ var __iconData$89 = {
57179
55027
  name: "braces",
57180
55028
  size: 24,
57181
55029
  node: [["path", {
@@ -57187,8 +55035,8 @@ var __iconData$87 = {
57187
55035
  }]],
57188
55036
  aliases: ["curly-braces"]
57189
55037
  };
57190
- __iconData$87.node;
57191
- var Braces = createLucideIcon(__iconData$87);
55038
+ __iconData$89.node;
55039
+ var Braces = createLucideIcon(__iconData$89);
57192
55040
  //#endregion
57193
55041
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/calendar.mjs
57194
55042
  /**
@@ -57197,7 +55045,7 @@ var Braces = createLucideIcon(__iconData$87);
57197
55045
  * This source code is licensed under the ISC license.
57198
55046
  * See the LICENSE file in the root directory of this source tree.
57199
55047
  */
57200
- var __iconData$86 = {
55048
+ var __iconData$88 = {
57201
55049
  name: "calendar",
57202
55050
  size: 24,
57203
55051
  node: [
@@ -57223,8 +55071,8 @@ var __iconData$86 = {
57223
55071
  }]
57224
55072
  ]
57225
55073
  };
57226
- __iconData$86.node;
57227
- var Calendar = createLucideIcon(__iconData$86);
55074
+ __iconData$88.node;
55075
+ var Calendar = createLucideIcon(__iconData$88);
57228
55076
  //#endregion
57229
55077
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/camera.mjs
57230
55078
  /**
@@ -57233,7 +55081,7 @@ var Calendar = createLucideIcon(__iconData$86);
57233
55081
  * This source code is licensed under the ISC license.
57234
55082
  * See the LICENSE file in the root directory of this source tree.
57235
55083
  */
57236
- var __iconData$85 = {
55084
+ var __iconData$87 = {
57237
55085
  name: "camera",
57238
55086
  size: 24,
57239
55087
  node: [["path", {
@@ -57246,8 +55094,8 @@ var __iconData$85 = {
57246
55094
  key: "1vg3eu"
57247
55095
  }]]
57248
55096
  };
57249
- __iconData$85.node;
57250
- var Camera = createLucideIcon(__iconData$85);
55097
+ __iconData$87.node;
55098
+ var Camera = createLucideIcon(__iconData$87);
57251
55099
  //#endregion
57252
55100
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/chart-column.mjs
57253
55101
  /**
@@ -57256,7 +55104,7 @@ var Camera = createLucideIcon(__iconData$85);
57256
55104
  * This source code is licensed under the ISC license.
57257
55105
  * See the LICENSE file in the root directory of this source tree.
57258
55106
  */
57259
- var __iconData$84 = {
55107
+ var __iconData$86 = {
57260
55108
  name: "chart-column",
57261
55109
  size: 24,
57262
55110
  node: [
@@ -57279,8 +55127,8 @@ var __iconData$84 = {
57279
55127
  ],
57280
55128
  aliases: ["bar-chart-3"]
57281
55129
  };
57282
- __iconData$84.node;
57283
- var ChartColumn = createLucideIcon(__iconData$84);
55130
+ __iconData$86.node;
55131
+ var ChartColumn = createLucideIcon(__iconData$86);
57284
55132
  //#endregion
57285
55133
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/check.mjs
57286
55134
  /**
@@ -57289,7 +55137,7 @@ var ChartColumn = createLucideIcon(__iconData$84);
57289
55137
  * This source code is licensed under the ISC license.
57290
55138
  * See the LICENSE file in the root directory of this source tree.
57291
55139
  */
57292
- var __iconData$83 = {
55140
+ var __iconData$85 = {
57293
55141
  name: "check",
57294
55142
  size: 24,
57295
55143
  node: [["path", {
@@ -57297,8 +55145,8 @@ var __iconData$83 = {
57297
55145
  key: "1gmf2c"
57298
55146
  }]]
57299
55147
  };
57300
- __iconData$83.node;
57301
- var Check = createLucideIcon(__iconData$83);
55148
+ __iconData$85.node;
55149
+ var Check = createLucideIcon(__iconData$85);
57302
55150
  //#endregion
57303
55151
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-alert.mjs
57304
55152
  /**
@@ -57307,7 +55155,7 @@ var Check = createLucideIcon(__iconData$83);
57307
55155
  * This source code is licensed under the ISC license.
57308
55156
  * See the LICENSE file in the root directory of this source tree.
57309
55157
  */
57310
- var __iconData$82 = {
55158
+ var __iconData$84 = {
57311
55159
  name: "circle-alert",
57312
55160
  size: 24,
57313
55161
  node: [
@@ -57334,8 +55182,8 @@ var __iconData$82 = {
57334
55182
  ],
57335
55183
  aliases: ["alert-circle"]
57336
55184
  };
57337
- __iconData$82.node;
57338
- var CircleAlert = createLucideIcon(__iconData$82);
55185
+ __iconData$84.node;
55186
+ var CircleAlert = createLucideIcon(__iconData$84);
57339
55187
  //#endregion
57340
55188
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-check-big.mjs
57341
55189
  /**
@@ -57344,7 +55192,7 @@ var CircleAlert = createLucideIcon(__iconData$82);
57344
55192
  * This source code is licensed under the ISC license.
57345
55193
  * See the LICENSE file in the root directory of this source tree.
57346
55194
  */
57347
- var __iconData$81 = {
55195
+ var __iconData$83 = {
57348
55196
  name: "circle-check-big",
57349
55197
  size: 24,
57350
55198
  node: [["path", {
@@ -57356,8 +55204,8 @@ var __iconData$81 = {
57356
55204
  }]],
57357
55205
  aliases: ["check-circle"]
57358
55206
  };
57359
- __iconData$81.node;
57360
- var CircleCheckBig = createLucideIcon(__iconData$81);
55207
+ __iconData$83.node;
55208
+ var CircleCheckBig = createLucideIcon(__iconData$83);
57361
55209
  //#endregion
57362
55210
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-check.mjs
57363
55211
  /**
@@ -57366,7 +55214,7 @@ var CircleCheckBig = createLucideIcon(__iconData$81);
57366
55214
  * This source code is licensed under the ISC license.
57367
55215
  * See the LICENSE file in the root directory of this source tree.
57368
55216
  */
57369
- var __iconData$80 = {
55217
+ var __iconData$82 = {
57370
55218
  name: "circle-check",
57371
55219
  size: 24,
57372
55220
  node: [["circle", {
@@ -57380,8 +55228,8 @@ var __iconData$80 = {
57380
55228
  }]],
57381
55229
  aliases: ["check-circle-2"]
57382
55230
  };
57383
- __iconData$80.node;
57384
- var CircleCheck = createLucideIcon(__iconData$80);
55231
+ __iconData$82.node;
55232
+ var CircleCheck = createLucideIcon(__iconData$82);
57385
55233
  //#endregion
57386
55234
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-dashed.mjs
57387
55235
  /**
@@ -57390,7 +55238,7 @@ var CircleCheck = createLucideIcon(__iconData$80);
57390
55238
  * This source code is licensed under the ISC license.
57391
55239
  * See the LICENSE file in the root directory of this source tree.
57392
55240
  */
57393
- var __iconData$79 = {
55241
+ var __iconData$81 = {
57394
55242
  name: "circle-dashed",
57395
55243
  size: 24,
57396
55244
  node: [
@@ -57428,8 +55276,8 @@ var __iconData$79 = {
57428
55276
  }]
57429
55277
  ]
57430
55278
  };
57431
- __iconData$79.node;
57432
- var CircleDashed = createLucideIcon(__iconData$79);
55279
+ __iconData$81.node;
55280
+ var CircleDashed = createLucideIcon(__iconData$81);
57433
55281
  //#endregion
57434
55282
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-ellipsis.mjs
57435
55283
  /**
@@ -57438,7 +55286,7 @@ var CircleDashed = createLucideIcon(__iconData$79);
57438
55286
  * This source code is licensed under the ISC license.
57439
55287
  * See the LICENSE file in the root directory of this source tree.
57440
55288
  */
57441
- var __iconData$78 = {
55289
+ var __iconData$80 = {
57442
55290
  name: "circle-ellipsis",
57443
55291
  size: 24,
57444
55292
  node: [
@@ -57462,8 +55310,8 @@ var __iconData$78 = {
57462
55310
  }]
57463
55311
  ]
57464
55312
  };
57465
- __iconData$78.node;
57466
- var CircleEllipsis = createLucideIcon(__iconData$78);
55313
+ __iconData$80.node;
55314
+ var CircleEllipsis = createLucideIcon(__iconData$80);
57467
55315
  //#endregion
57468
55316
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-fading-arrow-up.mjs
57469
55317
  /**
@@ -57472,7 +55320,7 @@ var CircleEllipsis = createLucideIcon(__iconData$78);
57472
55320
  * This source code is licensed under the ISC license.
57473
55321
  * See the LICENSE file in the root directory of this source tree.
57474
55322
  */
57475
- var __iconData$77 = {
55323
+ var __iconData$79 = {
57476
55324
  name: "circle-fading-arrow-up",
57477
55325
  size: 24,
57478
55326
  node: [
@@ -57506,8 +55354,8 @@ var __iconData$77 = {
57506
55354
  }]
57507
55355
  ]
57508
55356
  };
57509
- __iconData$77.node;
57510
- var CircleFadingArrowUp = createLucideIcon(__iconData$77);
55357
+ __iconData$79.node;
55358
+ var CircleFadingArrowUp = createLucideIcon(__iconData$79);
57511
55359
  //#endregion
57512
55360
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/circle-question-mark.mjs
57513
55361
  /**
@@ -57516,7 +55364,7 @@ var CircleFadingArrowUp = createLucideIcon(__iconData$77);
57516
55364
  * This source code is licensed under the ISC license.
57517
55365
  * See the LICENSE file in the root directory of this source tree.
57518
55366
  */
57519
- var __iconData$76 = {
55367
+ var __iconData$78 = {
57520
55368
  name: "circle-question-mark",
57521
55369
  size: 24,
57522
55370
  node: [
@@ -57537,8 +55385,8 @@ var __iconData$76 = {
57537
55385
  ],
57538
55386
  aliases: ["help-circle", "circle-help"]
57539
55387
  };
57540
- __iconData$76.node;
57541
- var CircleQuestionMark = createLucideIcon(__iconData$76);
55388
+ __iconData$78.node;
55389
+ var CircleQuestionMark = createLucideIcon(__iconData$78);
57542
55390
  //#endregion
57543
55391
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/clapperboard.mjs
57544
55392
  /**
@@ -57547,7 +55395,7 @@ var CircleQuestionMark = createLucideIcon(__iconData$76);
57547
55395
  * This source code is licensed under the ISC license.
57548
55396
  * See the LICENSE file in the root directory of this source tree.
57549
55397
  */
57550
- var __iconData$75 = {
55398
+ var __iconData$77 = {
57551
55399
  name: "clapperboard",
57552
55400
  size: 24,
57553
55401
  node: [
@@ -57569,8 +55417,8 @@ var __iconData$75 = {
57569
55417
  }]
57570
55418
  ]
57571
55419
  };
57572
- __iconData$75.node;
57573
- var Clapperboard = createLucideIcon(__iconData$75);
55420
+ __iconData$77.node;
55421
+ var Clapperboard = createLucideIcon(__iconData$77);
57574
55422
  //#endregion
57575
55423
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/clock-3.mjs
57576
55424
  /**
@@ -57579,7 +55427,7 @@ var Clapperboard = createLucideIcon(__iconData$75);
57579
55427
  * This source code is licensed under the ISC license.
57580
55428
  * See the LICENSE file in the root directory of this source tree.
57581
55429
  */
57582
- var __iconData$74 = {
55430
+ var __iconData$76 = {
57583
55431
  name: "clock-3",
57584
55432
  size: 24,
57585
55433
  node: [["circle", {
@@ -57592,8 +55440,8 @@ var __iconData$74 = {
57592
55440
  key: "135r8i"
57593
55441
  }]]
57594
55442
  };
57595
- __iconData$74.node;
57596
- var Clock3 = createLucideIcon(__iconData$74);
55443
+ __iconData$76.node;
55444
+ var Clock3 = createLucideIcon(__iconData$76);
57597
55445
  //#endregion
57598
55446
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/clock.mjs
57599
55447
  /**
@@ -57602,7 +55450,7 @@ var Clock3 = createLucideIcon(__iconData$74);
57602
55450
  * This source code is licensed under the ISC license.
57603
55451
  * See the LICENSE file in the root directory of this source tree.
57604
55452
  */
57605
- var __iconData$73 = {
55453
+ var __iconData$75 = {
57606
55454
  name: "clock",
57607
55455
  size: 24,
57608
55456
  node: [["circle", {
@@ -57615,8 +55463,8 @@ var __iconData$73 = {
57615
55463
  key: "mmk7yg"
57616
55464
  }]]
57617
55465
  };
57618
- __iconData$73.node;
57619
- var Clock = createLucideIcon(__iconData$73);
55466
+ __iconData$75.node;
55467
+ var Clock = createLucideIcon(__iconData$75);
57620
55468
  //#endregion
57621
55469
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/code.mjs
57622
55470
  /**
@@ -57625,7 +55473,7 @@ var Clock = createLucideIcon(__iconData$73);
57625
55473
  * This source code is licensed under the ISC license.
57626
55474
  * See the LICENSE file in the root directory of this source tree.
57627
55475
  */
57628
- var __iconData$72 = {
55476
+ var __iconData$74 = {
57629
55477
  name: "code",
57630
55478
  size: 24,
57631
55479
  node: [["path", {
@@ -57636,8 +55484,8 @@ var __iconData$72 = {
57636
55484
  key: "ppft3o"
57637
55485
  }]]
57638
55486
  };
57639
- __iconData$72.node;
57640
- var Code = createLucideIcon(__iconData$72);
55487
+ __iconData$74.node;
55488
+ var Code = createLucideIcon(__iconData$74);
57641
55489
  //#endregion
57642
55490
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/copy.mjs
57643
55491
  /**
@@ -57646,7 +55494,7 @@ var Code = createLucideIcon(__iconData$72);
57646
55494
  * This source code is licensed under the ISC license.
57647
55495
  * See the LICENSE file in the root directory of this source tree.
57648
55496
  */
57649
- var __iconData$71 = {
55497
+ var __iconData$73 = {
57650
55498
  name: "copy",
57651
55499
  size: 24,
57652
55500
  node: [["rect", {
@@ -57662,8 +55510,8 @@ var __iconData$71 = {
57662
55510
  key: "zix9uf"
57663
55511
  }]]
57664
55512
  };
57665
- __iconData$71.node;
57666
- var Copy = createLucideIcon(__iconData$71);
55513
+ __iconData$73.node;
55514
+ var Copy = createLucideIcon(__iconData$73);
57667
55515
  //#endregion
57668
55516
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/corner-down-left.mjs
57669
55517
  /**
@@ -57672,7 +55520,7 @@ var Copy = createLucideIcon(__iconData$71);
57672
55520
  * This source code is licensed under the ISC license.
57673
55521
  * See the LICENSE file in the root directory of this source tree.
57674
55522
  */
57675
- var __iconData$70 = {
55523
+ var __iconData$72 = {
57676
55524
  name: "corner-down-left",
57677
55525
  size: 24,
57678
55526
  node: [["path", {
@@ -57683,8 +55531,8 @@ var __iconData$70 = {
57683
55531
  key: "1kshq7"
57684
55532
  }]]
57685
55533
  };
57686
- __iconData$70.node;
57687
- var CornerDownLeft = createLucideIcon(__iconData$70);
55534
+ __iconData$72.node;
55535
+ var CornerDownLeft = createLucideIcon(__iconData$72);
57688
55536
  //#endregion
57689
55537
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/cpu.mjs
57690
55538
  /**
@@ -57693,7 +55541,7 @@ var CornerDownLeft = createLucideIcon(__iconData$70);
57693
55541
  * This source code is licensed under the ISC license.
57694
55542
  * See the LICENSE file in the root directory of this source tree.
57695
55543
  */
57696
- var __iconData$69 = {
55544
+ var __iconData$71 = {
57697
55545
  name: "cpu",
57698
55546
  size: 24,
57699
55547
  node: [
@@ -57763,8 +55611,8 @@ var __iconData$69 = {
57763
55611
  }]
57764
55612
  ]
57765
55613
  };
57766
- __iconData$69.node;
57767
- var Cpu = createLucideIcon(__iconData$69);
55614
+ __iconData$71.node;
55615
+ var Cpu = createLucideIcon(__iconData$71);
57768
55616
  //#endregion
57769
55617
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/crown.mjs
57770
55618
  /**
@@ -57773,7 +55621,7 @@ var Cpu = createLucideIcon(__iconData$69);
57773
55621
  * This source code is licensed under the ISC license.
57774
55622
  * See the LICENSE file in the root directory of this source tree.
57775
55623
  */
57776
- var __iconData$68 = {
55624
+ var __iconData$70 = {
57777
55625
  name: "crown",
57778
55626
  size: 24,
57779
55627
  node: [["path", {
@@ -57784,8 +55632,8 @@ var __iconData$68 = {
57784
55632
  key: "11awu3"
57785
55633
  }]]
57786
55634
  };
57787
- __iconData$68.node;
57788
- var Crown = createLucideIcon(__iconData$68);
55635
+ __iconData$70.node;
55636
+ var Crown = createLucideIcon(__iconData$70);
57789
55637
  //#endregion
57790
55638
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/download.mjs
57791
55639
  /**
@@ -57794,7 +55642,7 @@ var Crown = createLucideIcon(__iconData$68);
57794
55642
  * This source code is licensed under the ISC license.
57795
55643
  * See the LICENSE file in the root directory of this source tree.
57796
55644
  */
57797
- var __iconData$67 = {
55645
+ var __iconData$69 = {
57798
55646
  name: "download",
57799
55647
  size: 24,
57800
55648
  node: [
@@ -57812,8 +55660,8 @@ var __iconData$67 = {
57812
55660
  }]
57813
55661
  ]
57814
55662
  };
57815
- __iconData$67.node;
57816
- var Download = createLucideIcon(__iconData$67);
55663
+ __iconData$69.node;
55664
+ var Download = createLucideIcon(__iconData$69);
57817
55665
  //#endregion
57818
55666
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/external-link.mjs
57819
55667
  /**
@@ -57822,7 +55670,7 @@ var Download = createLucideIcon(__iconData$67);
57822
55670
  * This source code is licensed under the ISC license.
57823
55671
  * See the LICENSE file in the root directory of this source tree.
57824
55672
  */
57825
- var __iconData$66 = {
55673
+ var __iconData$68 = {
57826
55674
  name: "external-link",
57827
55675
  size: 24,
57828
55676
  node: [
@@ -57840,8 +55688,8 @@ var __iconData$66 = {
57840
55688
  }]
57841
55689
  ]
57842
55690
  };
57843
- __iconData$66.node;
57844
- var ExternalLink = createLucideIcon(__iconData$66);
55691
+ __iconData$68.node;
55692
+ var ExternalLink = createLucideIcon(__iconData$68);
57845
55693
  //#endregion
57846
55694
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/eye-off.mjs
57847
55695
  /**
@@ -57850,7 +55698,7 @@ var ExternalLink = createLucideIcon(__iconData$66);
57850
55698
  * This source code is licensed under the ISC license.
57851
55699
  * See the LICENSE file in the root directory of this source tree.
57852
55700
  */
57853
- var __iconData$65 = {
55701
+ var __iconData$67 = {
57854
55702
  name: "eye-off",
57855
55703
  size: 24,
57856
55704
  node: [
@@ -57872,8 +55720,8 @@ var __iconData$65 = {
57872
55720
  }]
57873
55721
  ]
57874
55722
  };
57875
- __iconData$65.node;
57876
- var EyeOff = createLucideIcon(__iconData$65);
55723
+ __iconData$67.node;
55724
+ var EyeOff = createLucideIcon(__iconData$67);
57877
55725
  //#endregion
57878
55726
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/eye.mjs
57879
55727
  /**
@@ -57882,7 +55730,7 @@ var EyeOff = createLucideIcon(__iconData$65);
57882
55730
  * This source code is licensed under the ISC license.
57883
55731
  * See the LICENSE file in the root directory of this source tree.
57884
55732
  */
57885
- var __iconData$64 = {
55733
+ var __iconData$66 = {
57886
55734
  name: "eye",
57887
55735
  size: 24,
57888
55736
  node: [["path", {
@@ -57895,8 +55743,8 @@ var __iconData$64 = {
57895
55743
  key: "1v7zrd"
57896
55744
  }]]
57897
55745
  };
57898
- __iconData$64.node;
57899
- var Eye = createLucideIcon(__iconData$64);
55746
+ __iconData$66.node;
55747
+ var Eye = createLucideIcon(__iconData$66);
57900
55748
  //#endregion
57901
55749
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-exclamation-point.mjs
57902
55750
  /**
@@ -57905,7 +55753,7 @@ var Eye = createLucideIcon(__iconData$64);
57905
55753
  * This source code is licensed under the ISC license.
57906
55754
  * See the LICENSE file in the root directory of this source tree.
57907
55755
  */
57908
- var __iconData$63 = {
55756
+ var __iconData$65 = {
57909
55757
  name: "file-exclamation-point",
57910
55758
  size: 24,
57911
55759
  node: [
@@ -57924,8 +55772,8 @@ var __iconData$63 = {
57924
55772
  ],
57925
55773
  aliases: ["file-warning"]
57926
55774
  };
57927
- __iconData$63.node;
57928
- var FileExclamationPoint = createLucideIcon(__iconData$63);
55775
+ __iconData$65.node;
55776
+ var FileExclamationPoint = createLucideIcon(__iconData$65);
57929
55777
  //#endregion
57930
55778
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-play.mjs
57931
55779
  /**
@@ -57934,7 +55782,7 @@ var FileExclamationPoint = createLucideIcon(__iconData$63);
57934
55782
  * This source code is licensed under the ISC license.
57935
55783
  * See the LICENSE file in the root directory of this source tree.
57936
55784
  */
57937
- var __iconData$62 = {
55785
+ var __iconData$64 = {
57938
55786
  name: "file-play",
57939
55787
  size: 24,
57940
55788
  node: [
@@ -57953,8 +55801,8 @@ var __iconData$62 = {
57953
55801
  ],
57954
55802
  aliases: ["file-video"]
57955
55803
  };
57956
- __iconData$62.node;
57957
- var FilePlay = createLucideIcon(__iconData$62);
55804
+ __iconData$64.node;
55805
+ var FilePlay = createLucideIcon(__iconData$64);
57958
55806
  //#endregion
57959
55807
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-text.mjs
57960
55808
  /**
@@ -57963,7 +55811,7 @@ var FilePlay = createLucideIcon(__iconData$62);
57963
55811
  * This source code is licensed under the ISC license.
57964
55812
  * See the LICENSE file in the root directory of this source tree.
57965
55813
  */
57966
- var __iconData$61 = {
55814
+ var __iconData$63 = {
57967
55815
  name: "file-text",
57968
55816
  size: 24,
57969
55817
  node: [
@@ -57989,8 +55837,8 @@ var __iconData$61 = {
57989
55837
  }]
57990
55838
  ]
57991
55839
  };
57992
- __iconData$61.node;
57993
- var FileText = createLucideIcon(__iconData$61);
55840
+ __iconData$63.node;
55841
+ var FileText = createLucideIcon(__iconData$63);
57994
55842
  //#endregion
57995
55843
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/fingerprint-pattern.mjs
57996
55844
  /**
@@ -57999,7 +55847,7 @@ var FileText = createLucideIcon(__iconData$61);
57999
55847
  * This source code is licensed under the ISC license.
58000
55848
  * See the LICENSE file in the root directory of this source tree.
58001
55849
  */
58002
- var __iconData$60 = {
55850
+ var __iconData$62 = {
58003
55851
  name: "fingerprint-pattern",
58004
55852
  size: 24,
58005
55853
  node: [
@@ -58042,8 +55890,8 @@ var __iconData$60 = {
58042
55890
  ],
58043
55891
  aliases: ["fingerprint"]
58044
55892
  };
58045
- __iconData$60.node;
58046
- var FingerprintPattern = createLucideIcon(__iconData$60);
55893
+ __iconData$62.node;
55894
+ var FingerprintPattern = createLucideIcon(__iconData$62);
58047
55895
  //#endregion
58048
55896
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/gamepad-2.mjs
58049
55897
  /**
@@ -58052,7 +55900,7 @@ var FingerprintPattern = createLucideIcon(__iconData$60);
58052
55900
  * This source code is licensed under the ISC license.
58053
55901
  * See the LICENSE file in the root directory of this source tree.
58054
55902
  */
58055
- var __iconData$59 = {
55903
+ var __iconData$61 = {
58056
55904
  name: "gamepad-2",
58057
55905
  size: 24,
58058
55906
  node: [
@@ -58090,8 +55938,8 @@ var __iconData$59 = {
58090
55938
  }]
58091
55939
  ]
58092
55940
  };
58093
- __iconData$59.node;
58094
- var Gamepad2 = createLucideIcon(__iconData$59);
55941
+ __iconData$61.node;
55942
+ var Gamepad2 = createLucideIcon(__iconData$61);
58095
55943
  //#endregion
58096
55944
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/gauge.mjs
58097
55945
  /**
@@ -58100,7 +55948,7 @@ var Gamepad2 = createLucideIcon(__iconData$59);
58100
55948
  * This source code is licensed under the ISC license.
58101
55949
  * See the LICENSE file in the root directory of this source tree.
58102
55950
  */
58103
- var __iconData$58 = {
55951
+ var __iconData$60 = {
58104
55952
  name: "gauge",
58105
55953
  size: 24,
58106
55954
  node: [["path", {
@@ -58111,8 +55959,8 @@ var __iconData$58 = {
58111
55959
  key: "19p75a"
58112
55960
  }]]
58113
55961
  };
58114
- __iconData$58.node;
58115
- var Gauge = createLucideIcon(__iconData$58);
55962
+ __iconData$60.node;
55963
+ var Gauge = createLucideIcon(__iconData$60);
58116
55964
  //#endregion
58117
55965
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/gift.mjs
58118
55966
  /**
@@ -58121,7 +55969,7 @@ var Gauge = createLucideIcon(__iconData$58);
58121
55969
  * This source code is licensed under the ISC license.
58122
55970
  * See the LICENSE file in the root directory of this source tree.
58123
55971
  */
58124
- var __iconData$57 = {
55972
+ var __iconData$59 = {
58125
55973
  name: "gift",
58126
55974
  size: 24,
58127
55975
  node: [
@@ -58147,8 +55995,8 @@ var __iconData$57 = {
58147
55995
  }]
58148
55996
  ]
58149
55997
  };
58150
- __iconData$57.node;
58151
- var Gift = createLucideIcon(__iconData$57);
55998
+ __iconData$59.node;
55999
+ var Gift = createLucideIcon(__iconData$59);
58152
56000
  //#endregion
58153
56001
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/git-branch.mjs
58154
56002
  /**
@@ -58157,7 +56005,7 @@ var Gift = createLucideIcon(__iconData$57);
58157
56005
  * This source code is licensed under the ISC license.
58158
56006
  * See the LICENSE file in the root directory of this source tree.
58159
56007
  */
58160
- var __iconData$56 = {
56008
+ var __iconData$58 = {
58161
56009
  name: "git-branch",
58162
56010
  size: 24,
58163
56011
  node: [
@@ -58179,8 +56027,38 @@ var __iconData$56 = {
58179
56027
  }]
58180
56028
  ]
58181
56029
  };
58182
- __iconData$56.node;
58183
- var GitBranch = createLucideIcon(__iconData$56);
56030
+ __iconData$58.node;
56031
+ var GitBranch = createLucideIcon(__iconData$58);
56032
+ //#endregion
56033
+ //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/globe.mjs
56034
+ /**
56035
+ * @license lucide-react v1.52.0 - ISC
56036
+ *
56037
+ * This source code is licensed under the ISC license.
56038
+ * See the LICENSE file in the root directory of this source tree.
56039
+ */
56040
+ var __iconData$57 = {
56041
+ name: "globe",
56042
+ size: 24,
56043
+ node: [
56044
+ ["circle", {
56045
+ cx: "12",
56046
+ cy: "12",
56047
+ r: "10",
56048
+ key: "1mglay"
56049
+ }],
56050
+ ["path", {
56051
+ d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",
56052
+ key: "13o1zl"
56053
+ }],
56054
+ ["path", {
56055
+ d: "M2 12h20",
56056
+ key: "9i4pu4"
56057
+ }]
56058
+ ]
56059
+ };
56060
+ __iconData$57.node;
56061
+ var Globe = createLucideIcon(__iconData$57);
58184
56062
  //#endregion
58185
56063
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/hash.mjs
58186
56064
  /**
@@ -58189,7 +56067,7 @@ var GitBranch = createLucideIcon(__iconData$56);
58189
56067
  * This source code is licensed under the ISC license.
58190
56068
  * See the LICENSE file in the root directory of this source tree.
58191
56069
  */
58192
- var __iconData$55 = {
56070
+ var __iconData$56 = {
58193
56071
  name: "hash",
58194
56072
  size: 24,
58195
56073
  node: [
@@ -58223,8 +56101,8 @@ var __iconData$55 = {
58223
56101
  }]
58224
56102
  ]
58225
56103
  };
58226
- __iconData$55.node;
58227
- var Hash = createLucideIcon(__iconData$55);
56104
+ __iconData$56.node;
56105
+ var Hash = createLucideIcon(__iconData$56);
58228
56106
  //#endregion
58229
56107
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/heart.mjs
58230
56108
  /**
@@ -58233,7 +56111,7 @@ var Hash = createLucideIcon(__iconData$55);
58233
56111
  * This source code is licensed under the ISC license.
58234
56112
  * See the LICENSE file in the root directory of this source tree.
58235
56113
  */
58236
- var __iconData$54 = {
56114
+ var __iconData$55 = {
58237
56115
  name: "heart",
58238
56116
  size: 24,
58239
56117
  node: [["path", {
@@ -58241,8 +56119,8 @@ var __iconData$54 = {
58241
56119
  key: "mvr1a0"
58242
56120
  }]]
58243
56121
  };
58244
- __iconData$54.node;
58245
- var Heart = createLucideIcon(__iconData$54);
56122
+ __iconData$55.node;
56123
+ var Heart = createLucideIcon(__iconData$55);
58246
56124
  //#endregion
58247
56125
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/image.mjs
58248
56126
  /**
@@ -58251,7 +56129,7 @@ var Heart = createLucideIcon(__iconData$54);
58251
56129
  * This source code is licensed under the ISC license.
58252
56130
  * See the LICENSE file in the root directory of this source tree.
58253
56131
  */
58254
- var __iconData$53 = {
56132
+ var __iconData$54 = {
58255
56133
  name: "image",
58256
56134
  size: 24,
58257
56135
  node: [
@@ -58276,8 +56154,8 @@ var __iconData$53 = {
58276
56154
  }]
58277
56155
  ]
58278
56156
  };
58279
- __iconData$53.node;
58280
- var Image$1 = createLucideIcon(__iconData$53);
56157
+ __iconData$54.node;
56158
+ var Image$1 = createLucideIcon(__iconData$54);
58281
56159
  //#endregion
58282
56160
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/info.mjs
58283
56161
  /**
@@ -58286,7 +56164,7 @@ var Image$1 = createLucideIcon(__iconData$53);
58286
56164
  * This source code is licensed under the ISC license.
58287
56165
  * See the LICENSE file in the root directory of this source tree.
58288
56166
  */
58289
- var __iconData$52 = {
56167
+ var __iconData$53 = {
58290
56168
  name: "info",
58291
56169
  size: 24,
58292
56170
  node: [
@@ -58306,8 +56184,8 @@ var __iconData$52 = {
58306
56184
  }]
58307
56185
  ]
58308
56186
  };
58309
- __iconData$52.node;
58310
- var Info$1 = createLucideIcon(__iconData$52);
56187
+ __iconData$53.node;
56188
+ var Info$1 = createLucideIcon(__iconData$53);
58311
56189
  //#endregion
58312
56190
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/layout-template.mjs
58313
56191
  /**
@@ -58316,7 +56194,7 @@ var Info$1 = createLucideIcon(__iconData$52);
58316
56194
  * This source code is licensed under the ISC license.
58317
56195
  * See the LICENSE file in the root directory of this source tree.
58318
56196
  */
58319
- var __iconData$51 = {
56197
+ var __iconData$52 = {
58320
56198
  name: "layout-template",
58321
56199
  size: 24,
58322
56200
  node: [
@@ -58346,8 +56224,8 @@ var __iconData$51 = {
58346
56224
  }]
58347
56225
  ]
58348
56226
  };
58349
- __iconData$51.node;
58350
- var LayoutTemplate = createLucideIcon(__iconData$51);
56227
+ __iconData$52.node;
56228
+ var LayoutTemplate = createLucideIcon(__iconData$52);
58351
56229
  //#endregion
58352
56230
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/link.mjs
58353
56231
  /**
@@ -58356,7 +56234,7 @@ var LayoutTemplate = createLucideIcon(__iconData$51);
58356
56234
  * This source code is licensed under the ISC license.
58357
56235
  * See the LICENSE file in the root directory of this source tree.
58358
56236
  */
58359
- var __iconData$50 = {
56237
+ var __iconData$51 = {
58360
56238
  name: "link",
58361
56239
  size: 24,
58362
56240
  node: [["path", {
@@ -58367,8 +56245,8 @@ var __iconData$50 = {
58367
56245
  key: "19qd67"
58368
56246
  }]]
58369
56247
  };
58370
- __iconData$50.node;
58371
- var Link = createLucideIcon(__iconData$50);
56248
+ __iconData$51.node;
56249
+ var Link = createLucideIcon(__iconData$51);
58372
56250
  //#endregion
58373
56251
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/list-checks.mjs
58374
56252
  /**
@@ -58377,7 +56255,7 @@ var Link = createLucideIcon(__iconData$50);
58377
56255
  * This source code is licensed under the ISC license.
58378
56256
  * See the LICENSE file in the root directory of this source tree.
58379
56257
  */
58380
- var __iconData$49 = {
56258
+ var __iconData$50 = {
58381
56259
  name: "list-checks",
58382
56260
  size: 24,
58383
56261
  node: [
@@ -58403,8 +56281,8 @@ var __iconData$49 = {
58403
56281
  }]
58404
56282
  ]
58405
56283
  };
58406
- __iconData$49.node;
58407
- var ListChecks = createLucideIcon(__iconData$49);
56284
+ __iconData$50.node;
56285
+ var ListChecks = createLucideIcon(__iconData$50);
58408
56286
  //#endregion
58409
56287
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/loader-circle.mjs
58410
56288
  /**
@@ -58413,7 +56291,7 @@ var ListChecks = createLucideIcon(__iconData$49);
58413
56291
  * This source code is licensed under the ISC license.
58414
56292
  * See the LICENSE file in the root directory of this source tree.
58415
56293
  */
58416
- var __iconData$48 = {
56294
+ var __iconData$49 = {
58417
56295
  name: "loader-circle",
58418
56296
  size: 24,
58419
56297
  node: [["path", {
@@ -58422,8 +56300,8 @@ var __iconData$48 = {
58422
56300
  }]],
58423
56301
  aliases: ["loader-2"]
58424
56302
  };
58425
- __iconData$48.node;
58426
- var LoaderCircle = createLucideIcon(__iconData$48);
56303
+ __iconData$49.node;
56304
+ var LoaderCircle = createLucideIcon(__iconData$49);
58427
56305
  //#endregion
58428
56306
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/map-pin.mjs
58429
56307
  /**
@@ -58432,7 +56310,7 @@ var LoaderCircle = createLucideIcon(__iconData$48);
58432
56310
  * This source code is licensed under the ISC license.
58433
56311
  * See the LICENSE file in the root directory of this source tree.
58434
56312
  */
58435
- var __iconData$47 = {
56313
+ var __iconData$48 = {
58436
56314
  name: "map-pin",
58437
56315
  size: 24,
58438
56316
  node: [["path", {
@@ -58445,8 +56323,8 @@ var __iconData$47 = {
58445
56323
  key: "ilqhr7"
58446
56324
  }]]
58447
56325
  };
58448
- __iconData$47.node;
58449
- var MapPin = createLucideIcon(__iconData$47);
56326
+ __iconData$48.node;
56327
+ var MapPin = createLucideIcon(__iconData$48);
58450
56328
  //#endregion
58451
56329
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/maximize.mjs
58452
56330
  /**
@@ -58455,7 +56333,7 @@ var MapPin = createLucideIcon(__iconData$47);
58455
56333
  * This source code is licensed under the ISC license.
58456
56334
  * See the LICENSE file in the root directory of this source tree.
58457
56335
  */
58458
- var __iconData$46 = {
56336
+ var __iconData$47 = {
58459
56337
  name: "maximize",
58460
56338
  size: 24,
58461
56339
  node: [
@@ -58477,8 +56355,8 @@ var __iconData$46 = {
58477
56355
  }]
58478
56356
  ]
58479
56357
  };
58480
- __iconData$46.node;
58481
- var Maximize = createLucideIcon(__iconData$46);
56358
+ __iconData$47.node;
56359
+ var Maximize = createLucideIcon(__iconData$47);
58482
56360
  //#endregion
58483
56361
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/menu.mjs
58484
56362
  /**
@@ -58487,7 +56365,7 @@ var Maximize = createLucideIcon(__iconData$46);
58487
56365
  * This source code is licensed under the ISC license.
58488
56366
  * See the LICENSE file in the root directory of this source tree.
58489
56367
  */
58490
- var __iconData$45 = {
56368
+ var __iconData$46 = {
58491
56369
  name: "menu",
58492
56370
  size: 24,
58493
56371
  node: [
@@ -58505,8 +56383,8 @@ var __iconData$45 = {
58505
56383
  }]
58506
56384
  ]
58507
56385
  };
58508
- __iconData$45.node;
58509
- var Menu = createLucideIcon(__iconData$45);
56386
+ __iconData$46.node;
56387
+ var Menu = createLucideIcon(__iconData$46);
58510
56388
  //#endregion
58511
56389
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/message-circle.mjs
58512
56390
  /**
@@ -58515,7 +56393,7 @@ var Menu = createLucideIcon(__iconData$45);
58515
56393
  * This source code is licensed under the ISC license.
58516
56394
  * See the LICENSE file in the root directory of this source tree.
58517
56395
  */
58518
- var __iconData$44 = {
56396
+ var __iconData$45 = {
58519
56397
  name: "message-circle",
58520
56398
  size: 24,
58521
56399
  node: [["path", {
@@ -58523,8 +56401,8 @@ var __iconData$44 = {
58523
56401
  key: "1sd12s"
58524
56402
  }]]
58525
56403
  };
58526
- __iconData$44.node;
58527
- var MessageCircle = createLucideIcon(__iconData$44);
56404
+ __iconData$45.node;
56405
+ var MessageCircle = createLucideIcon(__iconData$45);
58528
56406
  //#endregion
58529
56407
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/monitor.mjs
58530
56408
  /**
@@ -58533,7 +56411,7 @@ var MessageCircle = createLucideIcon(__iconData$44);
58533
56411
  * This source code is licensed under the ISC license.
58534
56412
  * See the LICENSE file in the root directory of this source tree.
58535
56413
  */
58536
- var __iconData$43 = {
56414
+ var __iconData$44 = {
58537
56415
  name: "monitor",
58538
56416
  size: 24,
58539
56417
  node: [
@@ -58561,8 +56439,8 @@ var __iconData$43 = {
58561
56439
  }]
58562
56440
  ]
58563
56441
  };
58564
- __iconData$43.node;
58565
- var Monitor = createLucideIcon(__iconData$43);
56442
+ __iconData$44.node;
56443
+ var Monitor = createLucideIcon(__iconData$44);
58566
56444
  //#endregion
58567
56445
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/moon.mjs
58568
56446
  /**
@@ -58571,7 +56449,7 @@ var Monitor = createLucideIcon(__iconData$43);
58571
56449
  * This source code is licensed under the ISC license.
58572
56450
  * See the LICENSE file in the root directory of this source tree.
58573
56451
  */
58574
- var __iconData$42 = {
56452
+ var __iconData$43 = {
58575
56453
  name: "moon",
58576
56454
  size: 24,
58577
56455
  node: [["path", {
@@ -58579,8 +56457,8 @@ var __iconData$42 = {
58579
56457
  key: "kfwtm"
58580
56458
  }]]
58581
56459
  };
58582
- __iconData$42.node;
58583
- var Moon = createLucideIcon(__iconData$42);
56460
+ __iconData$43.node;
56461
+ var Moon = createLucideIcon(__iconData$43);
58584
56462
  //#endregion
58585
56463
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/music.mjs
58586
56464
  /**
@@ -58589,7 +56467,7 @@ var Moon = createLucideIcon(__iconData$42);
58589
56467
  * This source code is licensed under the ISC license.
58590
56468
  * See the LICENSE file in the root directory of this source tree.
58591
56469
  */
58592
- var __iconData$41 = {
56470
+ var __iconData$42 = {
58593
56471
  name: "music",
58594
56472
  size: 24,
58595
56473
  node: [
@@ -58611,8 +56489,8 @@ var __iconData$41 = {
58611
56489
  }]
58612
56490
  ]
58613
56491
  };
58614
- __iconData$41.node;
58615
- var Music = createLucideIcon(__iconData$41);
56492
+ __iconData$42.node;
56493
+ var Music = createLucideIcon(__iconData$42);
58616
56494
  //#endregion
58617
56495
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/network.mjs
58618
56496
  /**
@@ -58621,7 +56499,7 @@ var Music = createLucideIcon(__iconData$41);
58621
56499
  * This source code is licensed under the ISC license.
58622
56500
  * See the LICENSE file in the root directory of this source tree.
58623
56501
  */
58624
- var __iconData$40 = {
56502
+ var __iconData$41 = {
58625
56503
  name: "network",
58626
56504
  size: 24,
58627
56505
  node: [
@@ -58659,8 +56537,8 @@ var __iconData$40 = {
58659
56537
  }]
58660
56538
  ]
58661
56539
  };
58662
- __iconData$40.node;
58663
- var Network = createLucideIcon(__iconData$40);
56540
+ __iconData$41.node;
56541
+ var Network = createLucideIcon(__iconData$41);
58664
56542
  //#endregion
58665
56543
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/palette.mjs
58666
56544
  /**
@@ -58669,7 +56547,7 @@ var Network = createLucideIcon(__iconData$40);
58669
56547
  * This source code is licensed under the ISC license.
58670
56548
  * See the LICENSE file in the root directory of this source tree.
58671
56549
  */
58672
- var __iconData$39 = {
56550
+ var __iconData$40 = {
58673
56551
  name: "palette",
58674
56552
  size: 24,
58675
56553
  node: [
@@ -58707,8 +56585,8 @@ var __iconData$39 = {
58707
56585
  }]
58708
56586
  ]
58709
56587
  };
58710
- __iconData$39.node;
58711
- var Palette = createLucideIcon(__iconData$39);
56588
+ __iconData$40.node;
56589
+ var Palette = createLucideIcon(__iconData$40);
58712
56590
  //#endregion
58713
56591
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/pencil.mjs
58714
56592
  /**
@@ -58717,7 +56595,7 @@ var Palette = createLucideIcon(__iconData$39);
58717
56595
  * This source code is licensed under the ISC license.
58718
56596
  * See the LICENSE file in the root directory of this source tree.
58719
56597
  */
58720
- var __iconData$38 = {
56598
+ var __iconData$39 = {
58721
56599
  name: "pencil",
58722
56600
  size: 24,
58723
56601
  node: [["path", {
@@ -58728,8 +56606,8 @@ var __iconData$38 = {
58728
56606
  key: "1mk7zo"
58729
56607
  }]]
58730
56608
  };
58731
- __iconData$38.node;
58732
- var Pencil = createLucideIcon(__iconData$38);
56609
+ __iconData$39.node;
56610
+ var Pencil = createLucideIcon(__iconData$39);
58733
56611
  //#endregion
58734
56612
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/play.mjs
58735
56613
  /**
@@ -58738,7 +56616,7 @@ var Pencil = createLucideIcon(__iconData$38);
58738
56616
  * This source code is licensed under the ISC license.
58739
56617
  * See the LICENSE file in the root directory of this source tree.
58740
56618
  */
58741
- var __iconData$37 = {
56619
+ var __iconData$38 = {
58742
56620
  name: "play",
58743
56621
  size: 24,
58744
56622
  node: [["path", {
@@ -58746,8 +56624,8 @@ var __iconData$37 = {
58746
56624
  key: "10ikf1"
58747
56625
  }]]
58748
56626
  };
58749
- __iconData$37.node;
58750
- var Play = createLucideIcon(__iconData$37);
56627
+ __iconData$38.node;
56628
+ var Play = createLucideIcon(__iconData$38);
58751
56629
  //#endregion
58752
56630
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/plus.mjs
58753
56631
  /**
@@ -58756,7 +56634,7 @@ var Play = createLucideIcon(__iconData$37);
58756
56634
  * This source code is licensed under the ISC license.
58757
56635
  * See the LICENSE file in the root directory of this source tree.
58758
56636
  */
58759
- var __iconData$36 = {
56637
+ var __iconData$37 = {
58760
56638
  name: "plus",
58761
56639
  size: 24,
58762
56640
  node: [["path", {
@@ -58767,8 +56645,8 @@ var __iconData$36 = {
58767
56645
  key: "s699le"
58768
56646
  }]]
58769
56647
  };
58770
- __iconData$36.node;
58771
- var Plus = createLucideIcon(__iconData$36);
56648
+ __iconData$37.node;
56649
+ var Plus = createLucideIcon(__iconData$37);
58772
56650
  //#endregion
58773
56651
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/puzzle.mjs
58774
56652
  /**
@@ -58777,7 +56655,7 @@ var Plus = createLucideIcon(__iconData$36);
58777
56655
  * This source code is licensed under the ISC license.
58778
56656
  * See the LICENSE file in the root directory of this source tree.
58779
56657
  */
58780
- var __iconData$35 = {
56658
+ var __iconData$36 = {
58781
56659
  name: "puzzle",
58782
56660
  size: 24,
58783
56661
  node: [["path", {
@@ -58785,8 +56663,8 @@ var __iconData$35 = {
58785
56663
  key: "w46dr5"
58786
56664
  }]]
58787
56665
  };
58788
- __iconData$35.node;
58789
- var Puzzle = createLucideIcon(__iconData$35);
56666
+ __iconData$36.node;
56667
+ var Puzzle = createLucideIcon(__iconData$36);
58790
56668
  //#endregion
58791
56669
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/qr-code.mjs
58792
56670
  /**
@@ -58795,7 +56673,7 @@ var Puzzle = createLucideIcon(__iconData$35);
58795
56673
  * This source code is licensed under the ISC license.
58796
56674
  * See the LICENSE file in the root directory of this source tree.
58797
56675
  */
58798
- var __iconData$34 = {
56676
+ var __iconData$35 = {
58799
56677
  name: "qr-code",
58800
56678
  size: 24,
58801
56679
  node: [
@@ -58861,8 +56739,8 @@ var __iconData$34 = {
58861
56739
  }]
58862
56740
  ]
58863
56741
  };
58864
- __iconData$34.node;
58865
- var QrCode = createLucideIcon(__iconData$34);
56742
+ __iconData$35.node;
56743
+ var QrCode = createLucideIcon(__iconData$35);
58866
56744
  //#endregion
58867
56745
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/quote.mjs
58868
56746
  /**
@@ -58871,7 +56749,7 @@ var QrCode = createLucideIcon(__iconData$34);
58871
56749
  * This source code is licensed under the ISC license.
58872
56750
  * See the LICENSE file in the root directory of this source tree.
58873
56751
  */
58874
- var __iconData$33 = {
56752
+ var __iconData$34 = {
58875
56753
  name: "quote",
58876
56754
  size: 24,
58877
56755
  node: [["path", {
@@ -58882,8 +56760,8 @@ var __iconData$33 = {
58882
56760
  key: "1ymkrd"
58883
56761
  }]]
58884
56762
  };
58885
- __iconData$33.node;
58886
- var Quote = createLucideIcon(__iconData$33);
56763
+ __iconData$34.node;
56764
+ var Quote = createLucideIcon(__iconData$34);
58887
56765
  //#endregion
58888
56766
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/radio.mjs
58889
56767
  /**
@@ -58892,7 +56770,7 @@ var Quote = createLucideIcon(__iconData$33);
58892
56770
  * This source code is licensed under the ISC license.
58893
56771
  * See the LICENSE file in the root directory of this source tree.
58894
56772
  */
58895
- var __iconData$32 = {
56773
+ var __iconData$33 = {
58896
56774
  name: "radio",
58897
56775
  size: 24,
58898
56776
  node: [
@@ -58920,8 +56798,8 @@ var __iconData$32 = {
58920
56798
  }]
58921
56799
  ]
58922
56800
  };
58923
- __iconData$32.node;
58924
- var Radio = createLucideIcon(__iconData$32);
56801
+ __iconData$33.node;
56802
+ var Radio = createLucideIcon(__iconData$33);
58925
56803
  //#endregion
58926
56804
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/refresh-cw.mjs
58927
56805
  /**
@@ -58930,7 +56808,7 @@ var Radio = createLucideIcon(__iconData$32);
58930
56808
  * This source code is licensed under the ISC license.
58931
56809
  * See the LICENSE file in the root directory of this source tree.
58932
56810
  */
58933
- var __iconData$31 = {
56811
+ var __iconData$32 = {
58934
56812
  name: "refresh-cw",
58935
56813
  size: 24,
58936
56814
  node: [
@@ -58952,8 +56830,8 @@ var __iconData$31 = {
58952
56830
  }]
58953
56831
  ]
58954
56832
  };
58955
- __iconData$31.node;
58956
- var RefreshCw = createLucideIcon(__iconData$31);
56833
+ __iconData$32.node;
56834
+ var RefreshCw = createLucideIcon(__iconData$32);
58957
56835
  //#endregion
58958
56836
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/repeat.mjs
58959
56837
  /**
@@ -58962,7 +56840,7 @@ var RefreshCw = createLucideIcon(__iconData$31);
58962
56840
  * This source code is licensed under the ISC license.
58963
56841
  * See the LICENSE file in the root directory of this source tree.
58964
56842
  */
58965
- var __iconData$30 = {
56843
+ var __iconData$31 = {
58966
56844
  name: "repeat",
58967
56845
  size: 24,
58968
56846
  node: [
@@ -58984,8 +56862,8 @@ var __iconData$30 = {
58984
56862
  }]
58985
56863
  ]
58986
56864
  };
58987
- __iconData$30.node;
58988
- var Repeat = createLucideIcon(__iconData$30);
56865
+ __iconData$31.node;
56866
+ var Repeat = createLucideIcon(__iconData$31);
58989
56867
  //#endregion
58990
56868
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/rotate-ccw.mjs
58991
56869
  /**
@@ -58994,7 +56872,7 @@ var Repeat = createLucideIcon(__iconData$30);
58994
56872
  * This source code is licensed under the ISC license.
58995
56873
  * See the LICENSE file in the root directory of this source tree.
58996
56874
  */
58997
- var __iconData$29 = {
56875
+ var __iconData$30 = {
58998
56876
  name: "rotate-ccw",
58999
56877
  size: 24,
59000
56878
  node: [["path", {
@@ -59005,8 +56883,8 @@ var __iconData$29 = {
59005
56883
  key: "1xhq8a"
59006
56884
  }]]
59007
56885
  };
59008
- __iconData$29.node;
59009
- var RotateCcw = createLucideIcon(__iconData$29);
56886
+ __iconData$30.node;
56887
+ var RotateCcw = createLucideIcon(__iconData$30);
59010
56888
  //#endregion
59011
56889
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/route.mjs
59012
56890
  /**
@@ -59015,7 +56893,7 @@ var RotateCcw = createLucideIcon(__iconData$29);
59015
56893
  * This source code is licensed under the ISC license.
59016
56894
  * See the LICENSE file in the root directory of this source tree.
59017
56895
  */
59018
- var __iconData$28 = {
56896
+ var __iconData$29 = {
59019
56897
  name: "route",
59020
56898
  size: 24,
59021
56899
  node: [
@@ -59037,8 +56915,8 @@ var __iconData$28 = {
59037
56915
  }]
59038
56916
  ]
59039
56917
  };
59040
- __iconData$28.node;
59041
- var Route = createLucideIcon(__iconData$28);
56918
+ __iconData$29.node;
56919
+ var Route = createLucideIcon(__iconData$29);
59042
56920
  //#endregion
59043
56921
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/save.mjs
59044
56922
  /**
@@ -59047,7 +56925,7 @@ var Route = createLucideIcon(__iconData$28);
59047
56925
  * This source code is licensed under the ISC license.
59048
56926
  * See the LICENSE file in the root directory of this source tree.
59049
56927
  */
59050
- var __iconData$27 = {
56928
+ var __iconData$28 = {
59051
56929
  name: "save",
59052
56930
  size: 24,
59053
56931
  node: [
@@ -59065,8 +56943,8 @@ var __iconData$27 = {
59065
56943
  }]
59066
56944
  ]
59067
56945
  };
59068
- __iconData$27.node;
59069
- var Save = createLucideIcon(__iconData$27);
56946
+ __iconData$28.node;
56947
+ var Save = createLucideIcon(__iconData$28);
59070
56948
  //#endregion
59071
56949
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/scan-line.mjs
59072
56950
  /**
@@ -59075,7 +56953,7 @@ var Save = createLucideIcon(__iconData$27);
59075
56953
  * This source code is licensed under the ISC license.
59076
56954
  * See the LICENSE file in the root directory of this source tree.
59077
56955
  */
59078
- var __iconData$26 = {
56956
+ var __iconData$27 = {
59079
56957
  name: "scan-line",
59080
56958
  size: 24,
59081
56959
  node: [
@@ -59101,8 +56979,8 @@ var __iconData$26 = {
59101
56979
  }]
59102
56980
  ]
59103
56981
  };
59104
- __iconData$26.node;
59105
- var ScanLine = createLucideIcon(__iconData$26);
56982
+ __iconData$27.node;
56983
+ var ScanLine = createLucideIcon(__iconData$27);
59106
56984
  //#endregion
59107
56985
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/search.mjs
59108
56986
  /**
@@ -59111,7 +56989,7 @@ var ScanLine = createLucideIcon(__iconData$26);
59111
56989
  * This source code is licensed under the ISC license.
59112
56990
  * See the LICENSE file in the root directory of this source tree.
59113
56991
  */
59114
- var __iconData$25 = {
56992
+ var __iconData$26 = {
59115
56993
  name: "search",
59116
56994
  size: 24,
59117
56995
  node: [["path", {
@@ -59124,8 +57002,8 @@ var __iconData$25 = {
59124
57002
  key: "4ej97u"
59125
57003
  }]]
59126
57004
  };
59127
- __iconData$25.node;
59128
- var Search = createLucideIcon(__iconData$25);
57005
+ __iconData$26.node;
57006
+ var Search = createLucideIcon(__iconData$26);
59129
57007
  //#endregion
59130
57008
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/settings-2.mjs
59131
57009
  /**
@@ -59134,7 +57012,7 @@ var Search = createLucideIcon(__iconData$25);
59134
57012
  * This source code is licensed under the ISC license.
59135
57013
  * See the LICENSE file in the root directory of this source tree.
59136
57014
  */
59137
- var __iconData$24 = {
57015
+ var __iconData$25 = {
59138
57016
  name: "settings-2",
59139
57017
  size: 24,
59140
57018
  node: [
@@ -59160,8 +57038,8 @@ var __iconData$24 = {
59160
57038
  }]
59161
57039
  ]
59162
57040
  };
59163
- __iconData$24.node;
59164
- var Settings2 = createLucideIcon(__iconData$24);
57041
+ __iconData$25.node;
57042
+ var Settings2 = createLucideIcon(__iconData$25);
59165
57043
  //#endregion
59166
57044
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/share-2.mjs
59167
57045
  /**
@@ -59170,7 +57048,7 @@ var Settings2 = createLucideIcon(__iconData$24);
59170
57048
  * This source code is licensed under the ISC license.
59171
57049
  * See the LICENSE file in the root directory of this source tree.
59172
57050
  */
59173
- var __iconData$23 = {
57051
+ var __iconData$24 = {
59174
57052
  name: "share-2",
59175
57053
  size: 24,
59176
57054
  node: [
@@ -59208,8 +57086,8 @@ var __iconData$23 = {
59208
57086
  }]
59209
57087
  ]
59210
57088
  };
59211
- __iconData$23.node;
59212
- var Share2 = createLucideIcon(__iconData$23);
57089
+ __iconData$24.node;
57090
+ var Share2 = createLucideIcon(__iconData$24);
59213
57091
  //#endregion
59214
57092
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/shield-alert.mjs
59215
57093
  /**
@@ -59218,7 +57096,7 @@ var Share2 = createLucideIcon(__iconData$23);
59218
57096
  * This source code is licensed under the ISC license.
59219
57097
  * See the LICENSE file in the root directory of this source tree.
59220
57098
  */
59221
- var __iconData$22 = {
57099
+ var __iconData$23 = {
59222
57100
  name: "shield-alert",
59223
57101
  size: 24,
59224
57102
  node: [
@@ -59236,8 +57114,8 @@ var __iconData$22 = {
59236
57114
  }]
59237
57115
  ]
59238
57116
  };
59239
- __iconData$22.node;
59240
- var ShieldAlert = createLucideIcon(__iconData$22);
57117
+ __iconData$23.node;
57118
+ var ShieldAlert = createLucideIcon(__iconData$23);
59241
57119
  //#endregion
59242
57120
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/shield-check.mjs
59243
57121
  /**
@@ -59246,7 +57124,7 @@ var ShieldAlert = createLucideIcon(__iconData$22);
59246
57124
  * This source code is licensed under the ISC license.
59247
57125
  * See the LICENSE file in the root directory of this source tree.
59248
57126
  */
59249
- var __iconData$21 = {
57127
+ var __iconData$22 = {
59250
57128
  name: "shield-check",
59251
57129
  size: 24,
59252
57130
  node: [["path", {
@@ -59257,8 +57135,8 @@ var __iconData$21 = {
59257
57135
  key: "dzmm74"
59258
57136
  }]]
59259
57137
  };
59260
- __iconData$21.node;
59261
- var ShieldCheck = createLucideIcon(__iconData$21);
57138
+ __iconData$22.node;
57139
+ var ShieldCheck = createLucideIcon(__iconData$22);
59262
57140
  //#endregion
59263
57141
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/shield.mjs
59264
57142
  /**
@@ -59267,7 +57145,7 @@ var ShieldCheck = createLucideIcon(__iconData$21);
59267
57145
  * This source code is licensed under the ISC license.
59268
57146
  * See the LICENSE file in the root directory of this source tree.
59269
57147
  */
59270
- var __iconData$20 = {
57148
+ var __iconData$21 = {
59271
57149
  name: "shield",
59272
57150
  size: 24,
59273
57151
  node: [["path", {
@@ -59275,8 +57153,8 @@ var __iconData$20 = {
59275
57153
  key: "oel41y"
59276
57154
  }]]
59277
57155
  };
59278
- __iconData$20.node;
59279
- var Shield = createLucideIcon(__iconData$20);
57156
+ __iconData$21.node;
57157
+ var Shield = createLucideIcon(__iconData$21);
59280
57158
  //#endregion
59281
57159
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/shopping-bag.mjs
59282
57160
  /**
@@ -59285,7 +57163,7 @@ var Shield = createLucideIcon(__iconData$20);
59285
57163
  * This source code is licensed under the ISC license.
59286
57164
  * See the LICENSE file in the root directory of this source tree.
59287
57165
  */
59288
- var __iconData$19 = {
57166
+ var __iconData$20 = {
59289
57167
  name: "shopping-bag",
59290
57168
  size: 24,
59291
57169
  node: [
@@ -59303,8 +57181,8 @@ var __iconData$19 = {
59303
57181
  }]
59304
57182
  ]
59305
57183
  };
59306
- __iconData$19.node;
59307
- var ShoppingBag = createLucideIcon(__iconData$19);
57184
+ __iconData$20.node;
57185
+ var ShoppingBag = createLucideIcon(__iconData$20);
59308
57186
  //#endregion
59309
57187
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/smartphone.mjs
59310
57188
  /**
@@ -59313,7 +57191,7 @@ var ShoppingBag = createLucideIcon(__iconData$19);
59313
57191
  * This source code is licensed under the ISC license.
59314
57192
  * See the LICENSE file in the root directory of this source tree.
59315
57193
  */
59316
- var __iconData$18 = {
57194
+ var __iconData$19 = {
59317
57195
  name: "smartphone",
59318
57196
  size: 24,
59319
57197
  node: [["rect", {
@@ -59329,8 +57207,8 @@ var __iconData$18 = {
59329
57207
  key: "mhygvu"
59330
57208
  }]]
59331
57209
  };
59332
- __iconData$18.node;
59333
- var Smartphone = createLucideIcon(__iconData$18);
57210
+ __iconData$19.node;
57211
+ var Smartphone = createLucideIcon(__iconData$19);
59334
57212
  //#endregion
59335
57213
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/sparkles.mjs
59336
57214
  /**
@@ -59339,7 +57217,7 @@ var Smartphone = createLucideIcon(__iconData$18);
59339
57217
  * This source code is licensed under the ISC license.
59340
57218
  * See the LICENSE file in the root directory of this source tree.
59341
57219
  */
59342
- var __iconData$17 = {
57220
+ var __iconData$18 = {
59343
57221
  name: "sparkles",
59344
57222
  size: 24,
59345
57223
  node: [
@@ -59364,8 +57242,8 @@ var __iconData$17 = {
59364
57242
  ],
59365
57243
  aliases: ["stars"]
59366
57244
  };
59367
- __iconData$17.node;
59368
- var Sparkles = createLucideIcon(__iconData$17);
57245
+ __iconData$18.node;
57246
+ var Sparkles = createLucideIcon(__iconData$18);
59369
57247
  //#endregion
59370
57248
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/square-pen.mjs
59371
57249
  /**
@@ -59374,7 +57252,7 @@ var Sparkles = createLucideIcon(__iconData$17);
59374
57252
  * This source code is licensed under the ISC license.
59375
57253
  * See the LICENSE file in the root directory of this source tree.
59376
57254
  */
59377
- var __iconData$16 = {
57255
+ var __iconData$17 = {
59378
57256
  name: "square-pen",
59379
57257
  size: 24,
59380
57258
  node: [["path", {
@@ -59390,8 +57268,8 @@ var __iconData$16 = {
59390
57268
  "pen-square"
59391
57269
  ]
59392
57270
  };
59393
- __iconData$16.node;
59394
- var SquarePen = createLucideIcon(__iconData$16);
57271
+ __iconData$17.node;
57272
+ var SquarePen = createLucideIcon(__iconData$17);
59395
57273
  //#endregion
59396
57274
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/square.mjs
59397
57275
  /**
@@ -59400,7 +57278,7 @@ var SquarePen = createLucideIcon(__iconData$16);
59400
57278
  * This source code is licensed under the ISC license.
59401
57279
  * See the LICENSE file in the root directory of this source tree.
59402
57280
  */
59403
- var __iconData$15 = {
57281
+ var __iconData$16 = {
59404
57282
  name: "square",
59405
57283
  size: 24,
59406
57284
  node: [["rect", {
@@ -59412,8 +57290,8 @@ var __iconData$15 = {
59412
57290
  key: "afitv7"
59413
57291
  }]]
59414
57292
  };
59415
- __iconData$15.node;
59416
- var Square = createLucideIcon(__iconData$15);
57293
+ __iconData$16.node;
57294
+ var Square = createLucideIcon(__iconData$16);
59417
57295
  //#endregion
59418
57296
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/star.mjs
59419
57297
  /**
@@ -59422,7 +57300,7 @@ var Square = createLucideIcon(__iconData$15);
59422
57300
  * This source code is licensed under the ISC license.
59423
57301
  * See the LICENSE file in the root directory of this source tree.
59424
57302
  */
59425
- var __iconData$14 = {
57303
+ var __iconData$15 = {
59426
57304
  name: "star",
59427
57305
  size: 24,
59428
57306
  node: [["path", {
@@ -59430,8 +57308,8 @@ var __iconData$14 = {
59430
57308
  key: "r04s7s"
59431
57309
  }]]
59432
57310
  };
59433
- __iconData$14.node;
59434
- var Star = createLucideIcon(__iconData$14);
57311
+ __iconData$15.node;
57312
+ var Star = createLucideIcon(__iconData$15);
59435
57313
  //#endregion
59436
57314
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/sun.mjs
59437
57315
  /**
@@ -59440,7 +57318,7 @@ var Star = createLucideIcon(__iconData$14);
59440
57318
  * This source code is licensed under the ISC license.
59441
57319
  * See the LICENSE file in the root directory of this source tree.
59442
57320
  */
59443
- var __iconData$13 = {
57321
+ var __iconData$14 = {
59444
57322
  name: "sun",
59445
57323
  size: 24,
59446
57324
  node: [
@@ -59484,8 +57362,8 @@ var __iconData$13 = {
59484
57362
  }]
59485
57363
  ]
59486
57364
  };
59487
- __iconData$13.node;
59488
- var Sun = createLucideIcon(__iconData$13);
57365
+ __iconData$14.node;
57366
+ var Sun = createLucideIcon(__iconData$14);
59489
57367
  //#endregion
59490
57368
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/terminal.mjs
59491
57369
  /**
@@ -59494,7 +57372,7 @@ var Sun = createLucideIcon(__iconData$13);
59494
57372
  * This source code is licensed under the ISC license.
59495
57373
  * See the LICENSE file in the root directory of this source tree.
59496
57374
  */
59497
- var __iconData$12 = {
57375
+ var __iconData$13 = {
59498
57376
  name: "terminal",
59499
57377
  size: 24,
59500
57378
  node: [["path", {
@@ -59505,8 +57383,8 @@ var __iconData$12 = {
59505
57383
  key: "1yngyt"
59506
57384
  }]]
59507
57385
  };
59508
- __iconData$12.node;
59509
- var Terminal = createLucideIcon(__iconData$12);
57386
+ __iconData$13.node;
57387
+ var Terminal = createLucideIcon(__iconData$13);
59510
57388
  //#endregion
59511
57389
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/timer.mjs
59512
57390
  /**
@@ -59515,7 +57393,7 @@ var Terminal = createLucideIcon(__iconData$12);
59515
57393
  * This source code is licensed under the ISC license.
59516
57394
  * See the LICENSE file in the root directory of this source tree.
59517
57395
  */
59518
- var __iconData$11 = {
57396
+ var __iconData$12 = {
59519
57397
  name: "timer",
59520
57398
  size: 24,
59521
57399
  node: [
@@ -59541,8 +57419,8 @@ var __iconData$11 = {
59541
57419
  }]
59542
57420
  ]
59543
57421
  };
59544
- __iconData$11.node;
59545
- var Timer = createLucideIcon(__iconData$11);
57422
+ __iconData$12.node;
57423
+ var Timer = createLucideIcon(__iconData$12);
59546
57424
  //#endregion
59547
57425
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/trash.mjs
59548
57426
  /**
@@ -59551,7 +57429,7 @@ var Timer = createLucideIcon(__iconData$11);
59551
57429
  * This source code is licensed under the ISC license.
59552
57430
  * See the LICENSE file in the root directory of this source tree.
59553
57431
  */
59554
- var __iconData$10 = {
57432
+ var __iconData$11 = {
59555
57433
  name: "trash",
59556
57434
  size: 24,
59557
57435
  node: [
@@ -59578,8 +57456,8 @@ var __iconData$10 = {
59578
57456
  ],
59579
57457
  aliases: ["trash-2"]
59580
57458
  };
59581
- __iconData$10.node;
59582
- var Trash = createLucideIcon(__iconData$10);
57459
+ __iconData$11.node;
57460
+ var Trash = createLucideIcon(__iconData$11);
59583
57461
  //#endregion
59584
57462
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/triangle-alert.mjs
59585
57463
  /**
@@ -59588,7 +57466,7 @@ var Trash = createLucideIcon(__iconData$10);
59588
57466
  * This source code is licensed under the ISC license.
59589
57467
  * See the LICENSE file in the root directory of this source tree.
59590
57468
  */
59591
- var __iconData$9 = {
57469
+ var __iconData$10 = {
59592
57470
  name: "triangle-alert",
59593
57471
  size: 24,
59594
57472
  node: [
@@ -59607,8 +57485,8 @@ var __iconData$9 = {
59607
57485
  ],
59608
57486
  aliases: ["alert-triangle"]
59609
57487
  };
59610
- __iconData$9.node;
59611
- var TriangleAlert = createLucideIcon(__iconData$9);
57488
+ __iconData$10.node;
57489
+ var TriangleAlert = createLucideIcon(__iconData$10);
59612
57490
  //#endregion
59613
57491
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/upload.mjs
59614
57492
  /**
@@ -59617,7 +57495,7 @@ var TriangleAlert = createLucideIcon(__iconData$9);
59617
57495
  * This source code is licensed under the ISC license.
59618
57496
  * See the LICENSE file in the root directory of this source tree.
59619
57497
  */
59620
- var __iconData$8 = {
57498
+ var __iconData$9 = {
59621
57499
  name: "upload",
59622
57500
  size: 24,
59623
57501
  node: [
@@ -59635,8 +57513,8 @@ var __iconData$8 = {
59635
57513
  }]
59636
57514
  ]
59637
57515
  };
59638
- __iconData$8.node;
59639
- var Upload = createLucideIcon(__iconData$8);
57516
+ __iconData$9.node;
57517
+ var Upload = createLucideIcon(__iconData$9);
59640
57518
  //#endregion
59641
57519
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/user-plus.mjs
59642
57520
  /**
@@ -59645,7 +57523,7 @@ var Upload = createLucideIcon(__iconData$8);
59645
57523
  * This source code is licensed under the ISC license.
59646
57524
  * See the LICENSE file in the root directory of this source tree.
59647
57525
  */
59648
- var __iconData$7 = {
57526
+ var __iconData$8 = {
59649
57527
  name: "user-plus",
59650
57528
  size: 24,
59651
57529
  node: [
@@ -59675,8 +57553,32 @@ var __iconData$7 = {
59675
57553
  }]
59676
57554
  ]
59677
57555
  };
57556
+ __iconData$8.node;
57557
+ var UserPlus = createLucideIcon(__iconData$8);
57558
+ //#endregion
57559
+ //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/user-round.mjs
57560
+ /**
57561
+ * @license lucide-react v1.52.0 - ISC
57562
+ *
57563
+ * This source code is licensed under the ISC license.
57564
+ * See the LICENSE file in the root directory of this source tree.
57565
+ */
57566
+ var __iconData$7 = {
57567
+ name: "user-round",
57568
+ size: 24,
57569
+ node: [["circle", {
57570
+ cx: "12",
57571
+ cy: "8",
57572
+ r: "5",
57573
+ key: "1hypcn"
57574
+ }], ["path", {
57575
+ d: "M20 21a8 8 0 0 0-16 0",
57576
+ key: "rfgkzh"
57577
+ }]],
57578
+ aliases: ["user-2"]
57579
+ };
59678
57580
  __iconData$7.node;
59679
- var UserPlus = createLucideIcon(__iconData$7);
57581
+ var UserRound = createLucideIcon(__iconData$7);
59680
57582
  //#endregion
59681
57583
  //#region ../../node_modules/.pnpm/lucide-react@1.52.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/user.mjs
59682
57584
  /**
@@ -65683,9 +63585,9 @@ var o$3 = import_react.forwardRef((a, r) => /* @__PURE__ */ import_react.createE
65683
63585
  o$3.displayName = "VideoCameraIcon";
65684
63586
  //#endregion
65685
63587
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiAnthropic.mjs
65686
- var defaultColor$11 = "#191919";
63588
+ var defaultColor$13 = "#191919";
65687
63589
  var SiAnthropic = import_react.forwardRef(function SiAnthropic2({ title = "Anthropic", color = "currentColor", size = 24, ...others }, ref) {
65688
- if (color === "default") color = defaultColor$11;
63590
+ if (color === "default") color = defaultColor$13;
65689
63591
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65690
63592
  xmlns: "http://www.w3.org/2000/svg",
65691
63593
  width: size,
@@ -65699,9 +63601,9 @@ var SiAnthropic = import_react.forwardRef(function SiAnthropic2({ title = "Anthr
65699
63601
  });
65700
63602
  //#endregion
65701
63603
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiApple.mjs
65702
- var defaultColor$10 = "#000000";
63604
+ var defaultColor$12 = "#000000";
65703
63605
  var SiApple = import_react.forwardRef(function SiApple2({ title = "Apple", color = "currentColor", size = 24, ...others }, ref) {
65704
- if (color === "default") color = defaultColor$10;
63606
+ if (color === "default") color = defaultColor$12;
65705
63607
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65706
63608
  xmlns: "http://www.w3.org/2000/svg",
65707
63609
  width: size,
@@ -65715,9 +63617,9 @@ var SiApple = import_react.forwardRef(function SiApple2({ title = "Apple", color
65715
63617
  });
65716
63618
  //#endregion
65717
63619
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiBilibili.mjs
65718
- var defaultColor$9 = "#00A1D6";
63620
+ var defaultColor$11 = "#00A1D6";
65719
63621
  var SiBilibili = import_react.forwardRef(function SiBilibili2({ title = "Bilibili", color = "currentColor", size = 24, ...others }, ref) {
65720
- if (color === "default") color = defaultColor$9;
63622
+ if (color === "default") color = defaultColor$11;
65721
63623
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65722
63624
  xmlns: "http://www.w3.org/2000/svg",
65723
63625
  width: size,
@@ -65731,9 +63633,9 @@ var SiBilibili = import_react.forwardRef(function SiBilibili2({ title = "Bilibil
65731
63633
  });
65732
63634
  //#endregion
65733
63635
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiGithub.mjs
65734
- var defaultColor$8 = "#181717";
63636
+ var defaultColor$10 = "#181717";
65735
63637
  var SiGithub = import_react.forwardRef(function SiGithub2({ title = "GitHub", color = "currentColor", size = 24, ...others }, ref) {
65736
- if (color === "default") color = defaultColor$8;
63638
+ if (color === "default") color = defaultColor$10;
65737
63639
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65738
63640
  xmlns: "http://www.w3.org/2000/svg",
65739
63641
  width: size,
@@ -65747,9 +63649,9 @@ var SiGithub = import_react.forwardRef(function SiGithub2({ title = "GitHub", co
65747
63649
  });
65748
63650
  //#endregion
65749
63651
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiGooglephotos.mjs
65750
- var defaultColor$7 = "#4285F4";
63652
+ var defaultColor$9 = "#4285F4";
65751
63653
  var SiGooglephotos = import_react.forwardRef(function SiGooglephotos2({ title = "Google Photos", color = "currentColor", size = 24, ...others }, ref) {
65752
- if (color === "default") color = defaultColor$7;
63654
+ if (color === "default") color = defaultColor$9;
65753
63655
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65754
63656
  xmlns: "http://www.w3.org/2000/svg",
65755
63657
  width: size,
@@ -65763,9 +63665,9 @@ var SiGooglephotos = import_react.forwardRef(function SiGooglephotos2({ title =
65763
63665
  });
65764
63666
  //#endregion
65765
63667
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiHonor.mjs
65766
- var defaultColor$6 = "#000000";
63668
+ var defaultColor$8 = "#000000";
65767
63669
  var SiHonor = import_react.forwardRef(function SiHonor2({ title = "Honor", color = "currentColor", size = 24, ...others }, ref) {
65768
- if (color === "default") color = defaultColor$6;
63670
+ if (color === "default") color = defaultColor$8;
65769
63671
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65770
63672
  xmlns: "http://www.w3.org/2000/svg",
65771
63673
  width: size,
@@ -65779,9 +63681,9 @@ var SiHonor = import_react.forwardRef(function SiHonor2({ title = "Honor", color
65779
63681
  });
65780
63682
  //#endregion
65781
63683
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiHuawei.mjs
65782
- var defaultColor$5 = "#FF0000";
63684
+ var defaultColor$7 = "#FF0000";
65783
63685
  var SiHuawei = import_react.forwardRef(function SiHuawei2({ title = "Huawei", color = "currentColor", size = 24, ...others }, ref) {
65784
- if (color === "default") color = defaultColor$5;
63686
+ if (color === "default") color = defaultColor$7;
65785
63687
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65786
63688
  xmlns: "http://www.w3.org/2000/svg",
65787
63689
  width: size,
@@ -65794,10 +63696,26 @@ var SiHuawei = import_react.forwardRef(function SiHuawei2({ title = "Huawei", co
65794
63696
  });
65795
63697
  });
65796
63698
  //#endregion
63699
+ //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiKuaishou.mjs
63700
+ var defaultColor$6 = "#FF4906";
63701
+ var SiKuaishou = import_react.forwardRef(function SiKuaishou2({ title = "Kuaishou", color = "currentColor", size = 24, ...others }, ref) {
63702
+ if (color === "default") color = defaultColor$6;
63703
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
63704
+ xmlns: "http://www.w3.org/2000/svg",
63705
+ width: size,
63706
+ height: size,
63707
+ fill: color,
63708
+ viewBox: "0 0 24 24",
63709
+ ref,
63710
+ ...others,
63711
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: title }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M18.315 12.264c2.33 0 4.218 1.88 4.218 4.2V19.8c0 2.32-1.888 4.2-4.218 4.2h-6.202a4.218 4.218 0 0 1-4.023-2.938l-3.676 1.833a2.04 2.04 0 0 1-2.731-.903 2.015 2.015 0 0 1-.216-.907v-5.94a2.03 2.03 0 0 1 2.035-2.024 2.044 2.044 0 0 1 .919.218l3.673 1.85a4.218 4.218 0 0 1 4.02-2.925zm-.062 2.162h-6.078c-1.153 0-2.09.921-2.108 2.065v3.247c0 1.148.925 2.081 2.073 2.1h6.113c1.153 0 2.09-.922 2.109-2.065v-3.247a2.104 2.104 0 0 0-2.074-2.1zM4.18 15.72a.554.554 0 0 0-.555.542v3.734a.556.556 0 0 0 .798.496l.01-.004 3.463-1.756V17.51l-3.467-1.73a.557.557 0 0 0-.249-.06zM9.28 0a5.667 5.667 0 0 1 4.98 2.965 4.921 4.921 0 0 1 3.36-1.317c2.714 0 4.913 2.177 4.913 4.863 0 2.686-2.2 4.863-4.912 4.863a4.921 4.921 0 0 1-3.996-2.034 5.651 5.651 0 0 1-4.345 2.034c-3.131 0-5.67-2.546-5.67-5.687C3.61 2.546 6.149 0 9.28 0Zm8.34 3.926c-1.441 0-2.61 1.157-2.61 2.585s1.169 2.585 2.61 2.585c1.443 0 2.612-1.157 2.612-2.585s-1.169-2.585-2.611-2.585zM9.28 2.287a3.395 3.395 0 0 0-3.39 3.4c0 1.877 1.518 3.4 3.39 3.4a3.395 3.395 0 0 0 3.39-3.4c0-1.878-1.518-3.4-3.39-3.4z" })]
63712
+ });
63713
+ });
63714
+ //#endregion
65797
63715
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiOneplus.mjs
65798
- var defaultColor$4 = "#F5010C";
63716
+ var defaultColor$5 = "#F5010C";
65799
63717
  var SiOneplus = import_react.forwardRef(function SiOneplus2({ title = "OnePlus", color = "currentColor", size = 24, ...others }, ref) {
65800
- if (color === "default") color = defaultColor$4;
63718
+ if (color === "default") color = defaultColor$5;
65801
63719
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65802
63720
  xmlns: "http://www.w3.org/2000/svg",
65803
63721
  width: size,
@@ -65811,9 +63729,9 @@ var SiOneplus = import_react.forwardRef(function SiOneplus2({ title = "OnePlus",
65811
63729
  });
65812
63730
  //#endregion
65813
63731
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiOppo.mjs
65814
- var defaultColor$3 = "#2D683D";
63732
+ var defaultColor$4 = "#2D683D";
65815
63733
  var SiOppo = import_react.forwardRef(function SiOppo2({ title = "OPPO", color = "currentColor", size = 24, ...others }, ref) {
65816
- if (color === "default") color = defaultColor$3;
63734
+ if (color === "default") color = defaultColor$4;
65817
63735
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65818
63736
  xmlns: "http://www.w3.org/2000/svg",
65819
63737
  width: size,
@@ -65827,9 +63745,9 @@ var SiOppo = import_react.forwardRef(function SiOppo2({ title = "OPPO", color =
65827
63745
  });
65828
63746
  //#endregion
65829
63747
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiSamsung.mjs
65830
- var defaultColor$2 = "#1428A0";
63748
+ var defaultColor$3 = "#1428A0";
65831
63749
  var SiSamsung = import_react.forwardRef(function SiSamsung2({ title = "Samsung", color = "currentColor", size = 24, ...others }, ref) {
65832
- if (color === "default") color = defaultColor$2;
63750
+ if (color === "default") color = defaultColor$3;
65833
63751
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65834
63752
  xmlns: "http://www.w3.org/2000/svg",
65835
63753
  width: size,
@@ -65843,9 +63761,9 @@ var SiSamsung = import_react.forwardRef(function SiSamsung2({ title = "Samsung",
65843
63761
  });
65844
63762
  //#endregion
65845
63763
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiVivo.mjs
65846
- var defaultColor$1 = "#415FFF";
63764
+ var defaultColor$2 = "#415FFF";
65847
63765
  var SiVivo = import_react.forwardRef(function SiVivo2({ title = "vivo", color = "currentColor", size = 24, ...others }, ref) {
65848
- if (color === "default") color = defaultColor$1;
63766
+ if (color === "default") color = defaultColor$2;
65849
63767
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
65850
63768
  xmlns: "http://www.w3.org/2000/svg",
65851
63769
  width: size,
@@ -65858,6 +63776,22 @@ var SiVivo = import_react.forwardRef(function SiVivo2({ title = "vivo", color =
65858
63776
  });
65859
63777
  });
65860
63778
  //#endregion
63779
+ //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiXiaohongshu.mjs
63780
+ var defaultColor$1 = "#FF2442";
63781
+ var SiXiaohongshu = import_react.forwardRef(function SiXiaohongshu2({ title = "Xiaohongshu", color = "currentColor", size = 24, ...others }, ref) {
63782
+ if (color === "default") color = defaultColor$1;
63783
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
63784
+ xmlns: "http://www.w3.org/2000/svg",
63785
+ width: size,
63786
+ height: size,
63787
+ fill: color,
63788
+ viewBox: "0 0 24 24",
63789
+ ref,
63790
+ ...others,
63791
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: title }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M22.405 9.879c.002.016.01.02.07.019h.725a.797.797 0 0 0 .78-.972.794.794 0 0 0-.884-.618.795.795 0 0 0-.692.794c0 .101-.002.666.001.777zm-11.509 4.808c-.203.001-1.353.004-1.685.003a2.528 2.528 0 0 1-.766-.126.025.025 0 0 0-.03.014L7.7 16.127a.025.025 0 0 0 .01.032c.111.06.336.124.495.124.66.01 1.32.002 1.981 0 .01 0 .02-.006.023-.015l.712-1.545a.025.025 0 0 0-.024-.036zM.477 9.91c-.071 0-.076.002-.076.01a.834.834 0 0 0-.01.08c-.027.397-.038.495-.234 3.06-.012.24-.034.389-.135.607-.026.057-.033.042.003.112.046.092.681 1.523.787 1.74.008.015.011.02.017.02.008 0 .033-.026.047-.044.147-.187.268-.391.371-.606.306-.635.44-1.325.486-1.706.014-.11.021-.22.03-.33l.204-2.616.022-.293c.003-.029 0-.033-.03-.034zm7.203 3.757a1.427 1.427 0 0 1-.135-.607c-.004-.084-.031-.39-.235-3.06a.443.443 0 0 0-.01-.082c-.004-.011-.052-.008-.076-.008h-1.48c-.03.001-.034.005-.03.034l.021.293c.076.982.153 1.964.233 2.946.05.4.186 1.085.487 1.706.103.215.223.419.37.606.015.018.037.051.048.049.02-.003.742-1.642.804-1.765.036-.07.03-.055.003-.112zm3.861-.913h-.872a.126.126 0 0 1-.116-.178l1.178-2.625a.025.025 0 0 0-.023-.035l-1.318-.003a.148.148 0 0 1-.135-.21l.876-1.954a.025.025 0 0 0-.023-.035h-1.56c-.01 0-.02.006-.024.015l-.926 2.068c-.085.169-.314.634-.399.938a.534.534 0 0 0-.02.191.46.46 0 0 0 .23.378.981.981 0 0 0 .46.119h.59c.041 0-.688 1.482-.834 1.972a.53.53 0 0 0-.023.172.465.465 0 0 0 .23.398c.15.092.342.12.475.12l1.66-.001c.01 0 .02-.006.023-.015l.575-1.28a.025.025 0 0 0-.024-.035zm-6.93-4.937H3.1a.032.032 0 0 0-.034.033c0 1.048-.01 2.795-.01 6.829 0 .288-.269.262-.28.262h-.74c-.04.001-.044.004-.04.047.001.037.465 1.064.555 1.263.01.02.03.033.051.033.157.003.767.009.938-.014.153-.02.3-.06.438-.132.3-.156.49-.419.595-.765.052-.172.075-.353.075-.533.002-2.33 0-4.66-.007-6.991a.032.032 0 0 0-.032-.032zm11.784 6.896c0-.014-.01-.021-.024-.022h-1.465c-.048-.001-.049-.002-.05-.049v-4.66c0-.072-.005-.07.07-.07h.863c.08 0 .075.004.075-.074V8.393c0-.082.006-.076-.08-.076h-3.5c-.064 0-.075-.006-.075.073v1.445c0 .083-.006.077.08.077h.854c.075 0 .07-.004.07.07v4.624c0 .095.008.084-.085.084-.37 0-1.11-.002-1.304 0-.048.001-.06.03-.06.03l-.697 1.519s-.014.025-.008.036c.006.01.013.008.058.008 1.748.003 3.495.002 5.243.002.03-.001.034-.006.035-.033v-1.539zm4.177-3.43c0 .013-.007.023-.02.024-.346.006-.692.004-1.037.004-.014-.002-.022-.01-.022-.024-.005-.434-.007-.869-.01-1.303 0-.072-.006-.071.07-.07l.733-.003c.041 0 .081.002.12.015.093.025.16.107.165.204.006.431.002 1.153.001 1.153zm2.67.244a1.953 1.953 0 0 0-.883-.222h-.18c-.04-.001-.04-.003-.042-.04V10.21c0-.132-.007-.263-.025-.394a1.823 1.823 0 0 0-.153-.53 1.533 1.533 0 0 0-.677-.71 2.167 2.167 0 0 0-1-.258c-.153-.003-.567 0-.72 0-.07 0-.068.004-.068-.065V7.76c0-.031-.01-.041-.046-.039H17.93s-.016 0-.023.007c-.006.006-.008.012-.008.023v.546c-.008.036-.057.015-.082.022h-.95c-.022.002-.028.008-.03.032v1.481c0 .09-.004.082.082.082h.913c.082 0 .072.128.072.128V11.19s.003.117-.06.117h-1.482c-.068 0-.06.082-.06.082v1.445s-.01.068.064.068h1.457c.082 0 .076-.006.076.079v3.225c0 .088-.007.081.082.081h1.43c.09 0 .082.007.082-.08v-3.27c0-.029.006-.035.033-.035l2.323-.003c.098 0 .191.02.28.061a.46.46 0 0 1 .274.407c.008.395.003.79.003 1.185 0 .259-.107.367-.33.367h-1.218c-.023.002-.029.008-.028.033.184.437.374.871.57 1.303a.045.045 0 0 0 .04.026c.17.005.34.002.51.003.15-.002.517.004.666-.01a2.03 2.03 0 0 0 .408-.075c.59-.18.975-.698.976-1.313v-1.981c0-.128-.01-.254-.034-.38 0 .078-.029-.641-.724-.998z" })]
63792
+ });
63793
+ });
63794
+ //#endregion
65861
63795
  //#region ../../node_modules/.pnpm/@icons-pack+react-simple-icons@13.15.1_react@19.3.0/node_modules/@icons-pack/react-simple-icons/icons/SiXiaomi.mjs
65862
63796
  var defaultColor = "#FF6900";
65863
63797
  var SiXiaomi = import_react.forwardRef(function SiXiaomi2({ title = "Xiaomi", color = "currentColor", size = 24, ...others }, ref) {
@@ -159710,4 +157644,4 @@ var G = WebAssembly.compile((a = "AGFzbQEAAAABKwhgAX8Bf2AEf39/fwBgAAF/YAAAYAF/AG
159710
157644
  });
159711
157645
  var a;
159712
157646
  //#endregion
159713
- export { RiPieChart2Fill as $, Gamepad2 as $n, literal as $r, UsersRound as $t, MdFitScreen as A, Plus as An, Bookmark as Ar, e$5 as At, AiFillHeart as B, Maximize as Bn, resolveTemplateStyle as Br, s$4 as Bt, webassembly_default as C, RotateCcw as Cn, Check as Cr, o$4 as Ct, tailwind_css_default as D, Quote as Dn, Braces as Dr, a$4 as Dt, tsdown_default as E, Radio as En, Calendar as Er, m$5 as Et, FaCommentDots as F, Music as Fn, Button as Fr, c$7 as Ft, RiArrowRightFill as G, LayoutTemplate as Gn, require_protobufjs as Gr, formatDistanceToNow as Gt, AiFillStar as H, LoaderCircle as Hn, require_react as Hr, zhCN as Ht, FaMusic as I, Moon as In, require_jsx_runtime as Ir, o$8 as It, RiHeart3Fill as J, Heart as Jn, Xhshow as Jr, Zap as Jt, RiGroupLine as K, Info$1 as Kn, CryptoConfig as Kr, format$1 as Kt, FaTiktok as L, Monitor as Ln, twMerge as Lr, c$8 as Lt, MdLightbulbOutline as M, Pencil as Mn, BellRing as Mr, a$6 as Mt, MdLocationOn as N, Palette as Nn, ArrowRight as Nr, m$6 as Nt, sqlite_default as O, QrCode as On, Box as Or, n$2 as Ot, MdSchedule as P, Network as Pn, Chip as Pr, m$7 as Pt, RiMessage3Fill as Q, Gauge as Qn, array as Qr, Users as Qt, FaUserGroup as R, MessageCircle as Rn, clsx as Rr, p$5 as Rt, rehypeHighlight as S, Route as Sn, CircleAlert as Sr, r$3 as St, typescript_default as T, RefreshCw as Tn, Camera as Tr, s$3 as Tt, AiOutlineVideoCamera as U, ListChecks as Un, HtmlWrapper as Ur, parse$2 as Ut, AiFillPushpin as V, MapPin as Vn, require_server_node as Vr, m$8 as Vt, Markdown as W, Link as Wn, defineTemplate as Wr, fromUnixTime as Wt, RiHeartLine as X, GitBranch as Xn, number$1 as Xr, WandSparkles as Xt, RiHeart3Line as Y, Hash as Yn, xRapParam as Yr, X$2 as Yt, RiLiveLine as Z, Gift as Zn, _enum as Zr, Video as Zt, use as _, Share2 as _n, CircleFadingArrowUp as _r, SiGithub as _t, drawDither as a, Timer as an, EyeOff as ar, RiTrophyFill as at, install$14 as b, ScanLine as bn, CircleCheck as br, SiAnthropic as bt, install as c, Star as cn, Crown as cr, RiVideoLine as ct, install$5 as d, Sparkles as dn, Copy as dr, SiSamsung as dt, number$2 as ei, User as en, FingerprintPattern as er, RiShareForwardFill as et, install$6 as f, Smartphone as fn, Code as fr, SiOppo as ft, install$11 as g, ShieldAlert as gn, CircleQuestionMark as gr, SiGooglephotos as gt, install$10 as h, ShieldCheck as hn, Clapperboard as hr, SiHonor as ht, qe as i, toJSONSchema as ii, Trash as in, Eye as ir, RiTiktokFill as it, MdInfoOutline as j, Play as jn, BookOpenText as jr, c$6 as jt, react_default as k, Puzzle as kn, Bot as kr, p$4 as kt, install$1 as l, Square as ln, Cpu as lr, SiXiaomi as lt, install$9 as m, Shield as mn, Clock3 as mr, SiHuawei as mt, G as n, string$2 as ni, Upload as nn, FilePlay as nr, RiStarLine as nt, require_jpeg_js as o, Terminal as on, ExternalLink as or, RiUserFollowLine as ot, install$8 as p, ShoppingBag as pn, Clock as pr, SiOneplus as pt, RiHashtag as q, Image$1 as qn, FingerprintGenerator as qr, differenceInSeconds as qt, L as r, union as ri, TriangleAlert as rn, FileExclamationPoint as rr, RiThumbUpFill as rt, require_heic_decode as s, Sun as sn, Download as sr, RiVerifiedBadgeFill as st, F as t, object as ti, UserPlus as tn, FileText as tr, RiStarFill as tt, install$4 as u, SquarePen as un, CornerDownLeft as ur, SiVivo as ut, init as v, Settings2 as vn, CircleEllipsis as vr, SiBilibili as vt, vite_default as w, Repeat as wn, ChartColumn as wr, o$5 as wt, install$15 as x, Save as xn, CircleCheckBig as xr, o$3 as xt, install$13 as y, Search as yn, CircleDashed as yr, SiApple as yt, BiImage as z, Menu as zn, createTemplateRenderer as zr, n$3 as zt };
157647
+ export { RiPieChart2Fill as $, Globe as $n, array as $r, Video as $t, MdFitScreen as A, Quote as An, Calendar as Ar, n$2 as At, AiFillHeart as B, Monitor as Bn, require_jsx_runtime as Br, p$5 as Bt, webassembly_default as C, ScanLine as Cn, CircleDashed as Cr, o$3 as Ct, tailwind_css_default as D, Repeat as Dn, Check as Dr, s$3 as Dt, tsdown_default as E, RotateCcw as En, CircleAlert as Er, o$5 as Et, FaCommentDots as F, Pencil as Fn, BookOpenText as Fr, m$6 as Ft, RiArrowRightFill as G, LoaderCircle as Gn, require_server_node as Gr, parse$2 as Gt, AiFillStar as H, Menu as Hn, clsx as Hr, s$4 as Ht, FaMusic as I, Palette as In, BellRing as Ir, m$7 as It, RiHeart3Fill as J, LayoutTemplate as Jn, defineTemplate as Jr, format$1 as Jt, RiGroupLine as K, ListChecks as Kn, require_react as Kr, fromUnixTime as Kt, FaTiktok as L, Network as Ln, ArrowRight as Lr, c$7 as Lt, MdLightbulbOutline as M, Puzzle as Mn, Box as Mr, e$5 as Mt, MdLocationOn as N, Plus as Nn, Bot as Nr, c$6 as Nt, sqlite_default as O, RefreshCw as On, ChartColumn as Or, m$5 as Ot, MdSchedule as P, Play as Pn, Bookmark as Pr, a$6 as Pt, RiMessage3Fill as Q, Hash as Qn, any as Qr, WandSparkles as Qt, FaUserGroup as R, Music as Rn, Chip as Rr, o$8 as Rt, rehypeHighlight as S, Search as Sn, CircleEllipsis as Sr, SiAnthropic as St, typescript_default as T, Route as Tn, CircleCheckBig as Tr, o$4 as Tt, AiOutlineVideoCamera as U, Maximize as Un, createTemplateRenderer as Ur, m$8 as Ut, AiFillPushpin as V, MessageCircle as Vn, twMerge as Vr, n$3 as Vt, Markdown as W, MapPin as Wn, resolveTemplateStyle as Wr, zhCN as Wt, RiHeartLine as X, Image$1 as Xn, number$1 as Xr, Zap as Xt, RiHeart3Line as Y, Info$1 as Yn, require_protobufjs as Yr, differenceInSeconds as Yt, RiLiveLine as Z, Heart as Zn, _enum as Zr, X$2 as Zt, use as _, Shield as _n, Clock as _r, SiHonor as _t, drawDither as a, string$2 as ai, Upload as an, FileText as ar, RiTrophyFill as at, install$14 as b, Share2 as bn, CircleQuestionMark as br, SiBilibili as bt, install as c, unknown as ci, Timer as cn, Eye as cr, RiVideoLine as ct, install$5 as d, NEVER as di, Star as dn, Download as dr, SiVivo as dt, boolean$1 as ei, Users as en, GitBranch as er, RiShareForwardFill as et, install$6 as f, Square as fn, Crown as fr, SiSamsung as ft, install$11 as g, ShoppingBag as gn, Code as gr, SiHuawei as gt, install$10 as h, Smartphone as hn, Copy as hr, SiKuaishou as ht, qe as i, record as ii, UserPlus as in, FingerprintPattern as ir, RiTiktokFill as it, MdInfoOutline as j, QrCode as jn, Braces as jr, p$4 as jt, react_default as k, Radio as kn, Camera as kr, a$4 as kt, install$1 as l, ZodError as li, Terminal as ln, EyeOff as lr, SiXiaomi as lt, install$9 as m, Sparkles as mn, CornerDownLeft as mr, SiOneplus as mt, G as n, number$2 as ni, User as nn, Gauge as nr, RiStarLine as nt, require_jpeg_js as o, stringbool as oi, TriangleAlert as on, FilePlay as or, RiUserFollowLine as ot, install$8 as p, SquarePen as pn, Cpu as pr, SiOppo as pt, RiHashtag as q, Link as qn, HtmlWrapper as qr, formatDistanceToNow as qt, L as r, object as ri, UserRound as rn, Gamepad2 as rr, RiThumbUpFill as rt, require_heic_decode as s, union as si, Trash as sn, FileExclamationPoint as sr, RiVerifiedBadgeFill as st, F as t, literal as ti, UsersRound as tn, Gift as tr, RiStarFill as tt, install$4 as u, toJSONSchema as ui, Sun as un, ExternalLink as ur, SiXiaohongshu as ut, init as v, ShieldCheck as vn, Clock3 as vr, SiGooglephotos as vt, vite_default as w, Save as wn, CircleCheck as wr, r$3 as wt, install$15 as x, Settings2 as xn, CircleFadingArrowUp as xr, SiApple as xt, install$13 as y, ShieldAlert as yn, Clapperboard as yr, SiGithub as yt, BiImage as z, Moon as zn, Button as zr, c$8 as zt };