From 479e8c9d256b111ccb4bfd73312aba2df523beba Mon Sep 17 00:00:00 2001 From: idranme <96647698+idranme@users.noreply.github.com> Date: Sat, 9 Nov 2024 22:21:04 +0800 Subject: [PATCH 1/7] optimize --- package.json | 8 ++++---- src/main/main.ts | 2 -- src/ntqqapi/hook.ts | 4 ++-- src/ntqqapi/ntcall.ts | 38 ++++++++++++-------------------------- 4 files changed, 18 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index 2be116a..9b1837b 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "cosmokit": "^1.6.3", "express": "^5.0.1", "fluent-ffmpeg": "^2.1.3", - "minato": "^3.6.0", + "minato": "^3.6.1", "protobufjs": "^7.4.0", "silk-wasm": "^3.6.3", "ts-case-convert": "^2.1.0", @@ -35,14 +35,14 @@ "devDependencies": { "@types/cors": "^2.8.17", "@types/express": "^5.0.0", - "@types/fluent-ffmpeg": "^2.1.26", + "@types/fluent-ffmpeg": "^2.1.27", "@types/node": "^20.14.15", - "@types/ws": "^8.5.12", + "@types/ws": "^8.5.13", "electron": "^31.4.0", "electron-vite": "^2.3.0", "protobufjs-cli": "^1.1.3", "typescript": "^5.6.3", - "vite": "^5.4.10 ", + "vite": "^5.4.10", "vite-plugin-cp": "^4.0.8" }, "packageManager": "yarn@4.5.1" diff --git a/src/main/main.ts b/src/main/main.ts index 120f7ba..4a72919 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -35,7 +35,6 @@ import { NTQQWindowApi } from '../ntqqapi/api' import { existsSync, mkdirSync } from 'node:fs' -import { checkChanelId } from '@/ntqqapi/ntcall' declare module 'cordis' { interface Events { @@ -185,7 +184,6 @@ function onLoad() { if (config.enableLLOB && (config.satori.enable || config.ob11.enable)) { startHook() - await checkChanelId() await ctx.sleep(600) } else { llonebotError.otherError = 'LLOneBot 未启动' diff --git a/src/ntqqapi/hook.ts b/src/ntqqapi/hook.ts index 59e9c2c..66fe858 100644 --- a/src/ntqqapi/hook.ts +++ b/src/ntqqapi/hook.ts @@ -1,4 +1,4 @@ -import { invoke, NTChannel, NTMethod } from './ntcall' +import { NTMethod } from './ntcall' import { log } from '@/common/utils' import { randomUUID } from 'node:crypto' import { ipcMain } from 'electron' @@ -40,7 +40,7 @@ const callHooks: Array<{ }> = [] export function startHook() { - log("start hook") + log('start hook') const senderExclude = Symbol() diff --git a/src/ntqqapi/ntcall.ts b/src/ntqqapi/ntcall.ts index 0e1c64e..431937b 100644 --- a/src/ntqqapi/ntcall.ts +++ b/src/ntqqapi/ntcall.ts @@ -1,6 +1,6 @@ import { ipcMain } from 'electron' -import { hookApiCallbacks, ReceiveCmdS, registerReceiveHook, removeReceiveHook } from './hook' -import { getBuildVersion, log } from '../common/utils' +import { hookApiCallbacks, registerReceiveHook, removeReceiveHook } from './hook' +import { log } from '../common/utils' import { randomUUID } from 'node:crypto' import { GeneralCallResult, @@ -17,8 +17,6 @@ import { NodeIKernelRobotService, NodeIKernelNodeMiscService } from './services' -import { CategoryFriend, SimpleInfo, UserDetailInfoByUin } from '@/ntqqapi/types' -import { selfInfo } from '@/common/globalVars' export enum NTClass { NT_API = 'ns-ntApi', @@ -110,38 +108,26 @@ interface InvokeOptions { timeout?: number } -let availableChannel: NTChannel | undefined = undefined; +let channel: NTChannel -export async function checkChanelId(){ - async function testChannel(channel: NTChannel) { - await invoke( - 'nodeIKernelProfileService/getUserDetailInfoByUin', - [{ uin: selfInfo.uin }], - { timeout: 1000, channel } - ) +function getChannel() { + if (channel) { + return channel } - - for (const channel of [NTChannel.IPC_UP_2, NTChannel.IPC_UP_3]) { - // const channel = `IPC_UP_${windowId}` as NTChannel - try { - await testChannel(channel) - log(`check channel ${channel} success`) - availableChannel = channel - return - } catch (e) { - log(`check channel ${channel} failed`, e) - } + if (ipcMain.eventNames().includes(NTChannel.IPC_UP_2)) { + return channel = NTChannel.IPC_UP_2 + } else { + return channel = NTChannel.IPC_UP_3 } - availableChannel = getBuildVersion() >= 28788 ? NTChannel.IPC_UP_3 : NTChannel.IPC_UP_2 } + export function invoke< R extends Awaited unknown>>>, S extends keyof NTService = any, M extends keyof NTService[S] & string = any >(method: Extract | string, args: unknown[], options: InvokeOptions = {}) { const className = options.className ?? NTClass.NT_API - // const channel = options.channel ?? getBuildVersion() >= 28788 ? NTChannel.IPC_UP_3 : NTChannel.IPC_UP_2 - const channel = options.channel ?? availableChannel! + const channel = options.channel ?? getChannel() const timeout = options.timeout ?? 5000 const afterFirstCmd = options.afterFirstCmd ?? true let eventName = className + '-' + channel[channel.length - 1] From 33f340ca81a4220cfa50e3769248d7bf2853087a Mon Sep 17 00:00:00 2001 From: idranme <96647698+idranme@users.noreply.github.com> Date: Sun, 10 Nov 2024 14:18:09 +0800 Subject: [PATCH 2/7] chore --- src/common/utils/file.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/common/utils/file.ts b/src/common/utils/file.ts index 5256ab6..bd77aa2 100644 --- a/src/common/utils/file.ts +++ b/src/common/utils/file.ts @@ -27,9 +27,10 @@ export function checkFileReceived(path: string, timeout: number = 3000): Promise export function calculateFileMD5(filePath: string): Promise { return new Promise((resolve, reject) => { + const hash = createHash('md5') + // 创建一个流式读取器 const stream = fs.createReadStream(filePath) - const hash = createHash('md5') stream.on('data', (data: Buffer) => { // 当读取到数据时,更新哈希对象的状态 From d3f93257ce107577b7b2870436d04690c0bed4f3 Mon Sep 17 00:00:00 2001 From: idranme <96647698+idranme@users.noreply.github.com> Date: Sun, 10 Nov 2024 16:59:58 +0800 Subject: [PATCH 3/7] feat: `get_stranger_info` API adds `city` field --- src/onebot11/action/go-cqhttp/GetStrangerInfo.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts b/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts index 35a403b..8509a12 100644 --- a/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts +++ b/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts @@ -12,6 +12,7 @@ interface Payload { interface Response extends OB11User { reg_time: number long_nick: string + city: string } export class GetStrangerInfo extends BaseAction { @@ -33,7 +34,8 @@ export class GetStrangerInfo extends BaseAction { level: data.detail.commonExt.qqLevel && calcQQLevel(data.detail.commonExt.qqLevel) || 0, login_days: 0, reg_time: data.detail.commonExt.regTime, - long_nick: data.detail.simpleInfo.baseInfo.longNick + long_nick: data.detail.simpleInfo.baseInfo.longNick, + city: data.detail.commonExt.city } } else { const data = await this.ctx.ntUserApi.getUserDetailInfoByUin(uin) @@ -46,7 +48,8 @@ export class GetStrangerInfo extends BaseAction { level: data.info.qqLevel && calcQQLevel(data.info.qqLevel) || 0, login_days: 0, reg_time: data.info.regTime, - long_nick: data.info.longNick + long_nick: data.info.longNick, + city: data.info.city } } } From eabee466bb07441ad70e3dd29ecb45fad3108499 Mon Sep 17 00:00:00 2001 From: linyuchen Date: Tue, 12 Nov 2024 22:09:50 +0800 Subject: [PATCH 4/7] =?UTF-8?q?refactor:=20=E4=BD=BF=E7=94=A8=20napcat=20p?= =?UTF-8?q?acket=20=E5=AE=9E=E7=8E=B0=E6=88=B3=E4=B8=80=E6=88=B3=E3=80=81?= =?UTF-8?q?=E7=BE=A4=E5=A4=B4=E8=A1=94=E3=80=81=E7=BE=A4=E6=89=93=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron.vite.config.ts | 1 + manifest.json | 6 ++++- scripts/gen-manifest.ts | 4 +++ src/main/main.ts | 3 +++ src/ntqqapi/core.ts | 5 +++- .../external/crychic-win32-x64.node | Bin src/ntqqapi/native/{ => crychic}/index.ts | 6 ++--- .../Moehoo/MoeHoo.linux.arm64.node | Bin 0 -> 1301752 bytes .../Moehoo/MoeHoo.linux.x64.node | Bin 0 -> 129696 bytes .../Moehoo/MoeHoo.win32.x64.node | Bin 0 -> 134656 bytes .../native/napcat-protocol-packet/index.d.ts | 16 +++++++++++ .../native/napcat-protocol-packet/index.mjs | 1 + .../wrapper-session/index.d.ts | 1 + .../wrapper-session/types.d.ts | 6 +++++ .../action/go-cqhttp/SendGroupSign.ts | 20 ++++++++++++++ .../action/go-cqhttp/SetGroupSpecialTitle.ts | 25 ++++++++++++++++++ src/onebot11/action/index.ts | 4 +++ src/onebot11/action/llonebot/FriendPoke.ts | 16 ++++++----- src/onebot11/action/llonebot/GroupPoke.ts | 16 ++++++----- src/onebot11/action/types.ts | 2 ++ src/version.ts | 2 +- 21 files changed, 114 insertions(+), 20 deletions(-) rename src/ntqqapi/native/{ => crychic}/external/crychic-win32-x64.node (100%) rename src/ntqqapi/native/{ => crychic}/index.ts (94%) create mode 100644 src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.linux.arm64.node create mode 100644 src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.linux.x64.node create mode 100644 src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.win32.x64.node create mode 100644 src/ntqqapi/native/napcat-protocol-packet/index.d.ts create mode 100644 src/ntqqapi/native/napcat-protocol-packet/index.mjs create mode 100644 src/ntqqapi/native/napcat-protocol-packet/wrapper-session/index.d.ts create mode 100644 src/ntqqapi/native/napcat-protocol-packet/wrapper-session/types.d.ts create mode 100644 src/onebot11/action/go-cqhttp/SendGroupSign.ts create mode 100644 src/onebot11/action/go-cqhttp/SetGroupSpecialTitle.ts diff --git a/electron.vite.config.ts b/electron.vite.config.ts index e6b320a..3e68669 100644 --- a/electron.vite.config.ts +++ b/electron.vite.config.ts @@ -39,6 +39,7 @@ const config: ElectronViteConfig = { ...external.map(genCpModule), { src: './manifest.json', dest: 'dist' }, { src: './icon.webp', dest: 'dist' }, + { src: './src/ntqqapi/native/napcat-protocol-packet/Moehoo/*', dest: 'dist/main/Moehoo' }, ], }), ], diff --git a/manifest.json b/manifest.json index 28e50ec..2add6a2 100644 --- a/manifest.json +++ b/manifest.json @@ -4,12 +4,16 @@ "name": "LLOneBot", "slug": "LLOneBot", "description": "实现 OneBot 11 和 Satori 协议,用于 QQ 机器人开发", - "version": "4.1.4", + "version": "4.1.5", "icon": "./icon.webp", "authors": [ { "name": "linyuchen", "link": "https://github.com/linyuchen" + }, + { + "name": "idranme", + "link": "https://github.com/idranme" } ], "repository": { diff --git a/scripts/gen-manifest.ts b/scripts/gen-manifest.ts index f90eb74..01eff1f 100644 --- a/scripts/gen-manifest.ts +++ b/scripts/gen-manifest.ts @@ -13,6 +13,10 @@ const manifest = { { name: 'linyuchen', link: 'https://github.com/linyuchen' + }, + { + "name": "idranme", + "link": "https://github.com/idranme" } ], repository: { diff --git a/src/main/main.ts b/src/main/main.ts index 4a72919..2c2339d 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -36,6 +36,9 @@ import { } from '../ntqqapi/api' import { existsSync, mkdirSync } from 'node:fs' +import { initWrapperSession} from '@/ntqqapi/native/napcat-protocol-packet' +initWrapperSession().then() + declare module 'cordis' { interface Events { 'llob/config-updated': (input: LLOBConfig) => void diff --git a/src/ntqqapi/core.ts b/src/ntqqapi/core.ts index 54b7e15..ce866c8 100644 --- a/src/ntqqapi/core.ts +++ b/src/ntqqapi/core.ts @@ -19,7 +19,8 @@ import { import { selfInfo } from '../common/globalVars' import { version } from '../version' import { invoke } from './ntcall' -import { Native } from './native/index' +import { Native } from './native/crychic' +import { initWrapperSession, NTQQPacketApi } from './native/napcat-protocol-packet' declare module 'cordis' { interface Context { @@ -40,10 +41,12 @@ class Core extends Service { static inject = ['ntMsgApi', 'ntFriendApi', 'ntGroupApi', 'store'] public startTime = 0 public native + public ntqqPacketApi: NTQQPacketApi constructor(protected ctx: Context, public config: Core.Config) { super(ctx, 'app', true) this.native = new Native(ctx) + initWrapperSession().then(session=>{this.ntqqPacketApi = new NTQQPacketApi(session)}) } public start() { diff --git a/src/ntqqapi/native/external/crychic-win32-x64.node b/src/ntqqapi/native/crychic/external/crychic-win32-x64.node similarity index 100% rename from src/ntqqapi/native/external/crychic-win32-x64.node rename to src/ntqqapi/native/crychic/external/crychic-win32-x64.node diff --git a/src/ntqqapi/native/index.ts b/src/ntqqapi/native/crychic/index.ts similarity index 94% rename from src/ntqqapi/native/index.ts rename to src/ntqqapi/native/crychic/index.ts index 843e1ef..aa8670d 100644 --- a/src/ntqqapi/native/index.ts +++ b/src/ntqqapi/native/crychic/index.ts @@ -1,9 +1,9 @@ import { Context } from 'cordis' import { Dict } from 'cosmokit' -import { getBuildVersion } from '@/common/utils/misc' -import { TEMP_DIR } from '@/common/globalVars' +import { getBuildVersion } from '../../../common/utils/misc' +import { TEMP_DIR } from '../../../common/globalVars' import { copyFile } from 'fs/promises' -import { ChatType, Peer } from '../types' +import { ChatType, Peer } from '../../types' import path from 'node:path' import addon from './external/crychic-win32-x64.node?asset' diff --git a/src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.linux.arm64.node b/src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.linux.arm64.node new file mode 100644 index 0000000000000000000000000000000000000000..73d9a012bc3d7ec64fa973e6000def17545fe294 GIT binary patch literal 1301752 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 _Eud4ons`^?5b#H%vQC0mVRrQxu)z_)2zoM%C zs;c^HDQ9{o^G*J1eahuAO)lyRzMgW1`@89Xypb|p(Ra(=z9U8q8*y6d$SG4&%L*n> zPc11cFD)r7sYBv$>fPA z1Oor4b6G`6Rq=l>6sQYk;`(%?*U3!Yh zV2f%XP*hMdp|G^Vu(G%+P*hT7(#s1b8&;NA7K^8qmE%nas|v07Of9fjP*_-0P*pIt z*!H)eu&T7ewdkj9TV8v%=`^|p6Dljx{N)|nuHfXm_3eCr{q(5%#`e`0+h1R7w|+^H z-`zk#SwV?E!L=PdJKxo_ZC9_XaKc0pu%;7wg%b-S?a5WelL@)>I!*FzTfA~@h9V*# z+s*f>5x=tHY7{Ectm2++75D56%O|&d&qzBxs(!ki;FM2KciOkwOHa21y?jg1vwPY7 zamt?*Wk-UmzmV|G|G>vl0IL znvF>JH5-xcYc?YNAL5_>5Ajd`hxn&Q$G>WNd9kyBNIxyxTkn=Fy_5aP$(LUFY~Oxi z$~zl~If_{Ol$~zxOjd@g=WHndS>9^sKhq_A_AVQtFX1~-dX&FW{joP3&mT+Pvn^TA zwl*Bkwl*Bkwl*Bkwl0-|&4}_hBg)^5D1S4e{B@hR{p}g$Z_g-yUH9zru6wrax@X(2d$#Sm zXWOoOw(YuS+a;4PwgX1|Dk}z-}9;k0enJ==D}Y1^)QwjD7aswSFqU$dMfA3I_`i0zNB*lq{y z@@@xg+wFjDyB)A?w*$8AcEGmX4%oKa0o(S+3x6W!gV<62M$8AvkMcKSK1hC)zY+66 z@}vBXm=BU4<*yqqJH8R~f$|aaLF}mhx#6_yyYAVx8&2DH-Lq{soVM+{XWNnUq0((V z5GX9HP>uUQg%v$zdD-pB{UMV+eqzDYs!5eq1yxi1>#=D3L{1RB zx_28t^x+`U*Nu_HFd;)-bnMZR0Y*c=@^7qBOImeikC#sS#f0BzfypSGRh1lYFS zfMSTqcwkPb>76C3dArw{B*q2PT%8VX}`VfxyJ_LbIx!1J1zC)SVm-+1p6H9z%U{YjpvHisZlggbQO0NO|j$q=J+inR*(t`3d zcL#TDX8;}B89>K&2GFw8qw1$uMAlDtcNC|5ME%N%CF$1i1SEfaxhv<`j-0Xm6H?0C zwh6V^MZPB(Vi!*-aRnXQ5fpn85Br<~u5A|(yQIL$4Vd<^o$8i7v7)?qvb6+Ed1G5e zBJG~0e0iDOS;j;1E6O8n!ja~rNWL#TrhH|Eob6gu&*U518dA@;W?o6*BzJtJgky_$ zemf(|mhtiOt?~8Sk@cKR7h8LnWSjQclkC-L*{lV-HOsc14VmJme5tknyY;c1 z=AC@UeaCj1cWl}J{q<$T_S=qWmv`lC+m*9zSI)LwIop=~-|xR1|NOS>|9)GJf1b^T z>IOu{tGdh!kg$k@8r5&l;GLpzuI>p8z|zug$vc0`|PC!(*m z?fPchG7(IlZQDJsux zP{MO$-{CFboMx0xsbItO#udBRd%7J6VB@M+0NXiqOEZ#R=`SDkI62_h)@yMyMpZ4V@0qU<;%whW@vfY|>1PHcaZVpo>A-8Jo1mm3$1q~v3Z3x3;e z($04`EZcTBEZcTBEZcTBEZcTBEZeU3+VguW@tEp6+IqIzf9^g+#1A_ne%Riu3g3qP)`^#0VM=9b#CT(y>Eh^>+qvas@?6H131F9&lv$@% zQWo2~gJ4(0j?^hDESykMYIb6oisjh6hJc_oF|mtFilpa$TYB!=_InRj66M9VE*mL= z?THzE>pcQTvD|*|!CV=c^3Hn(j-G8xaQ*o*GyJy948JWi!*9#X@Y^yo{I(p*{I(p* z{I+G%AIqN%y92Imhs3p`{LP5+*W4NQ>6<&lemlxvb7$C}ALXyPGwjcg^4HuM_T}5| zxc#xi=h}AoT-$cXwe9e^w(X8<+u<{|_1xKur}g~U3ZTTxex7U!c(xTl&$c}FY|CTM zwmkN1%VW>BJoaqMW6!oc_UtHs?E!c5Gpqsk>?nWj0r&Ew{Iv(%%a8Kc9&j%|%3piH zz5FPD?E!c5ee=)6+qYhf?OQL#_RT+I`__xGee=)Q?t0-UXWom#ANHK`GGjZpk+91m z_Sy2XDbf%pn0goaaLF~!?2Cy$HnJlLsmILKc?+KKbO|v!-yM(b#0Ih`bit(JO z%G$6tY|plOXxZM8$Fu$UG8g^z#rEgRWbo&U?a!CV;m;S_pD&ZepD(sQ-^~tK{<+zf z?YZaKR&~qv-1BUIzUQ8m@408$o_n6{uP<}ka^K1q+n+CU-JdVEKVRm)KVNKrzN`g* zzS#bJFWYM0%f>D?@08fpUE8jX&3Qq@{BUfmgq81~ACfP&Ki?YwtGs`HNO^AntbG6c zkbG|dtbA_(EZZ9Z&-S)=7(+j^&{p7`4RI2J7Rv=w!gj?9?KsuJlGMpIX&C1Ur}5gv42%ej5ys3 zRM_`yEN0kt&p^fGq6*o6g%y>sntjOUhhy8#xcScYfVE5a3{?7WYN6-ac16c_bR65$ znN~G-^MNZUM)3{qxt?v0TTVG~SA|NvPtw zyx2R81;qA+!L^+R?0m;`^4)$`l@n*#7wqG@u`A^5IxE50u0=njystsWb{cSOr-7=9 z@#714qtB^=9U*`nab1O7=3gM#5!YGR5go>^s+j1g<6lK#L16*!d)ou!*j6;X{B)fLq?~kZao=a&7C+2;BD4tv@GlZ8sjaz84S6KfAhH-mdQ2)?X!f{#t*P;Mvw+ zCwTU${{HfS%r-4O9(YCDP65*&d0-YKd0-ZmAK^dw5&rXlEUG=Hy5o;i-LakO zj_q{cv7PQaw$pvbcDiqD_c=UHNdKmqM^u(a*yG2`Uh4IyurSIl;T{qtOo%97Xxk=4 zw(UmPwY~Wx<=qIl`QH4o^1b)*=v*1u(Y>)*1y^*P=XuM&I1xBy{Fu+19gZNx&}W z7Pv){#Wn%9iaWMHp5_d}&UW(s@sxaLIyw2ybaHHGIyts8os3;EQT7+B1@Wh1N})4- zB>z$`*Z5yy&TZ`jIQh11x$N220C=|LvS(W^d$#4WXIn0Nw&k*CTZbUewhlqAZ8b0c zTmEHO6UMWn{LP5+HzUg5j3|FIqWsN>@;4*OU-MUzzW8NC`RmP3%io?+{`QRW*PFjq zd2jw&wl{w*+nc|ZZ6Cqic-Tj9V>1_EW$~rO?ndX@_RMr`FV2*&;E#5zsqNI~Wd?iV zO8H8j1UMUqW7~43J;}G_T-%xGPI+gdJGL{?9ow1cj_piz%jR!6BmAlKA2;x?GOB%^ z!9|siY`?N1vi(Z`zHRg(+AlBUo}4?bm6gVJ$JMs22pE4&zB>=?e0Lt&wmT1P+ntBD z?ao8q%PB2&*0SjHuB0@>OQtd->Hx9JYOW)kTg$8Om1| zRq`IFy|aj2;uv;*NlCGrV)Dynj#w3p?OK)|m!$5Aq2xQZM9{IF3G3Nzd`)@h#L&xk z<7?-;@wII?zP9bg*S4MbM%;eIAKSKu)3t3gP{r#dEGU+Q|-7M`j1O`OQFbUFejr zwBGb`DpXfGSKiiy!lp;Q@{!qr>d5TC<@WWwO-I&F&#>8(_llX-G*LO-YNx!ks5JeO z;^K143>cejia&)nAF(r{@-w3Hdq(B=jL0vE(#MX-Z-h zTfkRf9DEhZKd5505PGV>H1ndN# zgemYTm<*qWN$?q%2tS0Pu^CExA4B>41jX-tQ1pL=;`d!$0s;OD+{6Dm!j&)tKY-%H zM^O5)1&ZI>UYpU!cTd4wXcAl~m^Q zfL-3Q@R3d|#b^bm!PZdv8xQ5&xGlU19t103d)OCtgmS8p2+xDb@GO`D7r{<&D(noU z-(6q{JQ&^p4~6nCI~)V^;Bl}IJRV*EPlVYp9p=KGP)>DDg6G0hp!~Zpy~1ZA9WhO&3u0&j-5!Af{L><8z=(_k$e1sB3h zSO*uwMX(w!hBCfO;KgtmoCEKKvR6F-2f&A*{M#>&zzgAHFb6&k`@<*U>F{ZIK71Bt z!8LFRd=6d)pNBFpUx1gu7vYWYWq2u!>1NIAAUp=UIXo1$fG5H@DD$-yyb88~v9K+i z2iw8BVS6|TCc-f=1IkA#Q7 zqu>efXebARW8hGDJRAqp;Xrs291VLzSqG=W%V8fVpEKZGcqUv9XTi?!8h9+c4yMBE zVH%tRW!>BeuZDA>tjk;A?eJE354;@?hPCh_SO??aA~*vsg+aIs-U^q)6>tSS7~TcD zz`Nmb@E&+PTnUeW_rk;AeNfJL?uTrJfd}9)_y{b3kHaDGX*d?Hfvw$hjfuu=HCC&M0=_k;Dv?;NbHf3*=xOLL=gil3q(eo7hfL1HKVNmv6Buze& zCLi%je3mwyG=7@$VvB#0?~I}NDq8aKYf4!uCu#CKIFma3h=m7}(HypgEnqHe346gd zup4X(L$Dnj1P_9z!vy#p>;M~J2p$O&VIoX|gJCl413SYuwA&RPg?%tgf``B%@KAUL z>;{j9N5W)y6dVeVhG)Vausb{+roa>6FnA(73ueH!w9^Y7gMAY01W$(f@D!K{`@m!2 z8L%@v6Ap)G!7P{ykAr<-7uXMufc;@M91MHFA+ReP3eSeaU=AD!4}s^vcJN%-7oG=C zf}`P~a11;MUIhEWvG8PA1XE!#On?($e>f4I0!!gxune|`lVKj50(-+McsQI2JHTo< z0A2=9g)`t0@JiSbUIhojtKn&ICj1f3hV6*wTzC*%3R}aKFoXOzu4N41d+>PpD{KQ} z=5S8XjQIxF!C1HiHisv|7H}MF3CF`YI32cvSHRX#&hgv8rLZkbgY94eJO~!T1b8{@ z0OcAW1ed`?m=2TRxiA?P!4&u$>kvN5iw>7hSM0Nw&Wgb%`ccqQBhZ-v|8LvRyd+aP253^wm%z^(VKNt4L?h6OOe()^VALhV(*Z~fQ zZQuwPglEG)sXq>O#4dns;ds~#7Q(;CFM@g4#c(j305jo4mrc24o(}JXec=6YDtru9!)M`T@MSm+z5$Pg zZ^BFAd+-?eKCFNr!`^T!tc0J!Q{iW@3VsbQf#1L*;g7HsHo&9cuP_<@29Jh+!_#0G zc87A&Rt{p|?Jx+RfU!`ncbmgH*aAKWUAvhf-!o@HNz5r7oAq{kb55msy9oQ9K4iAP);304=OocbW!{9^kaJUh6gK~X% zBwPlMf-k}Dkgf-gfe*uD;k&R0lN)e{tKk@zeivOd=K`5SHY9uo$zG1 z4)%t(z*FI)@HF^7>;tccXTTNkO!x}Sgtx*h_!!KFn_w=S3H!pkU_baO%!9YV0dO@O z2tR;>;Vd`=-VKMs*I+)p6b^@Xz!C6CI1*k1&w=;AbK!b83Rb}L;e2=jdUycbS@Z@@{g3YI{*-n$q+154p`ungV@C&M>kIh+bF zg$rN>d=^&08{ky93Rc6n;51kbr$f1py&SHAGay@e;7a%ayb8VzXTnS1EI1in13!Xu z;5>LEd>q~cKZNt(6eyWr%Dx15!#Ebnzc>#}h3T+6Jke$v?7f1$7|tYkWmKQ}uywyr zCQT#hu`m{$=CB!T0iP6IxRd-=@Dtb?z6aysyRZ%X7`BC5VLMn44}#lZ0(>8~hnrvr z_yOz)KZGIp5ln=eVG`U9li?Pa0$bomC)g5phH;Yef$HR3n4Za4`;d+<>Ux&Tn8}L;4COi#pfHUDs_%RD&2CjiYeq0Bi zBK>+e6?-21rWt!1d=J*Z_sL%X--5CTKOj8@Zh=Ag8R>Cw64|ZbMA#Z$4C7%5On~EI zdsqNFz#`ZY7Qz%b0d|7LP!{ip=*GbFW6+1&uoK`W*a5a8y(3J(4#9f-NrQ_?p95o& zxe>;}dGKP=>);r;2wntNzyf#|90%`)CGZ|N7OsSo;Jt7nybn%*tKfL}04#(L!Xo$( zEQYJ$*Fn|-{0hqEGMV&N@HXuB@Nt+4Z-H6xF_;UlfPLXImPK8t9LO2ax2B*VCa0Z+XuY^nB3fLZQSdTC8EqF0}8%}`lz)5f; zEQasGBKRIGf$zhKa1-nZKY$_l5ln`!M(gJRI(ZN5IcvH@F`j4Znol;m`0G_!B%1 z{tji+-`0$I51*%N z-T(){IdCAn5e|Yk!Smrfcp+Q@$G~OqB6u?#3zx!iZ~-iUcfj$m1{T6wU=h3(7Q^Lm z0$d0u!a6t$hUxZf_yhgC4$9{S_?q_m7jb`so)oeV#Psj!0d!(bKc z4oAUb;CXP@PWF1reGa?8FJNc*CAROR53hy)g4ePZcr5%D9tXdJ2g85CL*V!DQ1}B(g+Ic>U;{iH?uGfV5uOKsf}`Ni@O-!rUI2fA z7s6lRX!si(1NXy=;O}rO`~wb$|Ar&rpYUw>7aR%yhUdUAJQoH&WA6bm@LL#!zryBl z4{QN{feG*@*dG1}JHWj#1^xv)!QWwL_-~jA4`zI`V0V}ed%_%e63m4s!@lqo*bnxG z{o$!F51s}Gz|-MCcnBN>4~2taDjWh2gG1rra2PxS=EH7qI6M-LfJecz;n8p;JO-Wv zkA>&LSPA>V zDwqeS!U3=v4uqG%L2w!z45z~(@Nzg5UIB-}889DS35Ub0;MwqMm;?j6_>bd4ENqV5 z9Da&D6RyLa1*O;=cm?~=jqrPT6KoD|hS$Kk@M?GqoC$A*SHauhbT|)wi|*}k6TAan zPI@hTj|LXNciKZh}JD-4QFejNN7yEXg@Ccw{N8r%&t;FoYFY#oDt za0a{uUI_zVu+O6t124pmgWIuF;8xfPegHeede{Yi3}?a5C_e|bK;}l+8qR~Iq|b+6 z&~6>9#9j^e1S#+(V~rgPXTer*9_j7j6EG9r3bWv9m5P1ik<-hL6BY;G?h;j6G0d<~ui*Ta+H>+lr#2J8*rgr~v{ z@HF@qJRQCbkB9HT6W~U8B77I7!S`S~d>>}OO|TFA0Or6CVJ`d#_Jx~aKez?85E1_#0I@C>*Eo(Xrtv*0H%6MhP_;Ab!!Hv5KSH;je*U~?!_ss;QGwuHaI zI9Lx8AcyQgd&sF(pac8_ra-28pcDK8c7`m0Kq~wk9tPQ(1Bb(1ushrVkAd6Zv5-^3 zz)TMIFEcLJz-ElsJh+E>dpmp|E`V>7FDD5fV#mObVG!<;be#SO#=r}xKL<7^`9|0Z z&V!ebz8Zcb<^RPT!QSvaa}zt^2hy=qU^}wA!+qFtvay|ZX2AgV4RAf>;~FSWQUd%L zwuk%|=)nIPVG8^kc7lJv&hSq-larQLs6PuL8<+!M#J&-3fH%Pwv@;KWM}Y-!Bk7Ca z58@Bvo2B3I3)0)bX{5J`0!YY4Av%l-p5l2#9Q!IXIo;eBu%Oo?NUfN5|I ztbx66ryfkXqanN(rovbzL3g+xPO3qtHF~uT;obxzZ(&2Y3MMRS2(N*?mo*AN~JSKZ$bUJ5s?qCR??9%u-!fU6#)UK{L(8p1Q+s)rlG zYhnGP4dFeax4I$RhDkQ+3H*lh)>0qNd9fk98m@rr;i{J?cM$q86|Q=vAv_7Dz19$} zgT3Lya34990fPPQn(+^grj<(3)jF^a2H$)hV$V(SOho0 zX>i<$d&6_#Ot=EBf@@%A+TQR^I128C^I+&O+J(K~UN{n_rV~H7BEB)aH;wu*Hl6;2 z8pBm^R7zub1Ka@jz_>1r;T{>Z2S>v4u8rZjFz?{T@Oqek2=#lCe`sSk69x`L2c{j~ z7+x**QH|k!a2M>+OXAuXo&?7o+ZdMj;?^D47~T(iAKw`6ev1y&A)-#6GDpyc=eo+!*e93c7G49Cb=#cs2~2+8AC3 zSHRfblsm04oChbJPCGE=4Ehb{o!J=v9_~L2e@-P1S@;9%a%cz6xu`MR?KI-{1O0%L zerycSgLB|YxTyhu;a<20#_eqk{|TqTUZ>MO%!8ZYB$&|H7@h$$;XF7Ku7vC08kq7^ zV|W)#+edu+pbKZf@?VHATn*R5xL+H?^>7}HJA-lltufpi&e=~pFz`F|;7qt0u7K-d z+8@Lfj)HB@Bp;^26|gtl1qZ|Ye>aB5!D+Axu7Pvlsz2!`jQguG96AfXU?!}Gr7-jF z#&8{61=qubF!K&hgIzPxfqme9I2tAdehQbva<~-M!woPq=BMyJxC*9bQ7-sXcrcs> zr@=LFE|d?47xRg^d_*92+95Gr+8k=qQb^r=1N*I=FXejh-Ah`got6sach@=W|1gl% zE_GS#@@CodgF`?4G_go*UgIJ`$sR z(n6#;ea$4Th_n>^miwvrFm73!AO=rYhm#G)?2f@1arM2*Rrw88^T@vK1lPq z(z0q%;<&sw1+wUTCWg6+Je7h63KAb1UzR$*y)oyjn zvZUpS*$Wfu4$7Gys_8g*LHpVc*^ApQYL~S%eo33)u#dN7ZQqu)bH|`hKiOJuf=V4J zS=(Vjd#Sdl-Qu=O+ANJ1oqk(B-nMc5~%ZP!6{ofdY^ zTAaKnC3p$LSHG1J9Mt-gPj^@$?qAz=L6?P{>pCq;S)AOzwNoN1e$>|bZQJ`}`wLvS z&LA zd%)PoIC$FYG}l|5vReAeN(r9(pK;7ZL*AcB<634kjJ?NbtOzdaw)}|f`G?mWmc8(h zx`Xp-Qx_b%sO#b`OFA#@6r6@m)LO4XN8Yc?o6k9~=-lMf$rYVJQoY}TLu*rW>JDCb zNTCVzKp9wT8LbFPDQQO?MwOv68|hw$r2Uw?4nHz=E1Cnu&inN@9gC@ zG3PtGu(j5EQEm^{SaN^JDQ99LJ2pwFd`D5H>h6Z{CVv^(TkJBKl$k-9RIbr_aqWeU zwP)nW29PT|L4Ri($X?Q>+2uirRpjKAwX+V55Z7n>_>G1&_hs7W$YRTrRlwXILFH|} zm17ZV9tJ~D<0T%T?xO|EItv-WBkd9y>CZNi>+Id#n!w#ZrBY*Fl3vlOz$ z&JtUW1EbKXd5r5ne#=L+^SH6Gg0x*S$3EgjFRR_mm}Lpe56Yh3uBL5HZJP!03tQK< z%2^b*xaE=-OPdF8l0HWs3*@*d*V(si*7aUVfEq8H< zFS{u}?@8}C)s?jUq|GMH9JjOEB`garj~OVV!)G*KxjuiGe7WZ*el}Z{w*17t^G~Qb z{-OoP)%M6j{GvAF%>ayW zyUq3~o2HbM9duEf#qqM8j8WR!1HSP#Yu+3e`^m^p#ixk5)17L) z*}Q9>0wPs|k^FQjW<6cdO`tp&rmQUJx(wsd-@`^~?;43F(W$w+e)8(8o zklk)wYSywjvCD6W&90ptyWrZ`-1*nX)?61G?9VaQ4Xm{B6!ms(@Xj$)N!vi$X40nd zo0vFz_c=t*tS4FX-&02JC1qM=%$lb|X3a}ln>OrGaSq zb?OgXC+|RY)=;PF-T%H$DcavtC*{3{@NRog3(6@@UpZyTl~WVzWJk_khAvH9k~C)L zj=>S9OYLR`<#fn@7PBO2X`+Y>-LZ41{2s!3le*UUj^>`>JnqeH{EvR+NGt{}3=P{V zYtjh@9W}>^8tQfDUS6!VUzl}cpQkQ}2}=B&8iRem2l#$l*JV4=+4F&Q9>tvSu6=Uk z!Xam2ur9_7hI5h{FT1a|TFm)%Dzjtbhwhv)^D1Y4urDReyy7I+Tb0{}@Gv_>3xpl#1-IpJoUE6KJ5xMh^ zsyWhHgYFq0V^5v6)CqmeJxqSnzg;oQx-RdMJ+t$yPFdHaT$`LVJL$T_tm{KJbj+I5 z;g0rM%`+34XSK^}p53N-PV21ZxpB?=w#aJUFSdFAVBdAGWWD-Y*8118-gq->!-rWd zGFxP2wa9Lflhq=(Mc=Fz{aW6H&xo@BYn>!O?+|Iy`+sMErm4M z1LPxV<)n2bEmQi*XEop1q~&ep9=O$aGfug3$vL<#W?^u^f@Za`9N}^~pb~7kEN+)6 zxpFC+8<8TzDx)enS*;_g#B;vhH(J3do6CXmABA%4Q~CI8s@HGD-%P%}=}eFMhVV{) zN6syAH+Nx>^U~ZXRdLI?pf94@3^X>N(aSofdFS|rGP}(6zxRu4{9#+18v{A<18aj> zTjYAkD(C&Ws5W?Z>n&OF!{vY3TYAvWZrZ8ip0~^y*H?4xyfBzs(|mr5!J9woZ#JcN zW-f->Gmj}>XO%a8IrkaNinH1r?mrgfQ74!C=d#brhb9AZuU_u4J86ALD<^FpqBC_+d=;;`d_~ZHftAZw8QafdQL88q9UuPMJ#U+ESic zR((q>pVI*=6%nM+KnV$ig6H`z?Xuk8+3};?-?>zeA8uXXWq-6e%knA9@+r&mDa-Q7 zyt6;M1Lw?Lg}X`EV{kDSZOGoE>*&5#uPT-MBYbFDqfIoz1~X_VdVt1p_lq}4~IjUsJhRGN8q z6qPoUa!-*aI`R?LkhVIi+$z#mlID-`TDzRT?k3V6j?&vr+N!9u{kERJZX05|BC1>} zX%a7gxn88zMWxB}uNu;vxJvoaq|J#+D<^G6RN8FP%A?ZiNGpm;dziFQQEBT)8%&x% zF7oV6%E{QuM|{~sT4_|dKS`VBD<^wp0_QGsNgKy+=7Mt`Sra4Y()M0!{jkn)GAX~7 z^7gr#x&Ah{o#gV{+=LpsC^%*t$0_H;!t!St^+vbmd5g5ehv5j!C2b~Y^4s}{?*dHyHm_(<9e(sq$1I`WaUd8F-&Dz}of z%r=qb){r)mv@}!Gs=JZ2a?<>5>>_P#RN6k$;@U>)#nGv*QE6RCOC!xckL3Alt}jjI zOfG4oNXr*r{BvfA8v^H+yg4VVqWm<ntPj#_B*FIIJck(T zjeU2@jOMwpGdHDPAJWE=*4tN)XCFMju-nfqZmE_OZPQG)`Qtn#h$bEhPHNgnEH8p1Ywrt@=HnEH3 zzSXe$t^I`g9!)u4`QZ6dU^u6d!gK1kUSTu%nyola5(e7}J_gT`j1l!)haboVpDPzg zIj4p5>$gs~ZQ~m0Bg7`%*wFFB5WCsgL22Rq?b~vN7jO?mYM7pso0~tuC6a(ErZYq9 zx0<}Ow{JT~Dx9-@TX2vRARMNxbL+PTM@i0Tq-;8IF;1WqTqHF{)^9ZhX){l3yqzu; z2;kXb531j4e94o<3pl%wTQc!uogd|LGu+%kEQsnBfp)s*(6sD~*ah`lO?YYWTxp1# zT+v~PDDTvB=)}TAY>e^i645!^4l^MbBldaqTT6t@5aXu_#{{oDI!;6!I(|jd3@dt$ z?mzh#yh<9RW6=Wr?euD)_~4wPumEK4%hZ>LY`KzufO%pDpAJTIqLe>CN1P5-*!d>F zOddnZJN9@xKWK)U72sqT0pHsCCp%at3KTT6&!=oE5DBM6Gt_ucDCM1oD1Wusj%N-@ z4^FW&%Zxb-(oW6+7n<=So+{Zr^6+CyoUtiUS1E6!2w?wbRE)g>l=rO%>Y- zGUpw}AvjsmogO*qbR=k2v@gMU`c6#J^8Z0=Fl2gzjgJOo6qfgLmE*Ek}Bag@X zLV0Q~zq8Fc8Z2gCGsmqZ=VarQoCi6ky#G?VW9P`N_1V7E!CUJuFi&iPnZ8shJ95X) z!Oj^}-hWDsvGe36&QRa)Jm2pDRyB$^PUJX>6P+IyIY089A8ty2CuNBIi0|u|1DzlJ zoF7i3@q?Tcx3JuPjp|wUj-5IGnJQbAQ#*Uxc6sjXdcAGCnKvVtP*Nnm@78)V0Nb|> zb;^v3jH@SQwPcE$KxhBc|9xJ1wOx;0%A`D$%*f8jjoj$e}KXBRgpzM`$rM#%|4C*rHU%5(&BI5IUComS58ce$$7{e)4k2+1B%~OpqtjeK7sjk;JFQb&XzpZC@e^Phak9))N?^iJf z_OmE?3?;83<;bI`Y|{e z^R_t8A|;M-$Fq)p;ofOec-IPwU9MWMe;F zAMMslrHRxNc)sw5eNWlGH_G$>ni$@;lGtWaCYLgED3c$(A9(K>$jCU$Br85B?<;$z z%>6lN)cmY28h+!ex7V83vLDekds>>gwTbc@DZethZ)Ps~ z-(mO1$J!6tFc7_C8pA8Bwj%cANFU8R()N5A;QE_My?iuk{x3B0(WpUVFB;vgK199K z=^vk*x@HS`jh}M?#|cg%76s4UHqe)3-ecK==K5fx^Ui8S-{iT2^S)jx?T6BNA0xKW zSk#lFiR~d}N*r?WEi$%B4y__b7AZjY$6i+GwQqBwkPP z_cuntI`8X6THxtM_c@@f?>y3CNh_Cf{_`2LzWv8RZ+$0FbSCxsP|tZL^?%rV^SC#v zx_^J}_HLU(OQ&od_5lh6WEr49K#*x^OMn8y9@b8wK#&3>QV0kV7BxWCAd3OfCn#z_ zlwmc<77!t9Iw)$uiU9#5q7JASeN=vDa;^_F)AkF$*Y|n;`jVG&-Pikka^{>flgXYY z+qqh0p32lAoAfpG+1%thcd2$?weOy^t4or#RklQ~L$*|94VAgdlS@(;tL(XDvShoX z$pr3E-vLvQ?Ij-tTg{lYs(Rxt*>!`@1Sj7~b5tFlU3u@b(Q}d)+>^)6vy+FY2PChp z`AdJLK2o#nVe{@Q^UFSGNFIeI-4D)P$#2g0zR!ML?p&9=nJDMt*~|Q`KR?!1*Im?9 z-`h$$+iRJ}lWP43tFIpjsQ01Y`~2p=)ODKbI&N|ubxGF8+(~`DL1l$OqK}#BD$Cxh zzQdJd%f7#ve9$-Pcd$&!AG-cfRbN*1)pUJwDp*1NrK-NG>KE!`QqDJ5j|@HxtOqWS zRgy8@rRuHw)OX90{?)}%|8J}8e3g}xVA9m!uza zXLWq2Y)KN(&){>gs-NTpNI%I*e=y->JhRnxocrH9hLfzIvf0aIYpQIK$_gs8)!%YS zYA;o}ukvM&=bFlvs4So`sk>EWy=D4LvX;vJwaj&oQQ31U%RZpaZ^?D#I|0e(5oTXE zW>#{KG56{TS7i$7Q%dSpI(3i^J`tV%hEDSRocwb?Q%?%jO<+)x^ftIJnX!vHZdCut zw&ZwF?-wUeD%AOB*5FHP$+3{U=j*H5H&pGy;o4-E49-=_ewErKsy6%J2dizW+Jzsm z_7zoI|A4iodVsX_1J>@YYOROff4u9fxffOKp{jPUkN48&H1))EaBfN3E2{mhm9!`O zxuM#xR_#`@j_Q)E?fojNsqBO7hn}i^TGf7#{jlb)>hXE&gVnmKcJ>FXU8HKuAF#Hj zYVZF5waMB%s%rbHcCfa}XRH5rR5tx#b-$$_lZRuzy7|{On|;;vt2do<%_i4wyw{iQ z+D5al+wl4g=6+@U8`c|>JfKV6)2dF?<(+p%rgg`R-ZiRzb$s;JQT3ZiW<1ttjE)YP zrsNd+Bh#ZX>dSQ!71Z7u8C5@iQ5&QFR2|s!R8wVSMr*A4$tLxM9Q8vzi`3p6oBVnI zSbeqiXWyk>ezdxBZb7~R3&OERiG8OK-F8JU`UdgRhEBh@jZ>X&}%$@Y>H zX41CP$kx>n<)PZ{*pY7X=U+!gmyR9jj2&Gvs{YZT(Hln9KNY0n!N~R1lA(R%P?eoO zUZq+=i==cR#DI z--1$K#{E=o<3=iPeMa|FhtiLayQ$p7<4g7RHe@_4yq?O-cmR{Pag&RWyKn;?8xC$l z>EFP+mke*WgGW&IV-@$IdKrIkad8u>w{ZrS_+r)*N_~BX&I9s&sP}LiNzv^YryYDE(A%4@y4{9-lkB-3YHjsrPUbs+W-mm$<}sp?Yg!aH--RlzIn`&(YVD zJi@D~Jir|&{hN4n_HaKT9;9*)H=*@ zq^?&l%M30pybPruA2;EC)W>J)>(`<5U&dW1{o8o-34J~3r-cV_U;6iP6H5OE9tOG} zsjuS!oK8Ou-aSLt??qn6U3eI|jYp^J`kCY*?nCLv#pBb4`;YJd9zs7J9xu}MvfT&| zQn`m4P{z|eRbRgfWjq0HLfLNoaq6LLH^6Nu{Tq1w6n(ve8GjXbQn`({io^2?aW9qU z@b1aO{kQP|$~X(S0S{t4t&{Zi%WzL}7w?{^+uyCn%Wx0secXo9kAb%q>V71z<9;f4 z@%RK?e<1xwcmQQQ9v&Y*JkAIYQn`nlP{toG(AN*4jI)Y+socT4{_r?kxDREVF5aC# zJkAzghB6)>x1o&3z{BHoKL@ZrRosEHT@#Ov)%DVUi2G3b@o*!R$H(aFSE2M@#_d#Y z;^EQ5^R43^lO za66S7czE#ecB{CX%56M4NY~Hicn)zN%645m_J;e9@Nz2maWj=0czED&KXu$oMcClcetM>9zf}*fSakjzmL9t2&KM;dr-!i!{fZZp44~nDwO&X?xgB1JlcD>pC%qa z>8F63srvq0ef<#1cxt$p%5!);XL!3kyq?NycmU=3ND;SF^%fq@9`3)5ms5EOcT#y4 z@9s6+PY182@(S*z@*Ez|8t$iu*Hd{7_fmNtH&S_jrtUX{^7yTR`*1erlLGF*&B(L3 z4U@N5lZ%DNuHMe3I)3-R)tB`v2{l;#-PA!_9dE!8Hen04VFWv{3wtnzeQ5kvZ#M%? zXh9ohp#yW!g?Z?~0`y@K2CxLnumY>F2J5f^L)e5Z*oG18z%J~;81|v@3iF31w4e>M z(1AJV!aVd~0s62A16YD(SbEja4ExY{mH9&xTF{1B=)fFw zVIF$00DV}50W85XtiUR)!8&Zf5H?{8wqXQ2unT)IhJ9$f#{8iPEoj3mbYKp;Fb_Rg zfIck30G41GR$vv@U>!DK2%E44+c1J1*o8e9!#*^A$NZrQEoj3mbYKp;Fb_RgfIck3 z0G41GR$vv@U>!DK2%E44+c1J1*o8e9!#*^6%paQ2f;P-T2j-v)^U#9@=))omU_g-C%paQ2f;P-T2j-v)^U#9@=))omU_g*q<_}G1K^tbF19Q-YdFa6c^kESOumsDn0;{kF>#zYs z*n}#zYs*n}I|cd%lm~Dd<|W0)NpzKv5v1rdx*>D z1zPwt+9Ukk&nw{aIf59M&kywR^|*fKyL#p1a}5^00qt2_-p|hA8_}M}ZM=YQj2H1u z@DeW1i!1na+H1Hx&u-wG(;njTx<(7n(%#0m#5?#_cn|*w-pAGFdIy)x_w;&fgIoBv zcovuU*>ku-X`4@Jy)JPu|Bfae05x z!VjfBi_80OIs9XuN_SgV*q5@dkbz9^&)y7VhH_z5wsy z$Kx@60&d){*JmM~!B503{3JY!pN!}5BA&-j!3+4uaUVYwFXD^v5`G$9!B5Al_!)Q| z5AX*53A~A)iMR1j;vM`fyoWEw`}o7bMOpa!Y%w<+{Vwtv-qd*9DY9T;uqj~ z{L^>=zYzEFGG4?l!b|wYcp1M0ui%&BHT*Mp9sexez(0pK@e1C;FT>mT<#-3b0`K8V z@EHF*ZrrKY`wMsm{~~VURoup}#2x%gcn-e`&*N9)9)1m8z^}!N_?Ph#Uc<}yb$AuO z9AUc*DYj^BT;U)ZOyo^7CSMVR>Rs1J-4Uh0T{w&_WQN!f< zkp*p-g$~R?7v`Y{3($u}7{C%N!wRgz8mz+x3}F+tU>ioT1G}(!!T7-xdw2}{&}i!O zKn9x7f;P;;9CTqGdeDbO7{C%N!|GFdyA^R*gLT+|A#B1HY{Lk4U>Eja4ExZymw7`I zTF{1B=)fFwVIF$00DV}50W85XtiUR)!8&Zf5H?{8wqXQ2unT)IhJ9%KfcZlcTF{1B z=)fFwVIF$00DV}50W85XtiUR)!8&Zf5H?{8wqXQ2unT)IhJ9$<$NZrQEoj3mbYKp; zFb_RgfIck30G41GR$vv@U>!DK2%E44+c1J1*o8e9!#*_bXa3NH7PMg&=3pLrumF8n zgaItUGOWTnY`_pUVGBmE3uD-a#shjDCbVG|I?#n4^kESOumsDn3hOY0P1u4F?7|+5 zq46N&gf`4V2j-v)J?O&#mS7oHVI4ML2wO0MUD$&$>_g)rjt^+TEOcNFx-bttSb#nZ zU>R0m71m%KHeeIBVFWv{3wtnzeQ2~;e`v!jbYKp;Fb_RgfIck30G41GR$vv@U>!DK z2%E44+c1J1*o8e9!#*?~X8%DGTF{1B=)fFwVIF$00DV}50W85XtiUR)!8&Zf5H?{8 zwqXQ2unT)IhJ9!}!u+8LEoj3mbYKp;Fb_RgfIck30G41GR$vv@U>!DK2%E44+c1J1 z*o8e9!#*^A$o!!REoj3mbYKp;Fb_RgfIck30G41GR$vv@U>!DK2%E44+c1J1*o8e9 z!#*?~W&Y5F7PMg&Ixq)an1>!LKpz%i086k8tFR73*n({s!4B-g9*kih8b4xw(1aGW zVHP?t2VIzl9xOl~7GVHOuna4(3Tvf)!YWHCTrY7{VrO!3cI?3=Lk# zFrfu)n1wl*haN1zA}qlQtic8hVH37s1iP>YW7vnr)2u%M(1AJV!aVd~0s62A16YD(Sbi|t?K^tbF19Q-YdFa6c^kESOumsDn0;{kF>#zYs*n}#zYs*n}ioT1G}&XW7vnr&)I*_gch`67CJBoU6_X+EI=O?VE{|8 z3@fk->o9~Z7{Lzg!9L9VLeIy7Hq62t%)R0m71m%KHed*wum#&Nf*sg}Js872G@fVv(1aGWVHP?t2VIzl9xOl~7GVHO zuna4(3TvC0K@4SceT5!X|9N zHjH2g_Fx|xOPLQep#`%r2VIzl9xOl~7GVHOuna4(3TvoLm{u<#O z*o8e9!#*@#WPP9sEoj3mbYKp;Fb_RgfIck30G41GR$vv@U>!DK2%E44+c1J1*o8e9 z!#*^A!~CHMEoj3mbYKp;Fb_RgfIck30G41GR$vv@U>!DK2%E44+c1J1*o8e9!#*^+ z%paQ2f;P;;9L&Q4^kESOumsDn0;{kF>#zYs*n}SLSg zL_UZ5I4+-KeH53^vHl1z-KE#sZ_#e!Z_=K{e@eT9KTCTK|2^*FFX4IodECRlffw+ba38;i z?G^F6@c_RIFX4CMW&94jg5Qo;@f+D*9dFQH!z*|Lzj-}O*$ z;|;ic@9};-rhXDG-+Nqw%l960xOuDY-@+}thRgRJn|O})4DR9;+{1G-^!N+7h5L97 z5AY^l#xuBl@3Df{Xy0vAuU8#k7Z364@fQ9AJi=GOyZGgJjBh+$_ut1y@XUAhdR>HD z_>FiLxA7ca$Mg7RcmW@W7xB;FCH$Ls1)q-B@SE@kzB}tB-+R0tm+w7J!rRm*|8`b# z>EN5tUk@LH_wkGI%=h$qd>yy&P4O)L4LpZ$j_2|5cme+`Uc|qJm+&p{3jS@pChapg zKBOI&?>%mcH);O{-o|$v)z_ErJ+6Vv_a3jp<$I5J;_|)6kKppX$M4|sy~kbf>}`7e zrr|mK%Xl9DK3>4L!;AQBcnRMgm+w7J#VfR5iP!Mk@dmynF5i2+8E;Ad)Ajna@u|3c z@9|2!EB)j0y~i!_KJ7Q-nNY9C_UsQ6pNd=fm3S7v9naxg;_|)6n{ki!oksQe3;0@i z5x)j6;dkQ|d>g!me;04yJ5AU9hxl5!eDCoZJfi(>T)y|X4IWGXxP0$%C+3s6U9Z<# zxP@PXXYsr79KH>n$G?jg@Q;q_@yquf*Tajne+4h$_u&lj!tcdxd?KF3FT->AuG97UxcEAF9={GR z;P>J_J`peCm*FLRSN2C4Uk9(?*Woq%Uc8P^#2ff!coW}aRFA)fZ-BS)ui_p20lbG# z#^3$kBQD>2++(`#KXa#E{|#{Y-s4ws`QGCLxP0$%GM?l5pU3m~9?VC+_qYLGp#7_O z5q|(L;gfOs-s9(S`QBr0RNo)gsJHM2Uc;Ms6K~@gyn|Qp9{#cEy8k}DA)ev!_SbL= ze-O{&tKm8P3wVj=54v~t&!*veZ>WFo4wvU24V;IgMiU>UgElVDcXB*m(R)?>yQR21 zpDN(;e5#1c^RE&jK7b|_%o^TTdDD9Q{$KQF_~YUcKxhQ z{ri>p>a-W}HE>yl|9M>YzlX0w zeF0w|_i;I%>bDJVzk$p4Lwp0S-^5X)h0F2V#^v~laM^zyT#oN9F2`37m+{58?C(A< z^EXoS&*1WW-^Atkws3j9z{cfxE7QNsr;-{^4VUpdyuKqIq{dgmWjr3fs$mV5uz*i6 z^bzIbV+a3Qt@?L0@hOJhgBC91v+*pHaX5Gm%6huEysjntF;8A(JwEf;$Y2vC{Gyij zig;IhO+41#z$=evZ;HRJy)FK-_Kx^l+I#qAT)!{Q^)t8YKAo=1Fzvt{2IKCUx#<_D&E8EcptwJ z&)lKs|8?BLzkz4*E}p|*$Mg6f@B;n@Uc~>1m+(K~75vY54Sxx5;4kA%{I_@;e+BR0 zui`!YHN21i4$s`F=ikFE{P%bkZ@s4Xhl@Xn7x1U>0Dl^<;LqT7{Kt3`{|O%9592-j z5!|>-kN1bTg+Gcr_>b^B{uu7#kK-l0jaTs}@CF{?E&K(%gZ~PT@uhg?Zav;#<2L>x zp2L5Gd-$_>5&tP(#(##_@aOOl|2f{qe}Q-LU*dhdgPZs0@jj1d@sQhR4!<4G<9FZ% z{7$@x#~e>3{GWIg|8Km3{|j&7|HeD`fAAQ82hV(8kN-{F!r#KP_+RiG{#QJY{|ztT zZ{tP$?|2FC;}!fLcn!Y_Z{SlO*0-l7ZsKix4ZMS|j`#3&@IG$gnWmoqMBKtNcott3 z&*7`!dAz(tkFOwptM;P!P1;NNMbuaD>Joi^ui*yXz&*T)7w|Uj;~l(+_wWGk<0U+E zub%%XZsC*gEWRe5!`H|2cm^-v)A1s{HD1DJ;1zs#yoS%l8~8lDi64r$@ni4~z7X%> zi|{^f;+Y@l`JaVb`1yDix9}Wp<9R%b7jOqJ;yJv8yLbi9<2Ag(@zKCXXm8>N;cfg# zyn`>md-y4MAO8fNxlhmkT-?IP;aPk#p2OF|^Y{jM0iTE$@y+lOz71Z%cfxD<9(V(v zgE#U0@iu-K-ocN>d-#cXA3qJx+^^?96}Rxkcox3^&*AIfd3ad;m;3C}#J=YKkG;j80W{A@gj ze;Uu@>*57`6TFCTg_rOh@Cv>gUc+bM4SZj`iC@m~(8e#uJNOu$fAnwz@8ctQ<{>?Q z<2U;L$-*r1#Gmq=}WmreM#YcX_^ErGx{pIng@966n@YV4mZsH}Wr~isL+po#> zX>W+r-o#DX+v2o$@KKpRKA!qMK8E>Z9@g`pK)r>J#k2T2Tt6qy_VW0;v=_u_FX9&M zC2`s-_(hND^{a{hNqa+_$Jb5#VqOnui}!SW2d}=PJ;pER^#bD&J>ScDy}-ncNY~r= zNJsDQEWY|9?0>xclCIC=Q(w^T;cs7}>x=lfvTiTohv60cSiFXxh&S-l@Fu<(Z{ru> z9egt0!`H(5_y&09hk89W!!3LpJd5vy=kPu7JU$06;QQl6d=xL?hvF6d7`%or#2fe` zyosNMxAF7w4n7I*;cMc3e0@CgsGk3H+`_lUv-k`=hwqN(@!5C*pNALmA78@$#~;HB zW&O%rwx*Al8n5SNYsMg`P;b}t^=tS|^xwd9b=}^?C(z!;kH9D1&f1UOoUd3Z^*28G)^{BqA zZ;u&q*2Bb&AL@2X{14i*;=k4Ii2p@<4!7AqE?#4M9=}Z{j}Q#y^gC@Kf;~z6kH*r{S5W_54rAE&L2Ti!Z=)`0;oiKLIb`3-Ka;B3{Bz z!Yla6cnvS&4g3_mi66!KwDI}0ckm-=@8Mgw^!oPkZSc%9dj475!nee;xP!a+_ILr` z0T1vTUcq<8>-cVX6Swg;zA@gxH^XCmI&S<}kAGF%#8<&>+{7JxD(>Q|;~u^S?&E9X z0lpSq#;4&`d=g&AC*vW$8s5UE;1Rwy-o-b>V?2W!Khg7_h@1HOxQ$=L{g;Dh9^-t5 zZz}Jf;v3@ye2X9H`Xasw?IqmCE4Yc*#CboqA^xg9A2r2!KejDi*6kfU!{hfJewo~# z;n(qeGZX3cD3|qkEqrzQ%i`nY{vJ12uROjb<1gS@yeQ6mO5)6?BF=njxJ`QlpU!$V z@sH4d8+WMh;M?Opd!1*YI`l2EHy{=leD$kEfcn-@yKA<74oSTp#b@JK%l%(y}o)05U(->#?M)j|cgD z%^KXlTC~@BylCUUd{oyvc=V{AuZus6d-%_AAHR^-V*Ghb0oA~~?jURwJ_<^{Kd$@-mg!}lxcz_>*m+_f+ z6+aZOoPemLI3kH90mfOqjD@fbe}H=fh;KN>gjV{jWk7I*MjxQic$d-z_skI%*f zd=6g5=i*g-Z@iA@@etn!Z{a>3;UCAl_^Eh|FT#zV>-nFCoA~Ltjh}%#c!0b3CvXox z6Zi2?;sL$@FXLz7ReUjC$Ir$?{2aW6m+%Nb7w_Wd;W7Rx-1vo_|M|FyUx3^A@wkJ3 z8h7y%a1URI`}m1?fS-hy@ssf?Uc~G8DR_v##rdU$zllfq+jtlME$4?A{|j#XQqR9l zy(#{NK0n#wuV{DhSGm56Kg0Ds{At|BpTqQ}i_;$9$IxCD zr@e~%wAaOH5AlVxx5R0WaF_P3IPEb$k#^$+J^zWcoA@cT+v2o4_-VAe;NxQLB&wnQECO(yR zTbyx z243O$Pl%TpUrU_#?;`Q89&cBi>&N)#_sE7y^1)mA6LbBeY%DlRbAh}%XkyNo$MG5~6k54LihxQu26mQ_q<4ycmcpHBa@8DxD)9cs6 zSI7JKrg)~S=f5Lv;d|j({17~cpMdA_PvQl96TFD;fS2%Dcm+Qgui?kz4g5^JiI2tG z_!@WzH}D>A;(dH$JoA#C|Ms|r&&0F%L3j>dfamc~;04^qi@1ZAa2K!O9$v$JynzRJ z6Cc6b_*A@uzkP*1U-xjQqK}6@Ucxgk>-h(`g|UFMI!gZJ?tU!m6{^IJXt$8ZbZjP=Ok+u%8TCp?eu zffw*`coCnBm+-al3cdke!{^`)e1E)&ABMN_WAP4d<30QrGJpI{j&&7-QNq7mLfLHJ>@EX21-oQ`BoA@Z+#;4;Qd^X<07vg<<9G-bq z&wn%A!sp;w{6sv5yR2^>&*KGrHeO7537SJJa(lynDYrNLH+UZZHeSGQ!;AR$@e=+JUcoc6KDa6CgHM$8!6UqlckmA0 z#d~-U@8dC^>FM?8;}(7qp2aW2bNH2b9={GR;8nbc--ws+oAC;MJ6^-@#T)p;coTmD zZ{yG69sGH`hrfjP@!#W_-|P9;a0`DE&*J~Ub9f!k;|;ukhjZtrypO&;=Dd!{87)} z;Q6sB{(D{D;Pave&yQ_s=lQXNk8pigoa=kyTwlJQzb4O*ed&+quYowPuaw1kK3f&% z`D`7ZNPCEnlh;3RlkG=xecHR?w8!{WJU=)7q}OK$+D+WSZG08n!85pvSJ@wVarQ?+ zobmYLyuKsfUw=Qo^Ugc+Puss=>4)wAiz}cX6&uF4*VY>mzbEC7ru@ga{0`$Qxcn}~ z!P9hq^1BnI8+6a|yAsE2pnow!eix&*Q2(L_KLg0GEf|LU&PIcF`P~fpeTcvP=bbZ> zEyWC6es{y?2Q%b%9&-G^g#2#B0>=05?@;LB8uGggy(#+lALRENiu^!{{LYB{UIpD4 z^8HE4%Q@YljI(-(9-#d0hW@n)!}!lTdi>!ox?bHb2J?~M(}?j$cGB(tz{kqMGw%N> zM3ZEO|1&*iHQQB9D&32_S*lm$Wqtb+*}l@xZqK^bXFp&Wvrh z-%{uA*OQ?hBa9gB72HjYHO9RAIAqyg#;R+`k`D#YRl3#Lr zuVt(;#c=Hv<)+~uwW55gA&(c|>m}JQs~hq-aX4SY2zmTCoUduD=<&{2V=be*+VJs~ zTyLzgwjqxThx?gkq>oQsZyC+hajSEA)cam9$?A?8Z@%+hqW_vbfckZ^#_;;@t@1I( zd%28O*Dt?+b-w)mI#l(u^6gGEF6Hr#9*tp0KMPa)H+eZ^Mg4qvaK+`12bou#n%DKr zOLC75OTGEP@H$BU`HejSQ~gJP0Lx9LF6H;0qA?$-G+JYkXkogeC4`q%4Y8n32qM^azleRQdp z+~M=?={$WNIG6EAUg8RRyHkyN>UO7d%V?!;7gwo%M$~WcNiNTulEW{_+tf?`UGgZE zKSmcV7RkqB$mOt;UKB!+l-&N(wID4u7^>~&)ug)3tvwSY=c4%tdbpGBr z8K$vN_49vPPycb5(X#WJY@~0ey8p>WJ#~AOJX~Qu#RxVZz8_h%lJQ7ChCM1nAMoA% zp6t+NF6XeG4ta&<3VHjtIyjWusq~+IUaWJ=uu{)+zpna8_PgYA{OkHDM!d!FyzY6Q zc{!=)<1(*aZ+KoZ&f4_hb&$NC%6~W*r`j*%^7_WRd%lI>Dw98(k zzLu(=qK=CZW3nOnJgy|;v9=u^kEQDWPq(8r$E|3)Q;dG9pKaf#pYjU(nQZh@A}^Ew zhuqz1xPG#F!91C-PcFa1?T`oLF8#RVA-VMLkvlu<{?DiWQK=`F`ctHS7hNy;r=&iW zFOhnFXkO~SCiSU2l=|cVP#3BHq131HN2ETr-+w0gM~C})PWnmZKbQL5hwERF`c(d^ z)bBA||C-dN^1n&_$8^0jn4MuvRBv<)_9MBxk7ART$v@7`cxUq1)%|QrKYNl}Gj%Sv z`q|`mDxXK5P30cBL%tdPA4Ogu*IO|RpWG*(P5tHMja2_3c}Tt&^)Hb3Q}u>=!6;cD zW0u~c^uHB(o?PbZk$b87HhC>ozq>jgB>mS@^(T?{QuRy7<5c}U-4_0p|C3z)PKaRYbs{a&uhg@&PFdilErt1Gho}H~LrG8EIMq096hg`<9fV`Bd zzlFS*zzpLIyO!_I1OaHHt2jp|u?tSVX+Dq!2srn`Ajw8vVRR24xk0T_x zmDk&q{*$k*B)LN_<5@%9A0~N;T;ArKOI{_H@g(=3Nqr|(f312uImzQx|H;G7B+u=m z$0Pk$$vtxEe>e3HNhI~PRDG8`B$x3|Q}2T(_5D=+!?OPS>g`JXsj~j$GM;_uCrH&l zLEcQ&Pi4PE^*B!a zRQ){q2~zb>k+)LyZ?JzOav9IH>|gtU;qfeHKRV=6|5x&Is(!Be;6pO6YO4MM@@}er zclLWsF7utresm8U9?u!Afr`kY2m z?~|+DG`KX#%c=S;)j!OV)JLiMhvaxm)t@TITk^nOU8MhS(T`6qd)c03RCrO%kg~3aQ|<~cFEuEe`7uVAXR@Yc{Nr4 z40$(IZ)~FbF%H$+mHrPW_sHeh`p?<-b@qEXRlgD2jZ*dNu^;19{TbwLL2p<3{~GJ&lgoUcAP-aZF?p1#ADOQA zi+!Z-UoF?*vKqNdzCZbXS z+#e+zk=T<(8gChw-|H{4wJpF3J_SLzQZ_s9=m{8y3JQ}thG{2{rF=S7*CXFCYSo%$;+ww#pKmg{T<|Ss{Uzm<5<028UO3#9=VKXR6SrGoVQc;Gs#18bvHe@ zoJSs!??L_pa`QO7U8#SY+##3w?vT~nt&*#o!{G99@{nA{|7~((zV2V@yW}=GFSi(* zY{|S*^*(u-T*hA~Z>8#&l6T2v{MJ^wf7jRJ;bV%1NA8nL{Sxw4s{T>(F8P71!^lT; z|IUKp{&yqy$Ys9glUGyqKOhfN_5UJ|Q}w%Tt+#6)ueU4fa~`=zF7sWJ^$*Bpz8-l* zZZogbnQxq`zlGd8L2p;;e@h;aOaC_Gk5cvbFwU4<*7N7&?!w{zujBai$z?sCC$FdK zFO=gXRsRsVapG|QN3va;T>8I`+)vfV;9I9c~2{a->}AfH74_mc>XIK!{b}U6qTa65 zzd%18x%9s_^&z>O-wq^irRtZE+o$OMrT$yw4!MlyQSxf4{zdY7s(!ug^t_CZ>;C0@ zbtt(_K9l)=i9ATvKTTdGm-%KK-G59jw?~)UJXLS^5cJRq0)d&sNgdr|*3c{f$R z!}iQ;k?vo{ACPmj%=ZcMC{BIdWCAU*@slT2)Ox3?h9+AuXm>jqE8N>a*!Z=-WS)V_W*U4ShXIJ{^ zlFN8zkvoCzU+UkI^&y{5KmU^c$xZSxJLvrzlJ85tC%N$n-T!Lj8?vqRZ zCGvn=`oEUEm8uWPBl7*||BvMMnR+~OyluXt9=}VzEA_{dms9mWp`SXrjDHgKF}Y1Y z*OQx{)Z3Nu+)M70Oa0Lt4`uR?($81OTdDfD$h+h+{;BL=`z*a(>Hj&l>ypd(e@$K` zciHZ4^b?WGc=jSU7wi6|{$={{$kkypxNI^*uXB}L9`7AT9+Io84=!ILkIChH_yW0k zw%)GvzwS=De~(=14<`@ErT=TmLvlGDeo7vt>Q~=c_ivt~w=4ArkUQiuo-dFGsroUp z4&*YPS>zG9%{u&3)*)5D8{>3J!~6Giw(F5g|KB68rs|(056NZxuan2A`tiH44(ICa zO8-;HJ#v@vuSs4dSHm7$4knMtWq&OpkI9t|E>Ds>=MAs_Xpa3(F8$9Uucqq%oAnII zrT>qzo-w)2cF$lP%ungX{hrs^j!uPD{ONp7C6x9c*VD>(mn znA>S68R@;P$j0zDp^d=cj#n|yWh zTgly2{TJxRC*PF%Yh{0tyX4o)c*xfz|0a2ys=t-o`LrHqp88*sm&nJE|A)Mss^3MO zNR#zxlk48p`~Tz-`QG&NWpe96U6~<&klZGh@w`nQkjwtsYB#;za;pAN@`zm4`8@JC zReuM$Th`-|`q#*Pav6`QPV9r@fn3&kXYz=AALeyDxqXrDUv9sble^?ne-C+;T+W{_ zl834KNxSRu7#HjQrG95}n_S%u4K8Prd#USPI z$0OT)gWM&T`V6;UpIrK%N?s**>Hh)78Ig~WKSSOjm*e(kb$})Nt4l8H^D}beQaw)n zU&DBO6f9k$S07v+CwIv=Ab*qGCzs>)*Q`U3>gV6&WpbN-?o=nDWc+n< z8PDtFEpqj;@Zj<=d7P^6lbfH>GgU8J4KB~KZZ7#o(HIt?0)l{}}aC>BmpiZ$Mrqcd7rOtV62)pXA+C{buxIe@>4_ z?e4*4J93BICEtlWAeZsaBCnFqqJBT}F8N&YOUbhpy5+A)iD2E950|Io?)P z3ze*MnOx4RyOKxba-5t%9;fQhCeK}_M>4{8KTGbC%kAh(Y<0&;ntJCD3f?$Xb} zNw=P-TM&x$@Ltm`Km#s#uP-P7y=RyDls$4b`& zE>`^{pR1I7cWyABC9ftQ09Kc?2LCmTFOz3x===@x26>;nLw@^8@(0MHope7LZop5G zcXrnK*5uEVXL33}pZw3{m0gGHM_fIx=59KFTEm!1Uip{~x{PyE^5UL4zm#=w$m5wh z?^C}gd2g1^k6}E=kmqOXyhI+5x8~@4ee(0jyK{BE)X^|TJqc}V?s9rzZ|Qu8 zO?17iPyIV`Pp9*9q`s=_&(X1Q8F@^8;~3pgC$C?n>sL{ysO0hk^02P+S>ts6JbC|{ zI?wCac!k_$oO1sEGr31@Q?JLbzDKaHJTuY_$<@pU&E+hxyB$bWc4++rapK}uiKjc*14=_E47}IJAWKr=bh+B^5pZ`$wk+z z?Vh8zt5d_6C*vUxd4PBnxp%RycgN^!e4M;`sm@LIi>#Y<$nd&NR`n~o-;s4|P8wb} znV0dssWQX?rT_M!!~LK4KK*CcSW*8|jMm}9{ao=r{Wxn4_w&`kI;hVp{zH$mu#q0_ z&4YXmBY0Y`PpBRrB$s#Rb=!*Or9PMV=i&Tr`jn-wErJmg8IC+!2`}T1E|0Z|;uJbDWOjJ8EInE<;IU3g@@1*jL$-Cq({cJ;S_jUgj z@?FV8avA>|@+g%bL>`md^m8n^$^MdD?-#YNexUak<;LTK`uFlK4X2QIsc(^gg1mm8 z?x)51{9JPX0i8S4UqoIdce&kNK^{F$Kh%Fg>f1WE>AyxEKB03tzuidQO69jm|Ec^= z@-BIq?LI{AKS}>=_b24RQ#zMiI`g&3Yk$*0cB~%g4Dx{QC(7$%9=S83Pn@nU zH;O7ZjOBm#;8WDQFY5m9V!KOJK4L8Ydji){pIJIw|1Ie!HJ(Sw<$Im;^xcy2YxT`te8SvheU|^-fXRbgeLwwodOT(3yA^rBI^@XrB+tF2>*ewMLFBDp z={!&UDdc_rU3N=18(&c`+>J4o|9yk=RsD$i{e<-IIecc2PkZ-!({yiKDck+E?pPj| z-bijUuaGO;K`y^f#ltJ(@j?HV@$TX>0=cC;J zuCcd1J`3z$IUjCMu6`$Q(8CS%GmE^#c1Ot%CC~r2u75?tIE}pa4;^%-d!gMNOX@?`zfznc+J-{5#SpZa)Euhxy<-;(~vsskW-z8Nwv`9A4}g{Ie=U8(0X1)Gp@-qfGvJ9@KzU$}{>LS{1TuJ>M z)Q7j|{^j+DzmT`r9v**YUp?P!YMko~@?{3XpIcMk;d{Yy9{4DEaa}!Mm&d((t9(W4 zGoShlk3VhtUrb(OJnNHRP9ALL+TsSKgX3z-W=q}GI)ym+PcH*^AdTM z@3G2$?335&Uv77+?x)wY!TRgo3}aJr>*spE{FQC*M4nHre}0fJGeG`4k@_O*7Lb2h z`rn)NC$FrepYKucuBS)1zP_6AQ=#*|?a5>sJA+!gJUt9Xwk35<@JkBFjp7bxj zKO?Uf-A=v5ajP~rxI8$>k!7%ydh-{0KU%c?LFM|9`7*`o&xr@g;ZBud)dBpxwr@O)B^DF76PJLyn-Y;e9Zz0bz-%&kW zS7u49!CjzfNTNFF~=Iat@H zkE;#IyQ%vlhdh_+eA1!;~#%Wayy!4g#6xxoKMyym*2sVd}Ea-_t)}!IP&`BF62#qmqVU+xa6go zdOuELoX3#M>lnw7pFy5s{cZ9~RG#cd`F*XBe3E(qlZ>a&>mdutHzKdG{?h->Dxa!e zA82i)Z+9;Bds8pJn<3*|Kwe!<*H@@NYmg($;A<<%@0NZtx}SjSJVtJwqfbco7j;8N z>QnRjgVaBvPYm+gsLw*T)JN5XjHpnSj26w7_Md$N2{j?_O0iMNmB61^j`+9}koS@e^ z&-t@I$d}n5f3A6io^OZy_vz%@k$bUO$#kS{-; z%cytQu1(34E2;n0O7cI^Ph*N+hlQ-eKgi7qdO}x|kEjD9IZoWYbS}3Slf23OOP2B2 zgM9h%?@WEfdBCOrSt?J?GmX@F##>203s;h#P5TjpMGEpBVyj^PCN8Z>%=iXX+Bacg- z(fLxg9j&DQ-%@X{t?PH^aoSttEuP19>1XYul67AGveh70_fx6oUwe=jI1jJSRSzVu z-L4PV=^R%VuB87PsP8_h>u0Q@JGw)1jvt@?A6rR3=Fux2|C~X-s!`>*l5rNuEpFFU z`d>sYzt<%9U*}4mdOm*XAm_@<;49Rpf2Zp%@*c;VjHjjYU^~~xyO7R>W?I^asM@&{Csksb(Y&p zRpoN7pmcy62ldM)`tLhcK2`k=UYGM*j*=hKf1UH8MgIJtewtBBoey7C`HHstw?RM4 zZ`VF{#mCQ%E6Mj)`HK2KWF_?{4s!K8E_J@TfILc__dc)k>yv&kl&HBso#-Y-Uqy&d=GMY|895k`6^Ey zPs;B)%9s}q>M2?VSFR+#L;B}&ubj`@E2)2JCHddzCrGXH#QFO6=ym{}l)7ECRW8Sd zvCQRHgZgCx{`{-T?d4-*?1B~N8>l>a{8r+AP0lk8c{8>CbI9Y=>oy0IXE}e$emRaj z{kZhM$Su}q24lXByh1*SygkTQFtP0xfAY-j7M*hZb|;^3!gdQ5oOwcV=Na29I_31m zrEN|=eerg?Zny2W{BQZj6V5#Alx@#2rk9Kp7A#sc|C|#SoI3xc(~bYjE>BOoTxiTc z>Zt9vKl#M74nBLq4l@@nJoB{E<{WU?B5(U07A~3}6c?U3|CG~DI^#6&>^bvi%%6MM z0do#<=AU-R_VbhL<@P!Kl(X_@oN=nRy>t44;FS3%o__ZH`Q8p%lCd7Y;Dl2L9n7Df z^s26_Iv$jsy;-}(3j_=o)5QxrwzvLjKP8D=C6BWlKz!2-1{vMIIA?xwq&8p?+t zha7?+2P3CF}L8XIl+v1sFnCnwL34o`$g=a-@{PGcVoH%7A= z0k^Ugdc=+E#)7d==FvzOFe+6r%uYH&1aSa~9rQ<<%_oz_$Qk>Ie-)&epNK3JqiG!Z zsUyTV7FW~w(wmBL7AL9j=IFaPoK5}AA2$x%&Ovn}F#!SLC5d+nWoF5(GfBMA7vp&t z-U7sUf?9*jY8sCBSTJIllm_XdW`jz)w*K6<_%d znJGww?G|ulKKS=CztMD?&5jeNVjcwxRD^yQC$}Q>W+L(zStCdjud(CIk~nL$_uM^a z9Hd?f?Rc{^gMt9k9ln3jecCucBcE7(kBPi@<)w`w%yN_x?*VK*h|);1F^Z!}aFsfz z-F}p2sFyd%v7e6cG#qA$?}fOVXTg-<4-eVNPUG=>N;K8;F)@?+;pNm%PN^jH{ zs&*a^&fR9mMCjORa##yi16y3@)XS1!(T~Rd0&RDj!o|Nm3t})hx1L{@o+XOchZn)r zw;D1+s{{<&?2-iSa+BR=xuo5)N?zk*6&%xtRj%~^=lEC!tcZn8+-&ezMaZH@hVx74 zxj$aWJ~;*JM*%vAZsXk6mNp;S}Zyg@!I6eNj73uxV>U(dCTSa z7=@Qyt;VNY*5Yfe&7akBIX(@B!6O_5b_RrGeXXV=hQ1y(_+%<`&UE`&o%iqyMJW`^%7@E0s;Z&}H^ zZdid$a=TBy%)LdSi@k51L7*P2mJ*LJn^UR>tEIHJolNy$wUi1!&9%o8Rt&I3XRmDP z691|f){KW6j5{mIKRl=3us(SdT1TJU&^FP!?zGLa#t+Mp^*&Yq@Iu{3FRg9L-@57_ zp3_bAxlRnO2tEpI6H0XkzCjdN+Z2C!oW|z#KJ>Y^ec7b%E3#}!{yrpM+dRJY81V3% z*6MS2yE#ieSS_Uu9D8k}u|v^Pn|*ll_aXU1Si-|7>ESu8)u%1c(wXW8z5cC7fp3D> z`_SpyJ^wHx%9iA7C9hEXIihx^^ua%qwy1l?zN5}PGwUpN8 zoEzFK)pds5)k}5!@Z@VHw=LnmqT<8&u&vRhyxI)hhx8ltyiI&*&u^gqtr@75egl1O zK-?B-sr26j1GUnd)5WD+nhk5Qt?k0L%u5MxiE}xRcJNv!o>uhzJ+9mz##wBvwHmQI zV`)Tr7_+vq*79ju!rCUY99wP&tMTPcEsS^I9K6kL$=5Ms+Wg11Fy2YGTlgyt)@)Jz zF{*hjh$69j$(V}T&43N6gqEFEqTPt-Mz99WHJD{1+g4Ho*q}<>8Z{eBx;AWy=5p;C zSW8{HTDu0UL30i58Z4EFZU$^nC2rZ{Dm$%IYrw5RFt_^F*RlH6r9*#}vBcMk>W{Rq z$-i)cGqReB29;bF)py|yiLHKZT`sf3I|6S6YtXFZw}>8uHaDg_L^lIAv`lJXQ_I!J z!Y>iRDGL<%q?+X)9oZs^u@cc@$S@mlNFx)}UG0Yqq4huWci# z0c=nuZYxH1LsFyGfLnuGwr>a^iZN%4evu>l5@Ud4$lAMMLmSj~(1x^DpBAy#&{Dmy z8^Ibh*U)g@rQ2xO04DD%bjTI?sHsD5QE$gBTgUZ*uMWPTT`BMq&TPt?LNC!YBQ89z zjF}%jp%8G!xYt(`YWm{MJTE*Xq&F39Bni;kecdff-rSh?WpH)8E0{HSw_C2jm-D`? zE6e=W;Vk#bGMweM>)^!c&oGYG#VT7PVicjK%H@mNs(4Y zj$b#e!x&5cxtU=sHAwHaF5%TW+ilt%r=Oi}SB?R=lHx&~j}2ZU(yJFzZd>nxFR7=b&XFl~iE_q8O423I?Q}V(@Q~F zK1q~x7F8b0m8FjdKx847wRE;q;k-?|=T-~-kouXxxoY8!Mt+*g*3h(dY*@EtF$Zy) z^`nthHp~S%oCa5sKR)p;{i#HTsv%D3`wme`al|~JtK?Z3Y1dt z@m+~air>Hq?KH!w?-?KdhU#B{h}(QVnSjRK+KbznKQ1(Kw?S{=jWSl^-MTIxreB=L znMWs`pU;#+iB~_#MeIDEWhdzr2W(j)@S{rFEm?w$2gCVguBUDsjk`EREi0k$cFRjO z^htabKxJrrw?yMB4wB!|2KvBD`E<7Pe0C8Jyo^rXr;T0A$l8wexbF}nvI@4HhB(|F zL|3xl0N{P(WY}r!?(FZj)sxFl`>HWoqHa$=-6Z}M=(L(U4muV1WS`{4u5Nf1Q~fkM zL(%~PfS;KFcdEgtJjw62i(Bv{E#mdzF`zj+f;^$FkK}u^8N`8y1~}fI^0$a6&jE4> zsK*#LCTZrix!(pyiGO9ZzDnXb5)b6i>1`_Fq5x?EG!LY-A`ifkm*T8Em#`@#twCpJ z&l%p*IscS>RG06!+D?AI*EH@s#XT$_Z?nH++#9eR1GZzp9u%-0*Ue!&?tXFK+%@hG zihK03rrT*D5y6q<{kW@SP}hr-qrNObARC-NK9vuHp=#gPHy8S5FobXU22AgGaCo7g zyXW%m=t7}AK8juqWm)04@>z(-=ZB{~qyRYf!rNaWWf^#^{=+l;b4FtMtv8 zNH7|v5xypIoV`c|1Y3arcm_kB)?daQTGBB#%6o~0I#;`Kh}emJ=uoj*GpX8S^n77N#P zo0nc1j7aCuLVrYbM%NzF|0EtVb@WHQp@*+tPl-fv*AS-Q9aeyWhBG?FBa5<1^#XJ9 zlWYgcaA-VZb*nCAk5wFqc{b@d7fH~KkPHrPva2}U8-i(Nf`i8hDD%YUnY%9LAS&mw+@E;nd4UKyJ&(9? z(PwA7r^kCO>W<#v*>z~J3T5#`5Ftzs0}T z^u}_mxlwpty%M{PmbMHz7XY5fPl6E;G0Q{ld17~St7szvVjSp&Bhq>?b%CgTL=R&5 z`HbT`%nzp5gb5z)vEiLR8)oer&id28hK*gr#I$xP^%6~xn7{2fLkgZ#7?}!T{lPQX z@Xdu7cEm7i?o8t3jhBo?fGMkoyh9@MuI`79BC}slhAs0&KaVF+97N?ApJbt=6?Y$! zz}{&NK`|Ll)c-SRt9NsDfFU}Xvm?U>qBseWp-aouA6z4^S+93IdwwCPdx**#tR69J z1H_Yq3r50hbZtfwVuB2}>q@INP4sFGt(9z)I~oR^ceJ}RM6@4pPP26~sll8JCxuly z6XYFBeT$5?j9gPn9vTNY^oKL6Jy{T%AQ~uX4q%GM!4(GI-VH^8EVg~k=oOuNi_8bw z0R}P|?PCZZS4c<110Jl(cC>PYf;6rSax_TNq<$=DMTtJ7RA{~}q>MzxY?H##Jaj@e z;@blHAy8UHkXMfR(u~|49xpP=rPbfUw|m2^HAAwn{xhVnJD@J@-5`e>jR(U6%({jd zGRVo`3{pdX3SV}iUX=SE&0&aH+^1xCKy!_8i|@~dN5btOYu#92djgXHs=>GeY)1k* zKK3WxoTg1wi8Oeq)m4Kez=8_t)o2W)iR$QFvSE zQ(q%G!*o+dhQd`KP|@Cq(-i$_*W>>+YHRd>LlSpSc>avl!y%(7L&jjxtsS~ywWLs$ z-%k0Mt7aEiwHae@;Y~q$tj9}=T*xYjk^W=bdsK+DT*8bja%<)=Nrp3j6ifn4|Jk!! z+OvZQNgM-=pvl!dgrzU>ZrB9{DtH`iY9Z><`VLPw`NTtoowiT&OCM_aV1O9_njmmQ z#+;9q>>^09uY*afH-!TzRUBRznm{`AZiG^K_Ci7D33IhGzrF#C+9j?p zfev3{-@jPJ32`&w-kjW7K8i%{D_8*n4#|s7X|UKmGH_|@pkBtj3+v~xgCw$Ye&usA zSqs-e76T3vac4ARc&fpAyTMzC`(=7%#YJQEacCJBn3%g?d21+BI2r#7{mm>q@4X^eEEFcd__ z-1MxzP{z!xQ%^V1QjNBme#ewAg^^3Pa5A0|z|oaz@B#@A??HI2wtUGsm|x1_SWXOh z)8pR6C-7af%sFqEwAnC6vuw zzPMy#aKGiXLlZNg3CB1~%i=}!hQi9ZpJEw?DizlvTDMbHeznC4t@5L?FWPcd9Td;{ z>BTLyP0ED)$X747YRwLme;*-7c^Ejq!(nq5vKuQVkm3q|@gcn1g(V5!(;h$Sh>P$rhK6#uXuhv-?D7=XAR|XYPf!1`YL)7%oX&^pf zg9TS?obmNq-$i&))xaiX<8mHM$L}G$^Al|iIF0dbM3IfJSt4t6IN)Zw?@*WcQ;!;| zyV*2z8XQ*|nEc?Len|jz@z~2er{Q0#-wwbpIuuW!Fv6N}G4f{_wsdKTXB_fp1tboA zPk4wZP%?vF7>ocPgA~3ROkdKv#2>8SFE&Ej6R7wljIE0P08qby|MFL}9OuWsBGKrp z{v8jE{MYo2x;AkApRc}(HT-`oczu1Uet%Q_9G9biA4Q|-;O4jRU&D8Z8GQ8hkAGi2 z6J5fg;q~v7JW}Nv{s(`A0(|t7wK-1UoTK))a3GWdB;q#rplkN5O zTK#wo!T%oqm*E#EBZyzefBG!`LBi{+{@of`D{1L_x~BMV!hfRR_4PZ{xyDETmW{st zCF)H0AN`Z0udn|)*P4+?H2)gqUzgy&|A(Xv$I(|!hYRr~YxR@k{4H*YqNXxa@cR1Q zpZ|8z7YYDHf z-;?Uhk(BAv?>W7V|JuHOIQ|`O`@^xsQe*PWBWV;&vi?^i3e({!+L;VbJ-tU^O#`814n)HAAwuJxb z+Y+8DC29WF@cQ~+CHODjk?>!>BjG<$@lT`BaQgbcCHRH<{j zs7%ZMxq|;(!OygyHSoU*;Yt1-Rj)4^{!es)x>8&Em{;vPvPOP?spx<4efdn|%+JtJ t^RMIAZ=ziDE?dg)&l4&Ce|TnTL06a3Z@*T-|Km?2{9Bq)1yFi){tt9JHBSHl literal 0 HcmV?d00001 diff --git a/src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.linux.x64.node b/src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.linux.x64.node new file mode 100644 index 0000000000000000000000000000000000000000..70ca66819da620e1ef246c5c149f0a226866c6b0 GIT binary patch literal 129696 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 Jmh-=Q`~@~hvt0lH literal 0 HcmV?d00001 diff --git a/src/ntqqapi/native/napcat-protocol-packet/index.d.ts b/src/ntqqapi/native/napcat-protocol-packet/index.d.ts new file mode 100644 index 0000000..a9dcd4b --- /dev/null +++ b/src/ntqqapi/native/napcat-protocol-packet/index.d.ts @@ -0,0 +1,16 @@ +import { WrapperSession } from './wrapper-session/types'; +export { initWrapperSession } from './wrapper-session'; +export declare class NTQQPacketApi { + private qqVersion; + private packetSession; + private logger; + private readonly wrapperSession; + constructor(wrapperSession: WrapperSession); + get available(): boolean; + private InitSendPacket; + private sendPacket; + private sendOidbPacket; + sendPokePacket(peer: number, group?: number): Promise; + sendGroupSignPacket(selfUin: string, groupCode: string): Promise; + sendSetSpecialTittlePacket(groupCode: string, uid: string, tittle: string): Promise; +} diff --git a/src/ntqqapi/native/napcat-protocol-packet/index.mjs b/src/ntqqapi/native/napcat-protocol-packet/index.mjs new file mode 100644 index 0000000..54778a5 --- /dev/null +++ b/src/ntqqapi/native/napcat-protocol-packet/index.mjs @@ -0,0 +1 @@ +import e from"os";import t from"stream";import s from"zlib";import r from"buffer";import i,{createHash as n}from"crypto";import o from"events";import a from"https";import c from"http";import h from"net";import l from"tls";import f,{fileURLToPath as u}from"url";import d,{dirname as p}from"path";import m from"fs";import g,{constants as _}from"node:os";import b from"node:fs";import y from"node:path";class w{capacity;cache;constructor(e){this.capacity=e,this.cache=new Map}get(e){const t=this.cache.get(e);return void 0!==t&&(this.cache.delete(e),this.cache.set(e,t)),t}put(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.capacity){const e=this.cache.keys().next().value;void 0!==e&&this.cache.delete(e)}this.cache.set(e,t)}}function k(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function v(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var s=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};s.prototype=t.prototype}else s={};return Object.defineProperty(s,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(s,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),s}var S={exports:{}};const E=["nodebuffer","arraybuffer","fragments"],N="undefined"!=typeof Blob;N&&E.push("blob");var T={BINARY_TYPES:E,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:N,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}};const I=v(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));const{EMPTY_BUFFER:O}=T,x=Buffer[Symbol.species];function B(e,t,s,r,i){for(let n=0;n{this.pending--,this[U]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[U]()}[U](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[L])}}},{kStatusCode:F}=T,V=Buffer[Symbol.species],j=Buffer.from([0,0,255,255]),M=Symbol("permessage-deflate"),W=Symbol("total-length"),$=Symbol("callback"),G=Symbol("buffers"),Q=Symbol("error");let q;var X=class{constructor(e,t,s){if(this._maxPayload=0|s,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!q){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;q=new D(e)}}static get extensionName(){return"permessage-deflate"}offer(){const e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){const e=this._deflate[$];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const t=this._options,s=e.find((e=>!(!1===t.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===t.serverMaxWindowBits||"number"==typeof t.serverMaxWindowBits&&t.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof t.clientMaxWindowBits&&!e.client_max_window_bits)));if(!s)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(s.server_no_context_takeover=!0),t.clientNoContextTakeover&&(s.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(s.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?s.client_max_window_bits=t.clientMaxWindowBits:!0!==s.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete s.client_max_window_bits,s}acceptAsClient(e){const t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach((e=>{Object.keys(e).forEach((t=>{let s=e[t];if(s.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(s=s[0],"client_max_window_bits"===t){if(!0!==s){const e=+s;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${s}`)}else if("server_max_window_bits"===t){const e=+s;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==s)throw new TypeError(`Invalid value for parameter "${t}": ${s}`)}e[t]=s}))})),e}decompress(e,t,s){q.add((r=>{this._decompress(e,t,((e,t)=>{r(),s(e,t)}))}))}compress(e,t,s){q.add((r=>{this._compress(e,t,((e,t)=>{r(),s(e,t)}))}))}_decompress(e,t,s){const r=this._isServer?"client":"server";if(!this._inflate){const e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?R.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=R.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[M]=this,this._inflate[W]=0,this._inflate[G]=[],this._inflate.on("error",Z),this._inflate.on("data",Y)}this._inflate[$]=s,this._inflate.write(e),t&&this._inflate.write(j),this._inflate.flush((()=>{const e=this._inflate[Q];if(e)return this._inflate.close(),this._inflate=null,void s(e);const i=A.concat(this._inflate[G],this._inflate[W]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[W]=0,this._inflate[G]=[],t&&this.params[`${r}_no_context_takeover`]&&this._inflate.reset()),s(null,i)}))}_compress(e,t,s){const r=this._isServer?"server":"client";if(!this._deflate){const e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?R.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=R.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[W]=0,this._deflate[G]=[],this._deflate.on("data",K)}this._deflate[$]=s,this._deflate.write(e),this._deflate.flush(R.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=A.concat(this._deflate[G],this._deflate[W]);t&&(e=new V(e.buffer,e.byteOffset,e.length-4)),this._deflate[$]=null,this._deflate[W]=0,this._deflate[G]=[],t&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),s(null,e)}))}};function K(e){this[G].push(e),this[W]+=e.length}function Y(e){this[W]+=e.length,this[M]._maxPayload<1||this[W]<=this[M]._maxPayload?this[G].push(e):(this[Q]=new RangeError("Max payload size exceeded"),this[Q].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Q][F]=1009,this.removeListener("data",Y),this.reset())}function Z(e){this[M]._inflate=null,e[F]=1007,this[$](e)}var J={exports:{}};const z=v(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));const{isUtf8:H}=r,{hasBlob:ee}=T;function te(e){const t=e.length;let s=0;for(;s=t||128!=(192&e[s+1])||128!=(192&e[s+2])||224===e[s]&&128==(224&e[s+1])||237===e[s]&&160==(224&e[s+1]))return!1;s+=3}else{if(240!=(248&e[s]))return!1;if(s+3>=t||128!=(192&e[s+1])||128!=(192&e[s+2])||128!=(192&e[s+3])||240===e[s]&&128==(240&e[s+1])||244===e[s]&&e[s+1]>143||e[s]>244)return!1;s+=4}else s++;return!0}if(J.exports={isBlob:function(e){return ee&&"object"==typeof e&&"function"==typeof e.arrayBuffer&&"string"==typeof e.type&&"function"==typeof e.stream&&("Blob"===e[Symbol.toStringTag]||"File"===e[Symbol.toStringTag])},isValidStatusCode:function(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},isValidUTF8:te,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},H)J.exports.isValidUTF8=function(e){return e.length<24?te(e):H(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{const e=z;J.exports.isValidUTF8=function(t){return t.length<32?te(t):e(t)}}catch(e){}var se=J.exports;const{Writable:re}=t,ie=X,{BINARY_TYPES:ne,EMPTY_BUFFER:oe,kStatusCode:ae,kWebSocket:ce}=T,{concat:he,toArrayBuffer:le,unmask:fe}=C,{isValidStatusCode:ue,isValidUTF8:de}=se,pe=Buffer[Symbol.species];var me=class extends re{constructor(e={}){super(),this._allowSynchronousEvents=void 0===e.allowSynchronousEvents||e.allowSynchronousEvents,this._binaryType=e.binaryType||ne[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[ce]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,s){if(8===this._opcode&&0==this._state)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=s.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(s.buffer,s.byteOffset,e),r),this._buffers[0]=new pe(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return t}startLoop(e){this._loop=!0;do{switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:return void(this._loop=!1)}}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2)return void(this._loop=!1);const t=this.consume(2);if(48&t[0]){return void e(this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3"))}const s=!(64&~t[0]);if(!s||this._extensions[ie.extensionName]){if(this._fin=!(128&~t[0]),this._opcode=15&t[0],this._payloadLength=127&t[1],0===this._opcode){if(s){return void e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}if(!this._fragmented){return void e(this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE"))}this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented){return void e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"))}this._compressed=s}else{if(!(this._opcode>7&&this._opcode<11)){return void e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"))}if(!this._fin){return void e(this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN"))}if(s){return void e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength){return void e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"))}}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=!(128&~t[1]),this._isServer){if(!this._masked){return void e(this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK"))}}else if(this._masked){return void e(this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK"))}126===this._payloadLength?this._state=1:127===this._payloadLength?this._state=2:this.haveLength(e)}else{e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}}getPayloadLength16(e){this._bufferedBytes<2?this._loop=!1:(this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e))}getPayloadLength64(e){if(this._bufferedBytes<8)return void(this._loop=!1);const t=this.consume(8),s=t.readUInt32BE(0);if(s>Math.pow(2,21)-1){e(this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH"))}else this._payloadLength=s*Math.pow(2,32)+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"))}else this._masked?this._state=3:this._state=4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=oe;if(this._payloadLength){if(this._bufferedBytes7)this.controlMessage(t,e);else{if(this._compressed)return this._state=5,void this.decompress(t,e);t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}}decompress(e,t){this._extensions[ie.extensionName].decompress(e,this._fin,((e,s)=>{if(e)return t(e);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){const e=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");return void t(e)}this._fragments.push(s)}this.dataMessage(t),0===this._state&&this.startLoop(t)}))}dataMessage(e){if(!this._fin)return void(this._state=0);const t=this._messageLength,s=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let r;r="nodebuffer"===this._binaryType?he(s,t):"arraybuffer"===this._binaryType?le(he(s,t)):"blob"===this._binaryType?new Blob(s):s,this._allowSynchronousEvents?(this.emit("message",r,!0),this._state=0):(this._state=6,setImmediate((()=>{this.emit("message",r,!0),this._state=0,this.startLoop(e)})))}else{const r=he(s,t);if(!this._skipUTF8Validation&&!de(r)){const t=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");return void e(t)}5===this._state||this._allowSynchronousEvents?(this.emit("message",r,!1),this._state=0):(this._state=6,setImmediate((()=>{this.emit("message",r,!1),this._state=0,this.startLoop(e)})))}}controlMessage(e,t){if(8!==this._opcode)this._allowSynchronousEvents?(this.emit(9===this._opcode?"ping":"pong",e),this._state=0):(this._state=6,setImmediate((()=>{this.emit(9===this._opcode?"ping":"pong",e),this._state=0,this.startLoop(t)})));else{if(0===e.length)this._loop=!1,this.emit("conclude",1005,oe),this.end();else{const s=e.readUInt16BE(0);if(!ue(s)){const e=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");return void t(e)}const r=new pe(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!de(r)){const e=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");return void t(e)}this._loop=!1,this.emit("conclude",s,r),this.end()}this._state=0}}createError(e,t,s,r,i){this._loop=!1,this._errored=!0;const n=new e(s?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(n,this.createError),n.code=i,n[ae]=r,n}};const{randomFillSync:ge}=i,_e=X,{EMPTY_BUFFER:be,kWebSocket:ye,NOOP:we}=T,{isBlob:ke,isValidStatusCode:ve}=se,{mask:Se,toBuffer:Ee}=C,Ne=Symbol("kByteLength"),Te=Buffer.alloc(4),Ie=8192;let Oe,xe=Ie;var Be=class e{constructor(e,t,s){this._extensions=t||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=we,this[ye]=void 0}static frame(e,t){let s,r,i=!1,n=2,o=!1;t.mask&&(s=t.maskBuffer||Te,t.generateMask?t.generateMask(s):(xe===Ie&&(void 0===Oe&&(Oe=Buffer.alloc(Ie)),ge(Oe,0,Ie),xe=0),s[0]=Oe[xe++],s[1]=Oe[xe++],s[2]=Oe[xe++],s[3]=Oe[xe++]),o=!(s[0]|s[1]|s[2]|s[3]),n=6),"string"==typeof e?r=t.mask&&!o||void 0===t[Ne]?(e=Buffer.from(e)).length:t[Ne]:(r=e.length,i=t.mask&&t.readOnly&&!o);let a=r;r>=65536?(n+=8,a=127):r>125&&(n+=2,a=126);const c=Buffer.allocUnsafe(i?r+n:n);return c[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(c[0]|=64),c[1]=a,126===a?c.writeUInt16BE(r,2):127===a&&(c[2]=c[3]=0,c.writeUIntBE(r,4,6)),t.mask?(c[1]|=128,c[n-4]=s[0],c[n-3]=s[1],c[n-2]=s[2],c[n-1]=s[3],o?[c,e]:i?(Se(e,s,c,n,r),[c]):(Se(e,s,e,0,r),[c,e])):[c,e]}close(t,s,r,i){let n;if(void 0===t)n=be;else{if("number"!=typeof t||!ve(t))throw new TypeError("First argument must be a valid error code number");if(void 0!==s&&s.length){const e=Buffer.byteLength(s);if(e>123)throw new RangeError("The message must not be greater than 123 bytes");n=Buffer.allocUnsafe(2+e),n.writeUInt16BE(t,0),"string"==typeof s?n.write(s,2):n.set(s,2)}else n=Buffer.allocUnsafe(2),n.writeUInt16BE(t,0)}const o={[Ne]:n.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};0!==this._state?this.enqueue([this.dispatch,n,!1,o,i]):this.sendFrame(e.frame(n,o),i)}ping(t,s,r){let i,n;if("string"==typeof t?(i=Buffer.byteLength(t),n=!1):ke(t)?(i=t.size,n=!1):(i=(t=Ee(t)).length,n=Ee.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const o={[Ne]:i,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:9,readOnly:n,rsv1:!1};ke(t)?0!==this._state?this.enqueue([this.getBlobData,t,!1,o,r]):this.getBlobData(t,!1,o,r):0!==this._state?this.enqueue([this.dispatch,t,!1,o,r]):this.sendFrame(e.frame(t,o),r)}pong(t,s,r){let i,n;if("string"==typeof t?(i=Buffer.byteLength(t),n=!1):ke(t)?(i=t.size,n=!1):(i=(t=Ee(t)).length,n=Ee.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const o={[Ne]:i,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:10,readOnly:n,rsv1:!1};ke(t)?0!==this._state?this.enqueue([this.getBlobData,t,!1,o,r]):this.getBlobData(t,!1,o,r):0!==this._state?this.enqueue([this.dispatch,t,!1,o,r]):this.sendFrame(e.frame(t,o),r)}send(e,t,s){const r=this._extensions[_e.extensionName];let i,n,o=t.binary?2:1,a=t.compress;"string"==typeof e?(i=Buffer.byteLength(e),n=!1):ke(e)?(i=e.size,n=!1):(i=(e=Ee(e)).length,n=Ee.readOnly),this._firstFragment?(this._firstFragment=!1,a&&r&&r.params[r._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=i>=r._threshold),this._compress=a):(a=!1,o=0),t.fin&&(this._firstFragment=!0);const c={[Ne]:i,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:o,readOnly:n,rsv1:a};ke(e)?0!==this._state?this.enqueue([this.getBlobData,e,this._compress,c,s]):this.getBlobData(e,this._compress,c,s):0!==this._state?this.enqueue([this.dispatch,e,this._compress,c,s]):this.dispatch(e,this._compress,c,s)}getBlobData(t,s,r,i){this._bufferedBytes+=r[Ne],this._state=2,t.arrayBuffer().then((t=>{if(this._socket.destroyed){const e=new Error("The socket was closed while the blob was being read");return void process.nextTick(Pe,this,e,i)}this._bufferedBytes-=r[Ne];const n=Ee(t);s?this.dispatch(n,s,r,i):(this._state=0,this.sendFrame(e.frame(n,r),i),this.dequeue())})).catch((e=>{process.nextTick(Ce,this,e,i)}))}dispatch(t,s,r,i){if(!s)return void this.sendFrame(e.frame(t,r),i);const n=this._extensions[_e.extensionName];this._bufferedBytes+=r[Ne],this._state=1,n.compress(t,r.fin,((t,s)=>{if(this._socket.destroyed){Pe(this,new Error("The socket was closed while data was being compressed"),i)}else this._bufferedBytes-=r[Ne],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(s,r),i),this.dequeue()}))}dequeue(){for(;0===this._state&&this._queue.length;){const e=this._queue.shift();this._bufferedBytes-=e[3][Ne],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][Ne],this._queue.push(e)}sendFrame(e,t){2===e.length?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function Pe(e,t,s){"function"==typeof s&&s(t);for(let s=0;s{let s=e[t];return Array.isArray(s)||(s=[s]),s.map((e=>[t].concat(Object.keys(e).map((t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map((e=>!0===e?t:`${t}=${e}`)).join("; ")}))).join("; "))).join(", ")})).join(", ")},parse:function(e){const t=Object.create(null);let s,r,i=Object.create(null),n=!1,o=!1,a=!1,c=-1,h=-1,l=-1,f=0;for(;f0&&e.unshift(t),e.on("close",Qt),e.on("data",qt),e.on("end",Xt),e.on("error",Kt),this._readyState=Ot.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this._readyState=Ot.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[at.extensionName]&&this._extensions[at.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=Ot.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==Ot.CLOSED)if(this.readyState!==Ot.CONNECTING)this.readyState!==Ot.CLOSING?(this._readyState=Ot.CLOSING,this._sender.close(e,t,!this._isServer,(e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())})),Gt(this)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();else{const e="WebSocket was closed before the connection was established";Lt(this,this._req,e)}}pause(){this.readyState!==Ot.CONNECTING&&this.readyState!==Ot.CLOSED&&(this._paused=!0,this._socket.pause())}ping(e,t,s){if(this.readyState===Ot.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===Ot.OPEN?(void 0===t&&(t=!this._isServer),this._sender.ping(e||ut,t,s)):Ut(this,e,s)}pong(e,t,s){if(this.readyState===Ot.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===Ot.OPEN?(void 0===t&&(t=!this._isServer),this._sender.pong(e||ut,t,s)):Ut(this,e,s)}resume(){this.readyState!==Ot.CONNECTING&&this.readyState!==Ot.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,s){if(this.readyState===Ot.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(s=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==Ot.OPEN)return void Ut(this,e,s);const r={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[at.extensionName]||(r.compress=!1),this._sender.send(e||ut,r,s)}terminate(){if(this.readyState!==Ot.CLOSED)if(this.readyState!==Ot.CONNECTING)this._socket&&(this._readyState=Ot.CLOSING,this._socket.destroy());else{const e="WebSocket was closed before the connection was established";Lt(this,this._req,e)}}}function xt(e,t,s,r){const i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Nt[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=i.autoPong,!Nt.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Nt.join(", ")})`);let n;if(t instanceof ot)n=t;else try{n=new ot(t)}catch(e){throw new SyntaxError(`Invalid URL: ${t}`)}"http:"===n.protocol?n.protocol="ws:":"https:"===n.protocol&&(n.protocol="wss:"),e._url=n.href;const o="wss:"===n.protocol,a="ws+unix:"===n.protocol;let c;if("ws:"===n.protocol||o||a?a&&!n.pathname?c="The URL's pathname is empty":n.hash&&(c="The URL contains a fragment identifier"):c='The URL\'s protocol must be one of "ws:", "wss:", "http:", "https", or "ws+unix:"',c){const t=new SyntaxError(c);if(0===e._redirects)throw t;return void Bt(e,t)}const h=o?443:80,l=it(16).toString("base64"),f=o?et.request:tt.request,u=new Set;let d,p;if(i.createConnection=i.createConnection||(o?Ct:Pt),i.defaultPort=i.defaultPort||h,i.port=n.port||h,i.host=n.hostname.startsWith("[")?n.hostname.slice(1,-1):n.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":l,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(d=new at(!0!==i.perMessageDeflate?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=kt({[at.extensionName]:d.offer()})),s.length){for(const e of s){if("string"!=typeof e||!It.test(e)||u.has(e))throw new SyntaxError("An invalid or duplicated subprotocol was specified");u.add(e)}i.headers["Sec-WebSocket-Protocol"]=s.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(n.username||n.password)&&(i.auth=`${n.username}:${n.password}`),a){const e=i.path.split(":");i.socketPath=e[0],i.path=e[1]}if(i.followRedirects){if(0===e._redirects){e._originalIpc=a,e._originalSecure=o,e._originalHostOrSocketPath=a?i.socketPath:n.host;const t=r&&r.headers;if(r={...r,headers:{}},t)for(const[e,s]of Object.entries(t))r.headers[e.toLowerCase()]=s}else if(0===e.listenerCount("redirect")){const t=a?!!e._originalIpc&&i.socketPath===e._originalHostOrSocketPath:!e._originalIpc&&n.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!o)&&(delete i.headers.authorization,delete i.headers.cookie,t||delete i.headers.host,i.auth=void 0)}i.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),p=e._req=f(i),e._redirects&&e.emit("redirect",e.url,p)}else p=e._req=f(i);i.timeout&&p.on("timeout",(()=>{Lt(e,p,"Opening handshake has timed out")})),p.on("error",(t=>{null===p||p[Et]||(p=e._req=null,Bt(e,t))})),p.on("response",(n=>{const o=n.headers.location,a=n.statusCode;if(o&&i.followRedirects&&a>=300&&a<400){if(++e._redirects>i.maxRedirects)return void Lt(e,p,"Maximum redirects exceeded");let n;p.abort();try{n=new ot(o,t)}catch(t){const s=new SyntaxError(`Invalid URL: ${o}`);return void Bt(e,s)}xt(e,n,s,r)}else e.emit("unexpected-response",p,n)||Lt(e,p,`Unexpected server response: ${n.statusCode}`)})),p.on("upgrade",((t,s,r)=>{if(e.emit("upgrade",t),e.readyState!==Ot.CONNECTING)return;p=e._req=null;const n=t.headers.upgrade;if(void 0===n||"websocket"!==n.toLowerCase())return void Lt(e,s,"Invalid Upgrade header");const o=nt("sha1").update(l+dt).digest("base64");if(t.headers["sec-websocket-accept"]!==o)return void Lt(e,s,"Invalid Sec-WebSocket-Accept header");const a=t.headers["sec-websocket-protocol"];let c;if(void 0!==a?u.size?u.has(a)||(c="Server sent an invalid subprotocol"):c="Server sent a subprotocol but none was requested":u.size&&(c="Server sent no subprotocol"),c)return void Lt(e,s,c);a&&(e._protocol=a);const h=t.headers["sec-websocket-extensions"];if(void 0!==h){if(!d){return void Lt(e,s,"Server sent a Sec-WebSocket-Extensions header but no extension was requested")}let t;try{t=vt(h)}catch(t){return void Lt(e,s,"Invalid Sec-WebSocket-Extensions header")}const r=Object.keys(t);if(1!==r.length||r[0]!==at.extensionName){return void Lt(e,s,"Server indicated an extension that was not requested")}try{d.accept(t[at.extensionName])}catch(t){return void Lt(e,s,"Invalid Sec-WebSocket-Extensions header")}e._extensions[at.extensionName]=d}e.setSocket(s,r,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})})),i.finishRequest?i.finishRequest(p,e):p.end()}function Bt(e,t){e._readyState=Ot.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function Pt(e){return e.path=e.socketPath,st.connect(e)}function Ct(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=st.isIP(e.host)?"":e.host),rt.connect(e)}function Lt(e,t,s){e._readyState=Ot.CLOSING;const r=new Error(s);Error.captureStackTrace(r,Lt),t.setHeader?(t[Et]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(Bt,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function Ut(e,t,s){if(t){const s=lt(t)?t.size:St(t).length;e._socket?e._sender._bufferedBytes+=s:e._bufferedAmount+=s}if(s){const t=new Error(`WebSocket is not open: readyState ${e.readyState} (${Tt[e.readyState]})`);process.nextTick(s,t)}}function Rt(e,t){const s=this[_t];s._closeFrameReceived=!0,s._closeMessage=t,s._closeCode=e,void 0!==s._socket[_t]&&(s._socket.removeListener("data",qt),process.nextTick(Wt,s._socket),1005===e?s.close():s.close(e,t))}function At(){const e=this[_t];e.isPaused||e._socket.resume()}function Dt(e){const t=this[_t];void 0!==t._socket[_t]&&(t._socket.removeListener("data",qt),process.nextTick(Wt,t._socket),t.close(e[gt])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function Ft(){this[_t].emitClose()}function Vt(e,t){this[_t].emit("message",e,t)}function jt(e){const t=this[_t];t._autoPong&&t.pong(e,!this._isServer,bt),t.emit("ping",e)}function Mt(e){this[_t].emit("pong",e)}function Wt(e){e.resume()}function $t(e){const t=this[_t];t.readyState!==Ot.CLOSED&&(t.readyState===Ot.OPEN&&(t._readyState=Ot.CLOSING,Gt(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function Gt(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),3e4)}function Qt(){const e=this[_t];let t;this.removeListener("close",Qt),this.removeListener("data",qt),this.removeListener("end",Xt),e._readyState=Ot.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||e._receiver.write(t),e._receiver.end(),this[_t]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",Ft),e._receiver.on("finish",Ft))}function qt(e){this[_t]._receiver.write(e)||this.pause()}function Xt(){const e=this[_t];e._readyState=Ot.CLOSING,e._receiver.end(),this.end()}function Kt(){const e=this[_t];this.removeListener("error",Kt),this.on("error",bt),e&&(e._readyState=Ot.CLOSING,this.destroy())}Object.defineProperty(Ot,"CONNECTING",{enumerable:!0,value:Tt.indexOf("CONNECTING")}),Object.defineProperty(Ot.prototype,"CONNECTING",{enumerable:!0,value:Tt.indexOf("CONNECTING")}),Object.defineProperty(Ot,"OPEN",{enumerable:!0,value:Tt.indexOf("OPEN")}),Object.defineProperty(Ot.prototype,"OPEN",{enumerable:!0,value:Tt.indexOf("OPEN")}),Object.defineProperty(Ot,"CLOSING",{enumerable:!0,value:Tt.indexOf("CLOSING")}),Object.defineProperty(Ot.prototype,"CLOSING",{enumerable:!0,value:Tt.indexOf("CLOSING")}),Object.defineProperty(Ot,"CLOSED",{enumerable:!0,value:Tt.indexOf("CLOSED")}),Object.defineProperty(Ot.prototype,"CLOSED",{enumerable:!0,value:Tt.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(Ot.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(Ot.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[pt])return t[mt];return null},set(t){for(const t of this.listeners(e))if(t[pt]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[pt]:!0})}})})),Ot.prototype.addEventListener=yt,Ot.prototype.removeEventListener=wt;const Yt=k(Ot);class Zt{cb=new w(500);isAvailable=!1;wrapperSession;constructor(e){this.wrapperSession=e}randText(e){let t="";const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let r=0;r{}){return new Promise(((o,a)=>{const c=setTimeout((()=>{a(new Error(`sendCommand timed out after ${i} ms for ${e} with trace_id ${s}`))}),i);this.registerCallback(s,"send",(async e=>{n(e),r||(clearTimeout(c),o(e))})),r&&this.registerCallback(s,"recv",(async e=>{clearTimeout(c),o(e)})),this.sendCommandImpl(e,t,s)}))}async sendPacket(e,t,s=!1){return new Promise(((r,n)=>{if(!this.available)return void console.error("NapCat.Packet 未初始化!");const o=i.createHash("md5").update(t).digest("hex"),a=(this.randText(4)+o+t).slice(0,t.length/2);this.sendCommand(e,t,a,s,2e4,(async()=>{await this.wrapperSession.getMsgService().sendSsoCmdReqByContend(e,a)})).then((e=>r(e))).catch((e=>n(e)))}))}async sendOidbPacket(e,t=!1){return this.sendPacket(e.cmd,e.data,t)}}class Jt extends Zt{websocket;isConnected=!1;reconnectAttempts=0;maxReconnectAttempts=60;clientUrl="";logger=console;constructor(e){super(e),this.clientUrl="ws://127.0.0.1:8086/ws"}check(){return!0}sendCommandImpl(e,t,s){throw new Error("Method not implemented.")}connect(e){return new Promise(((t,s)=>{this.websocket=new Yt(this.clientUrl),this.websocket.on("error",(e=>{})),this.websocket.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.logger.log.bind(this.logger)(`[Core] [Packet Server] 已连接到 ${this.clientUrl}`),e(),t()},this.websocket.onerror=e=>{s(new Error(`${e.message}`))},this.websocket.onmessage=e=>{this.handleMessage(e.data).then().catch()},this.websocket.onclose=()=>{this.isConnected=!1,this.attemptReconnect(e)}}))}attemptReconnect(e){try{this.reconnectAttempts{this.connect(e).catch((e=>{this.logger.error.bind(this.logger)(`[Core] [Packet Server] 尝试重连失败:${e.message}`)}))}),5e3*this.reconnectAttempts)):this.logger.error.bind(this.logger)(`[Core] [Packet Server] ${this.clientUrl} 已达到最大重连次数!`)}catch(e){this.logger.error.bind(this.logger)(`[Core] [Packet Server] 重连时出错: ${e.message}`)}}async init(e,t,s){if(!this.isConnected||!this.websocket)throw new Error("WebSocket is not connected");const r={action:"init",pid:e,recv:t,send:s};this.websocket.send(JSON.stringify(r))}async handleMessage(e){try{const t=JSON.parse(e.toString()),s=t.trace_id_md5,r=t?.type??"init",i=this.cb.get(s+r);i&&await i(t.data)}catch(e){this.logger.error.bind(this.logger)(`Error parsing message: ${e}`)}}}class zt extends Zt{supportedPlatforms=["win32.x64","linux.x64","linux.arm64"];MoeHooExport={exports:{}};sendEvent=new w(500);constructor(e){super(e)}get available(){return this.isAvailable}check(){const e=process.platform+"."+process.arch;if(!this.supportedPlatforms.includes(e))return console.warn(`[Core] [Packet:Native] 不支持的平台: ${e}`),!1;const t=d.join(p(u(import.meta.url)),"./moehoo/MoeHoo."+e+".node");return!!m.existsSync(t)||(console.warn(`[Core] [Packet:Native] 缺失运行时文件: ${t}`),!1)}async init(e,t,s){const r=process.platform+"."+process.arch,i=d.join(p(u(import.meta.url)),"./moehoo/MoeHoo."+r+".node"),o=d.join(p(u(import.meta.url)),"./moehoo/MoeHoo.v1.0.0.node");if(m.existsSync(i)&&!m.existsSync(o))try{m.copyFileSync(i,o)}catch(e){}console.debug("moehoo_path:",o),process.dlopen(this.MoeHooExport,o,_.dlopen.RTLD_LAZY),this.MoeHooExport.exports.InitHook?.(s,t,((e,t,s,r,i)=>{const o=n("md5").update(Buffer.from(i,"hex")).digest("hex");if(0===e&&this.cb.get(o+"recv")&&this.sendEvent.put(r,o),1===e&&this.sendEvent.get(r)){const e=this.sendEvent.get(r),t=this.cb.get(e+"recv");t?.({seq:r,cmd:s,hex_data:i})}})),console.debug("MoeHoo init complete"),this.isAvailable=!0}sendCommandImpl(e,t,s){const r=n("md5").update(s).digest("hex");this.MoeHooExport.exports.SendPacket?.(e,t,r),this.cb.get(r+"send")?.({seq:0,cmd:e,hex_data:""})}connect(e){return e(),Promise.resolve()}}function Ht(e){let t=typeof e;if("object"==t){if(Array.isArray(e))return"array";if(null===e)return"null"}return t}let es="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),ts=[];for(let e=0;e>4,!(128&s))return this.assertBounds(),[e,t];for(let s=3;s<=31;s+=7){let r=this.buf[this.pos++];if(t|=(127&r)<>>r,n=!(i>>>7==0&&0==t),o=255&(n?128|i:i);if(s.push(o),!n)return}const r=e>>>28&15|(7&t)<<4,i=!!(t>>3);if(s.push(255&(i?128|r:r)),i){for(let e=3;e<31;e+=7){const r=t>>>e,i=!(r>>>7==0),n=255&(i?128|r:r);if(s.push(n),!i)return}s.push(t>>>31&1)}}ts["-".charCodeAt(0)]=es.indexOf("+"),ts["_".charCodeAt(0)]=es.indexOf("/"),function(e){e.symbol=Symbol.for("protobuf-ts/unknown"),e.onRead=(s,r,i,n,o)=>{(t(r)?r[e.symbol]:r[e.symbol]=[]).push({no:i,wireType:n,data:o})},e.onWrite=(t,s,r)=>{for(let{no:t,wireType:i,data:n}of e.list(s))r.tag(t,i).raw(n)},e.list=(s,r)=>{if(t(s)){let t=s[e.symbol];return r?t.filter((e=>e.no==r)):t}return[]},e.last=(t,s)=>e.list(t,s).slice(-1)[0];const t=t=>t&&Array.isArray(t[e.symbol])}(ss||(ss={})),function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"}(rs||(rs={}));const os=4294967296;function as(e){let t="-"==e[0];t&&(e=e.slice(1));const s=1e6;let r=0,i=0;function n(t,n){const o=Number(e.slice(t,n));i*=s,r=r*s+o,r>=os&&(i+=r/os|0,r%=os)}return n(-24,-18),n(-18,-12),n(-12,-6),n(-6),[t,r,i]}function cs(e,t){if(t>>>0<=2097151)return""+(os*t+(e>>>0));let s=(e>>>24|t<<8)>>>0&16777215,r=t>>16&65535,i=(16777215&e)+6777216*s+6710656*r,n=s+8147497*r,o=2*r,a=1e7;function c(e,t){let s=e?String(e):"";return t?"0000000".slice(s.length)+s:s}return i>=a&&(n+=Math.floor(i/a),i%=a),n>=a&&(o+=Math.floor(n/a),n%=a),c(o,0)+c(n,o)+c(i,1)}function hs(e,t){if(e>=0){for(;e>127;)t.push(127&e|128),e>>>=7;t.push(e)}else{for(let s=0;s<9;s++)t.push(127&e|128),e>>=7;t.push(1)}}function ls(){let e=this.buf[this.pos++],t=127&e;if(!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<7,!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<14,!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<21,!(128&e))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(15&e)<<28;for(let t=5;128&e&&t<10;t++)e=this.buf[this.pos++];if(128&e)throw new Error("invalid varint");return this.assertBounds(),t>>>0}let fs;function us(e){if(!e)throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}!function(){const e=new DataView(new ArrayBuffer(8)),t=void 0!==globalThis.BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64;fs=t?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:e}:void 0}();const ds=/^-?[0-9]+$/,ps=4294967296,ms=2147483648;class gs{constructor(e,t){this.lo=0|e,this.hi=0|t}isZero(){return 0==this.lo&&0==this.hi}toNumber(){let e=this.hi*ps+(this.lo>>>0);if(!Number.isSafeInteger(e))throw new Error("cannot convert to safe number");return e}}class _s extends gs{static from(e){if(fs)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=fs.C(e);case"number":if(0===e)return this.ZERO;e=fs.C(e);case"bigint":if(!e)return this.ZERO;if(efs.UMAX)throw new Error("ulong too large");return fs.V.setBigUint64(0,e,!0),new _s(fs.V.getInt32(0,!0),fs.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!ds.test(e))throw new Error("string is no integer");let[t,s,r]=as(e);if(t)throw new Error("signed value for ulong");return new _s(s,r);case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");if(e<0)throw new Error("signed value for ulong");return new _s(e,e/ps)}throw new Error("unknown value "+typeof e)}toString(){return fs?this.toBigInt().toString():cs(this.lo,this.hi)}toBigInt(){return us(fs),fs.V.setInt32(0,this.lo,!0),fs.V.setInt32(4,this.hi,!0),fs.V.getBigUint64(0,!0)}}_s.ZERO=new _s(0,0);class bs extends gs{static from(e){if(fs)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=fs.C(e);case"number":if(0===e)return this.ZERO;e=fs.C(e);case"bigint":if(!e)return this.ZERO;if(efs.MAX)throw new Error("signed long too large");return fs.V.setBigInt64(0,e,!0),new bs(fs.V.getInt32(0,!0),fs.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!ds.test(e))throw new Error("string is no integer");let[t,s,r]=as(e);if(t){if(r>ms||r==ms&&0!=s)throw new Error("signed long too small")}else if(r>=ms)throw new Error("signed long too large");let i=new bs(s,r);return t?i.negate():i;case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");return e>0?new bs(e,e/ps):new bs(-e,-e/ps).negate()}throw new Error("unknown value "+typeof e)}isNegative(){return!!(this.hi&ms)}negate(){let e=~this.hi,t=this.lo;return t?t=1+~t:e+=1,new bs(t,e)}toString(){if(fs)return this.toBigInt().toString();if(this.isNegative()){let e=this.negate();return"-"+cs(e.lo,e.hi)}return cs(this.lo,this.hi)}toBigInt(){return us(fs),fs.V.setInt32(0,this.lo,!0),fs.V.setInt32(4,this.hi,!0),fs.V.getBigInt64(0,!0)}}bs.ZERO=new bs(0,0);const ys={readUnknownField:!0,readerFactory:e=>new ws(e)};class ws{constructor(e,t){this.varint64=is,this.uint32=ls,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=null!=t?t:new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0})}tag(){let e=this.uint32(),t=e>>>3,s=7&e;if(t<=0||s<0||s>5)throw new Error("illegal tag: field no "+t+" wire type "+s);return[t,s]}skip(e){let t=this.pos;switch(e){case rs.Varint:for(;128&this.buf[this.pos++];);break;case rs.Bit64:this.pos+=4;case rs.Bit32:this.pos+=4;break;case rs.LengthDelimited:let t=this.uint32();this.pos+=t;break;case rs.StartGroup:let s;for(;(s=this.tag()[1])!==rs.EndGroup;)this.skip(s);break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(t,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let e=this.uint32();return e>>>1^-(1&e)}int64(){return new bs(...this.varint64())}uint64(){return new _s(...this.varint64())}sint64(){let[e,t]=this.varint64(),s=-(1&e);return e=(e>>>1|(1&t)<<31)^s,t=t>>>1^s,new bs(e,t)}bool(){let[e,t]=this.varint64();return 0!==e||0!==t}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return new _s(this.sfixed32(),this.sfixed32())}sfixed64(){return new bs(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function ks(e,t){if(!e)throw new Error(t)}function vs(e){if("number"!=typeof e)throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw new Error("invalid int 32: "+e)}function Ss(e){if("number"!=typeof e)throw new Error("invalid uint 32: "+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw new Error("invalid uint 32: "+e)}function Es(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>34028234663852886e22||e<-34028234663852886e22))throw new Error("invalid float 32: "+e)}const Ns={writeUnknownFields:!0,writerFactory:()=>new Ts};class Ts{constructor(e){this.stack=[],this.textEncoder=null!=e?e:new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Ss(e);e>127;)this.buf.push(127&e|128),e>>>=7;return this.buf.push(e),this}int32(e){return vs(e),hs(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){Es(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){Ss(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){vs(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return vs(e),hs(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){let t=new Uint8Array(8),s=new DataView(t.buffer),r=bs.from(e);return s.setInt32(0,r.lo,!0),s.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),s=new DataView(t.buffer),r=_s.from(e);return s.setInt32(0,r.lo,!0),s.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=bs.from(e);return ns(t.lo,t.hi,this.buf),this}sint64(e){let t=bs.from(e),s=t.hi>>31;return ns(t.lo<<1^s,(t.hi<<1|t.lo>>>31)^s,this.buf),this}uint64(e){let t=_s.from(e);return ns(t.lo,t.hi,this.buf),this}}const Is={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0},Os={ignoreUnknownFields:!1};const xs=Symbol.for("protobuf-ts/message-type");function Bs(e){let t=!1;const s=[];for(let r=0;r!r.includes(e))))return!1;if(!s&&r.some((e=>!i.known.includes(e))))return!1;if(t<1)return!0;for(const r of i.oneofs){const i=e[r];if(!Rs(i))return!1;if(void 0===i.oneofKind)continue;const n=this.fields.find((e=>e.localName===i.oneofKind));if(!n)return!1;if(!this.field(i[i.oneofKind],n,s,t))return!1}for(const r of this.fields)if(void 0===r.oneof&&!this.field(e[r.localName],r,s,t))return!1;return!0}field(e,t,s,r){let i=t.repeat;switch(t.kind){case"scalar":return void 0===e?t.opt:i?this.scalars(e,t.T,r,t.L):this.scalar(e,t.T,t.L);case"enum":return void 0===e?t.opt:i?this.scalars(e,Ps.INT32,r):this.scalar(e,Ps.INT32);case"message":return void 0===e||(i?this.messages(e,t.T(),s,r):this.message(e,t.T(),s,r));case"map":if("object"!=typeof e||null===e)return!1;if(r<2)return!0;if(!this.mapKeys(e,t.K,r))return!1;switch(t.V.kind){case"scalar":return this.scalars(Object.values(e),t.V.T,r,t.V.L);case"enum":return this.scalars(Object.values(e),Ps.INT32,r);case"message":return this.messages(Object.values(e),t.V.T(),s,r)}}return!0}message(e,t,s,r){return s?t.isAssignable(e,r):t.is(e,r)}messages(e,t,s,r){if(!Array.isArray(e))return!1;if(r<2)return!0;if(s){for(let s=0;sparseInt(e))),t,s);case Ps.BOOL:return this.scalars(r.slice(0,s).map((e=>"true"==e||"false"!=e&&e)),t,s);default:return this.scalars(r,t,s,Cs.STRING)}}}function Ds(e,t){switch(t){case Cs.BIGINT:return e.toBigInt();case Cs.NUMBER:return e.toNumber();default:return e.toString()}}class Fs{constructor(e){this.info=e}prepare(){var e;if(void 0===this.fMap){this.fMap={};const t=null!==(e=this.info.fields)&&void 0!==e?e:[];for(const e of t)this.fMap[e.name]=e,this.fMap[e.jsonName]=e,this.fMap[e.localName]=e}}assert(e,t,s){if(!e){let e=Ht(s);throw"number"!=e&&"boolean"!=e||(e=s.toString()),new Error(`Cannot parse JSON ${e} for ${this.info.typeName}#${t}`)}}read(e,t,s){this.prepare();const r=[];for(const[n,o]of Object.entries(e)){const e=this.fMap[n];if(!e){if(!s.ignoreUnknownFields)throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ${n}`);continue}const a=e.localName;let c;if(e.oneof){if(null===o&&("enum"!==e.kind||"google.protobuf.NullValue"!==e.T()[0]))continue;if(r.includes(e.oneof))throw new Error(`Multiple members of the oneof group "${e.oneof}" of ${this.info.typeName} are present in JSON.`);r.push(e.oneof),c=t[e.oneof]={oneofKind:a}}else c=t;if("map"==e.kind){if(null===o)continue;this.assert(null!==(i=o)&&"object"==typeof i&&!Array.isArray(i),e.name,o);const t=c[a];for(const[r,i]of Object.entries(o)){let n;switch(this.assert(null!==i,e.name+" map value",null),e.V.kind){case"message":n=e.V.T().internalJsonRead(i,s);break;case"enum":if(n=this.enum(e.V.T(),i,e.name,s.ignoreUnknownFields),!1===n)continue;break;case"scalar":n=this.scalar(i,e.V.T,e.V.L,e.name)}this.assert(void 0!==n,e.name+" map value",i);let o=r;e.K==Ps.BOOL&&(o="true"==o||"false"!=o&&o),o=this.scalar(o,e.K,Cs.STRING,e.name).toString(),t[o]=n}}else if(e.repeat){if(null===o)continue;this.assert(Array.isArray(o),e.name,o);const t=c[a];for(const r of o){let i;switch(this.assert(null!==r,e.name,null),e.kind){case"message":i=e.T().internalJsonRead(r,s);break;case"enum":if(i=this.enum(e.T(),r,e.name,s.ignoreUnknownFields),!1===i)continue;break;case"scalar":i=this.scalar(r,e.T,e.L,e.name)}this.assert(void 0!==i,e.name,o),t.push(i)}}else switch(e.kind){case"message":if(null===o&&"google.protobuf.Value"!=e.T().typeName){this.assert(void 0===e.oneof,e.name+" (oneof member)",null);continue}c[a]=e.T().internalJsonRead(o,s,c[a]);break;case"enum":let t=this.enum(e.T(),o,e.name,s.ignoreUnknownFields);if(!1===t)continue;c[a]=t;break;case"scalar":c[a]=this.scalar(o,e.T,e.L,e.name)}}var i}enum(e,t,s,r){if("google.protobuf.NullValue"==e[0]&&ks(null===t||"NULL_VALUE"===t,`Unable to parse field ${this.info.typeName}#${s}, enum ${e[0]} only accepts null.`),null===t)return 0;switch(typeof t){case"number":return ks(Number.isInteger(t),`Unable to parse field ${this.info.typeName}#${s}, enum can only be integral number, got ${t}.`),t;case"string":let i=t;e[2]&&t.substring(0,e[2].length)===e[2]&&(i=t.substring(e[2].length));let n=e[1][i];return(void 0!==n||!r)&&(ks("number"==typeof n,`Unable to parse field ${this.info.typeName}#${s}, enum ${e[0]} has no value for "${t}".`),n)}ks(!1,`Unable to parse field ${this.info.typeName}#${s}, cannot parse enum value from ${typeof t}".`)}scalar(e,t,s,r){let i;try{switch(t){case Ps.DOUBLE:case Ps.FLOAT:if(null===e)return 0;if("NaN"===e)return Number.NaN;if("Infinity"===e)return Number.POSITIVE_INFINITY;if("-Infinity"===e)return Number.NEGATIVE_INFINITY;if(""===e){i="empty string";break}if("string"==typeof e&&e.trim().length!==e.length){i="extra whitespace";break}if("string"!=typeof e&&"number"!=typeof e)break;let r=Number(e);if(Number.isNaN(r)){i="not a number";break}if(!Number.isFinite(r)){i="too large or small";break}return t==Ps.FLOAT&&Es(r),r;case Ps.INT32:case Ps.FIXED32:case Ps.SFIXED32:case Ps.SINT32:case Ps.UINT32:if(null===e)return 0;let n;if("number"==typeof e?n=e:""===e?i="empty string":"string"==typeof e&&(e.trim().length!==e.length?i="extra whitespace":n=Number(e)),void 0===n)break;return t==Ps.UINT32?Ss(n):vs(n),n;case Ps.INT64:case Ps.SFIXED64:case Ps.SINT64:if(null===e)return Ds(bs.ZERO,s);if("number"!=typeof e&&"string"!=typeof e)break;return Ds(bs.from(e),s);case Ps.FIXED64:case Ps.UINT64:if(null===e)return Ds(_s.ZERO,s);if("number"!=typeof e&&"string"!=typeof e)break;return Ds(_s.from(e),s);case Ps.BOOL:if(null===e)return!1;if("boolean"!=typeof e)break;return e;case Ps.STRING:if(null===e)return"";if("string"!=typeof e){i="extra whitespace";break}try{encodeURIComponent(e)}catch(i){i="invalid UTF8";break}return e;case Ps.BYTES:if(null===e||""===e)return new Uint8Array(0);if("string"!=typeof e)break;return function(e){let t=3*e.length/4;"="==e[e.length-2]?t-=2:"="==e[e.length-1]&&(t-=1);let s,r=new Uint8Array(t),i=0,n=0,o=0;for(let t=0;t>4,o=s,n=2;break;case 2:r[i++]=(15&o)<<4|(60&s)>>2,o=s,n=3;break;case 3:r[i++]=(3&o)<<6|s,n=0}}if(1==n)throw Error("invalid base64 string.");return r.subarray(0,i)}(e)}}catch(e){i=e.message}this.assert(!1,r+(i?" - "+i:""),e)}}class Vs{constructor(e){var t;this.fields=null!==(t=e.fields)&&void 0!==t?t:[]}write(e,t){const s={},r=e;for(const e of this.fields){if(!e.oneof){let i=this.field(e,r[e.localName],t);void 0!==i&&(s[t.useProtoFieldName?e.name:e.jsonName]=i);continue}const i=r[e.oneof];if(i.oneofKind!==e.localName)continue;const n="scalar"==e.kind||"enum"==e.kind?Object.assign(Object.assign({},t),{emitDefaultValues:!0}):t;let o=this.field(e,i[e.localName],n);ks(void 0!==o),s[t.useProtoFieldName?e.name:e.jsonName]=o}return s}field(e,t,s){let r;if("map"==e.kind){ks("object"==typeof t&&null!==t);const i={};switch(e.V.kind){case"scalar":for(const[s,r]of Object.entries(t)){const t=this.scalar(e.V.T,r,e.name,!1,!0);ks(void 0!==t),i[s.toString()]=t}break;case"message":const r=e.V.T();for(const[n,o]of Object.entries(t)){const t=this.message(r,o,e.name,s);ks(void 0!==t),i[n.toString()]=t}break;case"enum":const n=e.V.T();for(const[r,o]of Object.entries(t)){ks(void 0===o||"number"==typeof o);const t=this.enum(n,o,e.name,!1,!0,s.enumAsInteger);ks(void 0!==t),i[r.toString()]=t}}(s.emitDefaultValues||Object.keys(i).length>0)&&(r=i)}else if(e.repeat){ks(Array.isArray(t));const i=[];switch(e.kind){case"scalar":for(let s=0;s0||s.emitDefaultValues)&&(r=i)}else switch(e.kind){case"scalar":r=this.scalar(e.T,t,e.name,e.opt,s.emitDefaultValues);break;case"enum":r=this.enum(e.T(),t,e.name,e.opt,s.emitDefaultValues,s.enumAsInteger);break;case"message":r=this.message(e.T(),t,e.name,s)}return r}enum(e,t,s,r,i,n){if("google.protobuf.NullValue"==e[0])return i||r?null:void 0;if(void 0!==t){if(0!==t||i||r)return ks("number"==typeof t),ks(Number.isInteger(t)),n||!e[1].hasOwnProperty(t)?t:e[2]?e[2]+e[1][t]:e[1][t]}else ks(r)}message(e,t,s,r){return void 0===t?r.emitDefaultValues?null:void 0:e.internalJsonWrite(t,r)}scalar(e,t,s,r,i){if(void 0===t)return void ks(r);const n=i||r;switch(e){case Ps.INT32:case Ps.SFIXED32:case Ps.SINT32:return 0===t?n?0:void 0:(vs(t),t);case Ps.FIXED32:case Ps.UINT32:return 0===t?n?0:void 0:(Ss(t),t);case Ps.FLOAT:Es(t);case Ps.DOUBLE:return 0===t?n?0:void 0:(ks("number"==typeof t),Number.isNaN(t)?"NaN":t===Number.POSITIVE_INFINITY?"Infinity":t===Number.NEGATIVE_INFINITY?"-Infinity":t);case Ps.STRING:return""===t?n?"":void 0:(ks("string"==typeof t),t);case Ps.BOOL:return!1===t?!n&&void 0:(ks("boolean"==typeof t),t);case Ps.UINT64:case Ps.FIXED64:ks("number"==typeof t||"string"==typeof t||"bigint"==typeof t);let e=_s.from(t);if(e.isZero()&&!n)return;return e.toString();case Ps.INT64:case Ps.SFIXED64:case Ps.SINT64:ks("number"==typeof t||"string"==typeof t||"bigint"==typeof t);let s=bs.from(t);if(s.isZero()&&!n)return;return s.toString();case Ps.BYTES:return ks(t instanceof Uint8Array),t.byteLength?function(e){let t,s="",r=0,i=0;for(let n=0;n>2],i=(3&t)<<4,r=1;break;case 1:s+=es[i|t>>4],i=(15&t)<<2,r=2;break;case 2:s+=es[i|t>>6],s+=es[63&t],r=0}return r&&(s+=es[i],s+="=",1==r&&(s+="=")),s}(t):n?"":void 0}}}function js(e,t=Cs.STRING){switch(e){case Ps.BOOL:return!1;case Ps.UINT64:case Ps.FIXED64:return Ds(_s.ZERO,t);case Ps.INT64:case Ps.SFIXED64:case Ps.SINT64:return Ds(bs.ZERO,t);case Ps.DOUBLE:case Ps.FLOAT:return 0;case Ps.BYTES:return new Uint8Array(0);case Ps.STRING:return"";default:return 0}}class Ms{constructor(e){this.info=e}prepare(){var e;if(!this.fieldNoToField){const t=null!==(e=this.info.fields)&&void 0!==e?e:[];this.fieldNoToField=new Map(t.map((e=>[e.no,e])))}}read(e,t,s,r){this.prepare();const i=void 0===r?e.len:e.pos+r;for(;e.pose.no-t.no))}}write(e,t,s){this.prepare();for(const r of this.fields){let i,n,o=r.repeat,a=r.localName;if(r.oneof){const t=e[r.oneof];if(t.oneofKind!==a)continue;i=t[a],n=!0}else i=e[a],n=!1;switch(r.kind){case"scalar":case"enum":let e="enum"==r.kind?Ps.INT32:r.T;if(o)if(ks(Array.isArray(i)),o==Ls.PACKED)this.packed(t,e,r.no,i);else for(const s of i)this.scalar(t,e,r.no,s,!0);else void 0===i?ks(r.opt):this.scalar(t,e,r.no,i,n||r.opt);break;case"message":if(o){ks(Array.isArray(i));for(const e of i)this.message(t,s,r.T(),r.no,e)}else this.message(t,s,r.T(),r.no,i);break;case"map":ks("object"==typeof i&&null!==i);for(const[e,n]of Object.entries(i))this.mapEntry(t,s,r,e,n)}}let r=s.writeUnknownFields;!1!==r&&(!0===r?ss.onWrite:r)(this.info.typeName,e,t)}mapEntry(e,t,s,r,i){e.tag(s.no,rs.LengthDelimited),e.fork();let n=r;switch(s.K){case Ps.INT32:case Ps.FIXED32:case Ps.UINT32:case Ps.SFIXED32:case Ps.SINT32:n=Number.parseInt(r);break;case Ps.BOOL:ks("true"==r||"false"==r),n="true"==r}switch(this.scalar(e,s.K,1,n,!0),s.V.kind){case"scalar":this.scalar(e,s.V.T,2,i,!0);break;case"enum":this.scalar(e,Ps.INT32,2,i,!0);break;case"message":this.message(e,t,s.V.T(),2,i)}e.join()}message(e,t,s,r,i){void 0!==i&&(s.internalBinaryWrite(i,e.tag(r,rs.LengthDelimited).fork(),t),e.join())}scalar(e,t,s,r,i){let[n,o,a]=this.scalarInfo(t,r);a&&!i||(e.tag(s,n),e[o](r))}packed(e,t,s,r){if(!r.length)return;ks(t!==Ps.BYTES&&t!==Ps.STRING),e.tag(s,rs.LengthDelimited),e.fork();let[,i]=this.scalarInfo(t);for(let t=0;t{const s=e[t];if("scalar"===s.kind){const e=s.repeat?[Ps.STRING,Ps.BYTES].includes(s.type)?Ls.UNPACKED:Ls.PACKED:Ls.NO;return{no:s.no,name:t,kind:"scalar",T:s.type,opt:s.optional,repeat:e}}if("message"===s.kind)return{no:s.no,name:t,kind:"message",repeat:s.repeat?Ls.PACKED:Ls.NO,T:()=>Js.getInstance(s.type())._proto_msg}})),this._proto_msg=new Ys("nya",this._field)}static getInstance(e){let t=this.cache.get(e);return t||(t=new Js(e),this.cache.set(e,t)),t}encode(e){return this._proto_msg.toBinary(this._proto_msg.create(e))}decode(e){return this._proto_msg.fromBinary(e)}}class zs{realMsg;constructor(e){this.realMsg=Js.getInstance(e)}encode(e){return this.realMsg.encode(e)}decode(e){return this.realMsg.decode(e)}}const Hs={command:Zs(1,Ps.UINT32),subCommand:Zs(2,Ps.UINT32),body:Zs(4,Ps.BYTES),errorMsg:Zs(5,Ps.STRING,!0),isReserved:Zs(12,Ps.UINT32)};Zs(4,Ps.BYTES);const er={uin:Zs(1,Ps.UINT32),groupUin:Zs(2,Ps.UINT32),friendUin:Zs(5,Ps.UINT32),ext:Zs(6,Ps.UINT32,!0)},tr={targetUid:Zs(1,Ps.STRING),specialTitle:Zs(5,Ps.STRING),expiredTime:Zs(6,Ps.SINT32),uinName:Zs(7,Ps.STRING),targetName:Zs(8,Ps.STRING)},sr={groupUin:Zs(1,Ps.UINT32),body:Zs(3,Ps.BYTES)},rr={uin:Zs(1,Ps.STRING),groupUin:Zs(2,Ps.STRING),version:Zs(3,Ps.STRING)},ir={body:Zs(2,(()=>rr))};class nr{client;constructor(e){this.client=e}packetPacket(e){return Buffer.from(e).toString("hex")}packOidbPacket(e,t,s,r=!0,i=!1){const n=new zs(Hs).encode({command:e,subCommand:t,body:s,isReserved:r?1:0});return{cmd:`OidbSvcTrpcTcp.0x${e.toString(16).toUpperCase()}_${t}`,data:this.packetPacket(n)}}packPokePacket(e,t){const s=new zs(er).encode({uin:e,groupUin:t,friendUin:t??e,ext:0});return this.packOidbPacket(3795,1,s)}packSetSpecialTittlePacket(e,t,s){const r=new zs(tr).encode({targetUid:t,specialTitle:s,expiredTime:-1,uinName:s}),i=new zs(sr).encode({groupUin:+e,body:r});return this.packOidbPacket(2300,2,i,!1,!1)}packGroupSignReq(e,t){return this.packOidbPacket(3767,1,new zs(ir).encode({body:{uin:e,groupUin:t,version:"9.0.90"}}),!1,!1)}}const or={10:e=>new zt(e),1:e=>new Jt(e)};class ar{client;packer;wrapperSession;constructor(e){this.wrapperSession=e,this.client=this.newClient(),this.packer=new nr(this.client)}newClient(){let e,t="native";switch(t){case"native":console.log("[Core] [Packet] 使用指定的 NativePacketClient 作为后端"),e=new zt(this.wrapperSession);break;case"frida":console.log("[Core] [Packet] 使用指定的 FridaPacketClient 作为后端"),e=new Jt(this.wrapperSession);break;case"auto":case void 0:e=this.judgeClient();break;default:console.error(`[Core] [Packet] 未知的PacketBackend ${t},请检查配置文件!`),e=null}if(!e||!e.check())throw new Error("[Core] [Packet] 无可用的后端,NapCat.Packet将不会加载!");return e}judgeClient(){const e=Object.entries(or).map((([e,t])=>{const s=t(this.wrapperSession),r=+e*+s.check();return{client:s,score:r}})).filter((({score:e})=>e>0)).sort(((e,t)=>t.score-e.score)),t=e[0]?.client;if(!t)throw new Error("[Core] [Packet] 无可用的后端,NapCat.Packet将不会加载!");return console.log(`[Core] [Packet] 自动选择 ${t.constructor.name} 作为后端`),t}}const cr={"6.9.56-28418-arm64":{send:"4471360",recv:"4473BCC"},"3.2.12-28418-x64":{recv:"A0723E0",send:"A06EAE0"},"9.9.15-28418-x64":{recv:"37A9004",send:"37A4BD0"},"9.9.15-28498-x64":{recv:"37A9004",send:"37A4BD0"},"9.9.16-28788-x64":{send:"38076D0",recv:"380BB04"},"3.2.13-28788-x64":{send:"A0CEC20",recv:"A0D2520"},"3.2.13-28788-arm64":{send:"6E91018",recv:"6E94850"},"9.9.16-28971-x64":{send:"38079F0",recv:"380BE24"},"3.2.13-28971-x64":{send:"A0CEF60",recv:"A0D2860"},"3.2.12-28971-arm64":{send:"6E91318",recv:"6E94B50"},"6.9.58-28971-arm64":{send:"449ACA0",recv:"449D50C"},"9.9.16-29271-x64":{send:"3833510",recv:"3837944"},"3.2.13-29271-x64":{send:"A11E680",recv:"A121F80"},"3.2.13-29271-arm64":{send:"6ECA098",recv:"6ECD8D0"},"9.9.16-29456-x64":{send:"3835CD0",recv:"383A104"},"3.2.13-29456-x64":{send:"A11E820",recv:"A122120"},"3.2.13-29456-arm64":{send:"6ECA130",recv:"6ECD968"}};class hr{QQMainPath;QQPackageInfoPath;QQVersionConfigPath;isQuickUpdate;QQVersionConfig;QQPackageInfo;constructor(){this.QQMainPath=process.execPath,this.QQVersionConfigPath=function(e=""){let t;if("win32"===g.platform())t=y.join(y.dirname(e),"versions","config.json");else if("darwin"===g.platform()){const e=g.homedir(),s=y.resolve(e,"./Library/Application Support/QQ");t=y.resolve(s,"./versions/config.json")}else{const e=g.homedir(),s=y.resolve(e,"./.config/QQ");t=y.resolve(s,"./versions/config.json")}if("string"==typeof t&&(b.existsSync(t)||(t=y.join(y.dirname(e),"./resources/app/versions/config.json")),b.existsSync(t)))return t}(this.QQMainPath),this.isQuickUpdate=!!this.QQVersionConfigPath,this.QQVersionConfig=this.isQuickUpdate?JSON.parse(b.readFileSync(this.QQVersionConfigPath).toString()):"linux"===g.platform()?{baseVersion:"3.2.12.28060",curVersion:"3.2.12.28060",prevVersion:"",onErrorVersions:[],buildId:"27254"}:"darwin"===g.platform()?{baseVersion:"6.9.53.28060",curVersion:"6.9.53.28060",prevVersion:"",onErrorVersions:[],buildId:"28060"}:{baseVersion:"9.9.15-28131",curVersion:"9.9.15-28131",prevVersion:"",onErrorVersions:[],buildId:"28131"},this.QQPackageInfoPath=function(e="",t){let s;return s="darwin"===g.platform()?y.join(y.dirname(e),"..","Resources","app","package.json"):"linux"===g.platform()?y.join(y.dirname(e),"./resources/app/package.json"):y.join(y.dirname(e),"./versions/"+t+"/resources/app/package.json"),b.existsSync(s)||(s=y.join(y.dirname(e),"./resources/app/versions/"+t+"/package.json")),s}(this.QQMainPath,this.QQVersionConfig?.curVersion),this.QQPackageInfo=JSON.parse(b.readFileSync(this.QQPackageInfoPath).toString())}getFullQQVersion(){const e=this.isQuickUpdate?this.QQVersionConfig?.curVersion:this.QQPackageInfo?.version;if(!e)throw new Error("QQ版本获取失败");return e}}let lr=require("process"),fr=null;const ur="dlopenOri"+Math.random().toString(36).substring(7);async function dr(){return fr||new Promise(((e,t)=>{let s=setInterval((()=>{fr&&(clearInterval(s),e(fr))}),100)}))}lr[ur]=lr.dlopen,lr.dlopen=function(e,t,s=g.constants.dlopen.RTLD_LAZY){let r=this[ur](e,t,s),i=e.exports;return e.exports=new Proxy({},{get:function(e,t,s){return"NodeIQQNTWrapperSession"===t?new Proxy((()=>{}),{get(e,t,s){if("create"===t)return new Proxy((()=>{}),{apply:(e,t,s)=>(fr=i.NodeIQQNTWrapperSession.create(...s),console.log("NodeIQQNTWrapperSession created:",fr),lr.dlopen=lr[ur],fr)})}}):i[t]}}),r};class pr{qqVersion;packetSession;logger=console;wrapperSession;constructor(e){this.wrapperSession=e,this.packetSession=void 0,this.InitSendPacket((new hr).getFullQQVersion()).then().catch(console.error)}get available(){return this.packetSession?.client.available??!1}async InitSendPacket(t){this.qqVersion=t;const s=cr[t+"-"+e.arch()];if(!s)return this.logger.error("PacketServer Offset table not found for QQVersion: ",t+"-"+e.arch()),!1;this.packetSession=new ar(this.wrapperSession);return await this.packetSession.client.connect((()=>{this.packetSession&&this.packetSession.client&&this.packetSession.client.init(process.pid,s.recv,s.send).then().catch(this.logger.error.bind(this.logger))})),!0}async sendPacket(e,t,s=!1){return this.packetSession.client.sendPacket(e,t,s)}async sendOidbPacket(e,t=!1){return this.sendPacket(e.cmd,e.data,t)}async sendPokePacket(e,t){const s=this.packetSession?.packer.packPokePacket(e,t);await this.sendOidbPacket(s,!1)}async sendGroupSignPacket(e,t){const s=this.packetSession?.packer.packGroupSignReq(e,t);await this.sendOidbPacket(s,!0)}async sendSetSpecialTittlePacket(e,t,s){const r=this.packetSession?.packer.packSetSpecialTittlePacket(e,t,s);await this.sendOidbPacket(r,!0)}}export{pr as NTQQPacketApi,dr as initWrapperSession}; diff --git a/src/ntqqapi/native/napcat-protocol-packet/wrapper-session/index.d.ts b/src/ntqqapi/native/napcat-protocol-packet/wrapper-session/index.d.ts new file mode 100644 index 0000000..7939cf4 --- /dev/null +++ b/src/ntqqapi/native/napcat-protocol-packet/wrapper-session/index.d.ts @@ -0,0 +1 @@ +export declare function initWrapperSession(): Promise; diff --git a/src/ntqqapi/native/napcat-protocol-packet/wrapper-session/types.d.ts b/src/ntqqapi/native/napcat-protocol-packet/wrapper-session/types.d.ts new file mode 100644 index 0000000..a3ecdb0 --- /dev/null +++ b/src/ntqqapi/native/napcat-protocol-packet/wrapper-session/types.d.ts @@ -0,0 +1,6 @@ +export interface MsgService { + sendSsoCmdReqByContend: (cmd: string, trace_id: string) => Promise; +} +export type WrapperSession = { + getMsgService(): MsgService; +}; diff --git a/src/onebot11/action/go-cqhttp/SendGroupSign.ts b/src/onebot11/action/go-cqhttp/SendGroupSign.ts new file mode 100644 index 0000000..c80b693 --- /dev/null +++ b/src/onebot11/action/go-cqhttp/SendGroupSign.ts @@ -0,0 +1,20 @@ +import { BaseAction, Schema } from '../BaseAction' +import { ActionName } from '../types' +import { getBuildVersion } from '@/common/utils/misc' +import { selfInfo } from '@/common/globalVars' + +interface Payload { + group_id: number | string +} + +export class SendGroupSign extends BaseAction { + actionName = ActionName.GoCQHTTP_SendGroupSign + payloadSchema = Schema.object({ + group_id: Schema.union([Number, String]).required(), + }) + + async _handle(payload: Payload) { + await this.ctx.app.ntqqPacketApi.sendGroupSignPacket(selfInfo.uin, payload.group_id.toString()) + return null + } +} diff --git a/src/onebot11/action/go-cqhttp/SetGroupSpecialTitle.ts b/src/onebot11/action/go-cqhttp/SetGroupSpecialTitle.ts new file mode 100644 index 0000000..8aa48e7 --- /dev/null +++ b/src/onebot11/action/go-cqhttp/SetGroupSpecialTitle.ts @@ -0,0 +1,25 @@ +import { BaseAction, Schema } from '../BaseAction' +import { ActionName } from '../types' +import { getBuildVersion } from '@/common/utils/misc' + +interface Payload { + group_id: number | string + user_id: number | string + special_title?: string +} + +export class SetGroupSpecialTitle extends BaseAction { + actionName = ActionName.GoCQHTTP_SetGroupSpecialTitle + payloadSchema = Schema.object({ + group_id: Schema.union([Number, String]).required(), + user_id: Schema.union([Number, String]).required(), + special_title: Schema.string() + }) + + async _handle(payload: Payload) { + const uid = await this.ctx.ntUserApi.getUidByUin(payload.user_id.toString(), payload.group_id.toString()) + if (!uid) throw new Error(`用户${payload.user_id}的uid获取失败`) + await this.ctx.app.ntqqPacketApi.sendSetSpecialTittlePacket(payload.group_id.toString(), uid, payload.special_title || "") + return null + } +} diff --git a/src/onebot11/action/index.ts b/src/onebot11/action/index.ts index 744d74a..665698e 100644 --- a/src/onebot11/action/index.ts +++ b/src/onebot11/action/index.ts @@ -78,6 +78,8 @@ import { GroupPoke } from './llonebot/GroupPoke' import { FriendPoke } from './llonebot/FriendPoke' import { GetGroupFileSystemInfo } from './go-cqhttp/GetGroupFileSystemInfo' import { GetCredentials } from './system/GetCredentials' +import { SetGroupSpecialTitle } from '@/onebot11/action/go-cqhttp/SetGroupSpecialTitle' +import { SendGroupSign } from '@/onebot11/action/go-cqhttp/SendGroupSign' export function initActionMap(adapter: Adapter) { const actionHandlers = [ @@ -161,6 +163,8 @@ export function initActionMap(adapter: Adapter) { new DeleteFriend(adapter), new OCRImage(adapter), new GetGroupFileSystemInfo(adapter), + new SetGroupSpecialTitle(adapter), + new SendGroupSign(adapter), ] const actionMap = new Map() for (const action of actionHandlers) { diff --git a/src/onebot11/action/llonebot/FriendPoke.ts b/src/onebot11/action/llonebot/FriendPoke.ts index 80a4ae5..3b2f7b2 100644 --- a/src/onebot11/action/llonebot/FriendPoke.ts +++ b/src/onebot11/action/llonebot/FriendPoke.ts @@ -13,13 +13,15 @@ export class FriendPoke extends BaseAction { }) async _handle(payload: Payload) { - if (!this.ctx.app.native.checkPlatform()) { - throw new Error('当前系统平台或架构不支持') - } - if (!this.ctx.app.native.checkVersion()) { - throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27333—27597`) - } - await this.ctx.app.native.sendFriendPoke(+payload.user_id) + // if (!this.ctx.app.native.checkPlatform()) { + // throw new Error('当前系统平台或架构不支持') + // } + // if (!this.ctx.app.native.checkVersion()) { + // throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27333—27597`) + // } + // await this.ctx.app.native.sendFriendPoke(+payload.user_id) + + await this.ctx.app.ntqqPacketApi.sendPokePacket(+payload.user_id) return null } } diff --git a/src/onebot11/action/llonebot/GroupPoke.ts b/src/onebot11/action/llonebot/GroupPoke.ts index 89f8787..1025378 100644 --- a/src/onebot11/action/llonebot/GroupPoke.ts +++ b/src/onebot11/action/llonebot/GroupPoke.ts @@ -1,6 +1,7 @@ import { BaseAction, Schema } from '../BaseAction' import { ActionName } from '../types' import { getBuildVersion } from '@/common/utils/misc' +import {NTQQPacketApi} from '@/ntqqapi/native/napcat-protocol-packet' interface Payload { group_id: number | string @@ -15,13 +16,14 @@ export class GroupPoke extends BaseAction { }) async _handle(payload: Payload) { - if (!this.ctx.app.native.checkPlatform()) { - throw new Error('当前系统平台或架构不支持') - } - if (!this.ctx.app.native.checkVersion()) { - throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27333—27597`) - } - await this.ctx.app.native.sendGroupPoke(+payload.group_id, +payload.user_id) + // if (!this.ctx.app.native.checkPlatform()) { + // throw new Error('当前系统平台或架构不支持') + // } + // if (!this.ctx.app.native.checkVersion()) { + // throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27333—27597`) + // } + // await this.ctx.app.native.sendGroupPoke(+payload.group_id, +payload.user_id) + await this.ctx.app.ntqqPacketApi.sendPokePacket(+payload.user_id, +payload.group_id) return null } } diff --git a/src/onebot11/action/types.ts b/src/onebot11/action/types.ts index 74c8048..126db44 100644 --- a/src/onebot11/action/types.ts +++ b/src/onebot11/action/types.ts @@ -91,4 +91,6 @@ export enum ActionName { GoCQHTTP_DeleteFriend = 'delete_friend', GoCQHTTP_OCRImage = 'ocr_image', GoCQHTTP_GetGroupFileSystemInfo = 'get_group_file_system_info', + GoCQHTTP_SetGroupSpecialTitle = 'set_group_special_title', + GoCQHTTP_SendGroupSign = 'send_group_sign', } diff --git a/src/version.ts b/src/version.ts index 94bbc74..355f74a 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const version = '4.1.4' +export const version = '4.1.5' From cd679cc0410f03622cd1f53727317daed5f71a43 Mon Sep 17 00:00:00 2001 From: linyuchen Date: Wed, 13 Nov 2024 19:27:21 +0800 Subject: [PATCH 5/7] =?UTF-8?q?refactor:=20=E8=AE=BE=E7=BD=AE=E7=BE=A4?= =?UTF-8?q?=E5=91=98=E5=A4=B4=E8=A1=94=E7=9A=84=E6=97=B6=E5=80=99=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E6=98=AF=E5=90=A6=E7=BE=A4=E4=B8=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/onebot11/action/go-cqhttp/SetGroupSpecialTitle.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/onebot11/action/go-cqhttp/SetGroupSpecialTitle.ts b/src/onebot11/action/go-cqhttp/SetGroupSpecialTitle.ts index 8aa48e7..0344939 100644 --- a/src/onebot11/action/go-cqhttp/SetGroupSpecialTitle.ts +++ b/src/onebot11/action/go-cqhttp/SetGroupSpecialTitle.ts @@ -1,6 +1,8 @@ import { BaseAction, Schema } from '../BaseAction' import { ActionName } from '../types' import { getBuildVersion } from '@/common/utils/misc' +import { selfInfo } from '@/common/globalVars' +import { GroupMemberRole } from '@/ntqqapi/types' interface Payload { group_id: number | string @@ -19,6 +21,10 @@ export class SetGroupSpecialTitle extends BaseAction { async _handle(payload: Payload) { const uid = await this.ctx.ntUserApi.getUidByUin(payload.user_id.toString(), payload.group_id.toString()) if (!uid) throw new Error(`用户${payload.user_id}的uid获取失败`) + const self = await this.ctx.ntGroupApi.getGroupMember(payload.group_id.toString(), selfInfo.uid, false) + if (self.role !== GroupMemberRole.Owner){ + throw new Error(`不是群${payload.group_id}的群主,无法设置群头衔`) + } await this.ctx.app.ntqqPacketApi.sendSetSpecialTittlePacket(payload.group_id.toString(), uid, payload.special_title || "") return null } From 1bf5e41bdcacf9860c1e74c579aee12708f635b7 Mon Sep 17 00:00:00 2001 From: linyuchen Date: Wed, 13 Nov 2024 19:27:50 +0800 Subject: [PATCH 6/7] =?UTF-8?q?chore:=20=E5=8D=8F=E8=AE=AE=E5=8C=85?= =?UTF-8?q?=E6=94=AF=E6=8C=81=20macOS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Moehoo/MoeHoo.darwin.arm64.node | Bin 0 -> 1177560 bytes .../native/napcat-protocol-packet/index.d.ts | 1 + .../native/napcat-protocol-packet/index.mjs | 7188 ++++++++++++++++- 3 files changed, 7188 insertions(+), 1 deletion(-) create mode 100644 src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.darwin.arm64.node diff --git a/src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.darwin.arm64.node b/src/ntqqapi/native/napcat-protocol-packet/Moehoo/MoeHoo.darwin.arm64.node new file mode 100644 index 0000000000000000000000000000000000000000..829749c485892240ea4401b9ae82b889f35a1da5 GIT binary patch literal 1177560 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 GSo|Ne=this.capacity){const e=this.cache.keys().next().value;void 0!==e&&this.cache.delete(e)}this.cache.set(e,t)}}function k(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function v(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var s=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};s.prototype=t.prototype}else s={};return Object.defineProperty(s,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(s,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),s}var S={exports:{}};const E=["nodebuffer","arraybuffer","fragments"],N="undefined"!=typeof Blob;N&&E.push("blob");var T={BINARY_TYPES:E,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:N,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}};const I=v(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));const{EMPTY_BUFFER:O}=T,x=Buffer[Symbol.species];function B(e,t,s,r,i){for(let n=0;n{this.pending--,this[U]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[U]()}[U](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[L])}}},{kStatusCode:F}=T,V=Buffer[Symbol.species],j=Buffer.from([0,0,255,255]),M=Symbol("permessage-deflate"),W=Symbol("total-length"),$=Symbol("callback"),G=Symbol("buffers"),Q=Symbol("error");let q;var X=class{constructor(e,t,s){if(this._maxPayload=0|s,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!q){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;q=new D(e)}}static get extensionName(){return"permessage-deflate"}offer(){const e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){const e=this._deflate[$];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const t=this._options,s=e.find((e=>!(!1===t.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===t.serverMaxWindowBits||"number"==typeof t.serverMaxWindowBits&&t.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof t.clientMaxWindowBits&&!e.client_max_window_bits)));if(!s)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(s.server_no_context_takeover=!0),t.clientNoContextTakeover&&(s.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(s.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?s.client_max_window_bits=t.clientMaxWindowBits:!0!==s.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete s.client_max_window_bits,s}acceptAsClient(e){const t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach((e=>{Object.keys(e).forEach((t=>{let s=e[t];if(s.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(s=s[0],"client_max_window_bits"===t){if(!0!==s){const e=+s;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${s}`)}else if("server_max_window_bits"===t){const e=+s;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${s}`);s=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==s)throw new TypeError(`Invalid value for parameter "${t}": ${s}`)}e[t]=s}))})),e}decompress(e,t,s){q.add((r=>{this._decompress(e,t,((e,t)=>{r(),s(e,t)}))}))}compress(e,t,s){q.add((r=>{this._compress(e,t,((e,t)=>{r(),s(e,t)}))}))}_decompress(e,t,s){const r=this._isServer?"client":"server";if(!this._inflate){const e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?R.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=R.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[M]=this,this._inflate[W]=0,this._inflate[G]=[],this._inflate.on("error",Z),this._inflate.on("data",Y)}this._inflate[$]=s,this._inflate.write(e),t&&this._inflate.write(j),this._inflate.flush((()=>{const e=this._inflate[Q];if(e)return this._inflate.close(),this._inflate=null,void s(e);const i=A.concat(this._inflate[G],this._inflate[W]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[W]=0,this._inflate[G]=[],t&&this.params[`${r}_no_context_takeover`]&&this._inflate.reset()),s(null,i)}))}_compress(e,t,s){const r=this._isServer?"server":"client";if(!this._deflate){const e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?R.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=R.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[W]=0,this._deflate[G]=[],this._deflate.on("data",K)}this._deflate[$]=s,this._deflate.write(e),this._deflate.flush(R.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=A.concat(this._deflate[G],this._deflate[W]);t&&(e=new V(e.buffer,e.byteOffset,e.length-4)),this._deflate[$]=null,this._deflate[W]=0,this._deflate[G]=[],t&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),s(null,e)}))}};function K(e){this[G].push(e),this[W]+=e.length}function Y(e){this[W]+=e.length,this[M]._maxPayload<1||this[W]<=this[M]._maxPayload?this[G].push(e):(this[Q]=new RangeError("Max payload size exceeded"),this[Q].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Q][F]=1009,this.removeListener("data",Y),this.reset())}function Z(e){this[M]._inflate=null,e[F]=1007,this[$](e)}var J={exports:{}};const z=v(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));const{isUtf8:H}=r,{hasBlob:ee}=T;function te(e){const t=e.length;let s=0;for(;s=t||128!=(192&e[s+1])||128!=(192&e[s+2])||224===e[s]&&128==(224&e[s+1])||237===e[s]&&160==(224&e[s+1]))return!1;s+=3}else{if(240!=(248&e[s]))return!1;if(s+3>=t||128!=(192&e[s+1])||128!=(192&e[s+2])||128!=(192&e[s+3])||240===e[s]&&128==(240&e[s+1])||244===e[s]&&e[s+1]>143||e[s]>244)return!1;s+=4}else s++;return!0}if(J.exports={isBlob:function(e){return ee&&"object"==typeof e&&"function"==typeof e.arrayBuffer&&"string"==typeof e.type&&"function"==typeof e.stream&&("Blob"===e[Symbol.toStringTag]||"File"===e[Symbol.toStringTag])},isValidStatusCode:function(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},isValidUTF8:te,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},H)J.exports.isValidUTF8=function(e){return e.length<24?te(e):H(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{const e=z;J.exports.isValidUTF8=function(t){return t.length<32?te(t):e(t)}}catch(e){}var se=J.exports;const{Writable:re}=t,ie=X,{BINARY_TYPES:ne,EMPTY_BUFFER:oe,kStatusCode:ae,kWebSocket:ce}=T,{concat:he,toArrayBuffer:le,unmask:fe}=C,{isValidStatusCode:ue,isValidUTF8:de}=se,pe=Buffer[Symbol.species];var me=class extends re{constructor(e={}){super(),this._allowSynchronousEvents=void 0===e.allowSynchronousEvents||e.allowSynchronousEvents,this._binaryType=e.binaryType||ne[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[ce]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,s){if(8===this._opcode&&0==this._state)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=s.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(s.buffer,s.byteOffset,e),r),this._buffers[0]=new pe(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return t}startLoop(e){this._loop=!0;do{switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:return void(this._loop=!1)}}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2)return void(this._loop=!1);const t=this.consume(2);if(48&t[0]){return void e(this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3"))}const s=!(64&~t[0]);if(!s||this._extensions[ie.extensionName]){if(this._fin=!(128&~t[0]),this._opcode=15&t[0],this._payloadLength=127&t[1],0===this._opcode){if(s){return void e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}if(!this._fragmented){return void e(this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE"))}this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented){return void e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"))}this._compressed=s}else{if(!(this._opcode>7&&this._opcode<11)){return void e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"))}if(!this._fin){return void e(this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN"))}if(s){return void e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength){return void e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"))}}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=!(128&~t[1]),this._isServer){if(!this._masked){return void e(this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK"))}}else if(this._masked){return void e(this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK"))}126===this._payloadLength?this._state=1:127===this._payloadLength?this._state=2:this.haveLength(e)}else{e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}}getPayloadLength16(e){this._bufferedBytes<2?this._loop=!1:(this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e))}getPayloadLength64(e){if(this._bufferedBytes<8)return void(this._loop=!1);const t=this.consume(8),s=t.readUInt32BE(0);if(s>Math.pow(2,21)-1){e(this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH"))}else this._payloadLength=s*Math.pow(2,32)+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"))}else this._masked?this._state=3:this._state=4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=oe;if(this._payloadLength){if(this._bufferedBytes7)this.controlMessage(t,e);else{if(this._compressed)return this._state=5,void this.decompress(t,e);t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}}decompress(e,t){this._extensions[ie.extensionName].decompress(e,this._fin,((e,s)=>{if(e)return t(e);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){const e=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");return void t(e)}this._fragments.push(s)}this.dataMessage(t),0===this._state&&this.startLoop(t)}))}dataMessage(e){if(!this._fin)return void(this._state=0);const t=this._messageLength,s=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let r;r="nodebuffer"===this._binaryType?he(s,t):"arraybuffer"===this._binaryType?le(he(s,t)):"blob"===this._binaryType?new Blob(s):s,this._allowSynchronousEvents?(this.emit("message",r,!0),this._state=0):(this._state=6,setImmediate((()=>{this.emit("message",r,!0),this._state=0,this.startLoop(e)})))}else{const r=he(s,t);if(!this._skipUTF8Validation&&!de(r)){const t=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");return void e(t)}5===this._state||this._allowSynchronousEvents?(this.emit("message",r,!1),this._state=0):(this._state=6,setImmediate((()=>{this.emit("message",r,!1),this._state=0,this.startLoop(e)})))}}controlMessage(e,t){if(8!==this._opcode)this._allowSynchronousEvents?(this.emit(9===this._opcode?"ping":"pong",e),this._state=0):(this._state=6,setImmediate((()=>{this.emit(9===this._opcode?"ping":"pong",e),this._state=0,this.startLoop(t)})));else{if(0===e.length)this._loop=!1,this.emit("conclude",1005,oe),this.end();else{const s=e.readUInt16BE(0);if(!ue(s)){const e=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");return void t(e)}const r=new pe(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!de(r)){const e=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");return void t(e)}this._loop=!1,this.emit("conclude",s,r),this.end()}this._state=0}}createError(e,t,s,r,i){this._loop=!1,this._errored=!0;const n=new e(s?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(n,this.createError),n.code=i,n[ae]=r,n}};const{randomFillSync:ge}=i,_e=X,{EMPTY_BUFFER:be,kWebSocket:ye,NOOP:we}=T,{isBlob:ke,isValidStatusCode:ve}=se,{mask:Se,toBuffer:Ee}=C,Ne=Symbol("kByteLength"),Te=Buffer.alloc(4),Ie=8192;let Oe,xe=Ie;var Be=class e{constructor(e,t,s){this._extensions=t||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=we,this[ye]=void 0}static frame(e,t){let s,r,i=!1,n=2,o=!1;t.mask&&(s=t.maskBuffer||Te,t.generateMask?t.generateMask(s):(xe===Ie&&(void 0===Oe&&(Oe=Buffer.alloc(Ie)),ge(Oe,0,Ie),xe=0),s[0]=Oe[xe++],s[1]=Oe[xe++],s[2]=Oe[xe++],s[3]=Oe[xe++]),o=!(s[0]|s[1]|s[2]|s[3]),n=6),"string"==typeof e?r=t.mask&&!o||void 0===t[Ne]?(e=Buffer.from(e)).length:t[Ne]:(r=e.length,i=t.mask&&t.readOnly&&!o);let a=r;r>=65536?(n+=8,a=127):r>125&&(n+=2,a=126);const c=Buffer.allocUnsafe(i?r+n:n);return c[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(c[0]|=64),c[1]=a,126===a?c.writeUInt16BE(r,2):127===a&&(c[2]=c[3]=0,c.writeUIntBE(r,4,6)),t.mask?(c[1]|=128,c[n-4]=s[0],c[n-3]=s[1],c[n-2]=s[2],c[n-1]=s[3],o?[c,e]:i?(Se(e,s,c,n,r),[c]):(Se(e,s,e,0,r),[c,e])):[c,e]}close(t,s,r,i){let n;if(void 0===t)n=be;else{if("number"!=typeof t||!ve(t))throw new TypeError("First argument must be a valid error code number");if(void 0!==s&&s.length){const e=Buffer.byteLength(s);if(e>123)throw new RangeError("The message must not be greater than 123 bytes");n=Buffer.allocUnsafe(2+e),n.writeUInt16BE(t,0),"string"==typeof s?n.write(s,2):n.set(s,2)}else n=Buffer.allocUnsafe(2),n.writeUInt16BE(t,0)}const o={[Ne]:n.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};0!==this._state?this.enqueue([this.dispatch,n,!1,o,i]):this.sendFrame(e.frame(n,o),i)}ping(t,s,r){let i,n;if("string"==typeof t?(i=Buffer.byteLength(t),n=!1):ke(t)?(i=t.size,n=!1):(i=(t=Ee(t)).length,n=Ee.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const o={[Ne]:i,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:9,readOnly:n,rsv1:!1};ke(t)?0!==this._state?this.enqueue([this.getBlobData,t,!1,o,r]):this.getBlobData(t,!1,o,r):0!==this._state?this.enqueue([this.dispatch,t,!1,o,r]):this.sendFrame(e.frame(t,o),r)}pong(t,s,r){let i,n;if("string"==typeof t?(i=Buffer.byteLength(t),n=!1):ke(t)?(i=t.size,n=!1):(i=(t=Ee(t)).length,n=Ee.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const o={[Ne]:i,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:10,readOnly:n,rsv1:!1};ke(t)?0!==this._state?this.enqueue([this.getBlobData,t,!1,o,r]):this.getBlobData(t,!1,o,r):0!==this._state?this.enqueue([this.dispatch,t,!1,o,r]):this.sendFrame(e.frame(t,o),r)}send(e,t,s){const r=this._extensions[_e.extensionName];let i,n,o=t.binary?2:1,a=t.compress;"string"==typeof e?(i=Buffer.byteLength(e),n=!1):ke(e)?(i=e.size,n=!1):(i=(e=Ee(e)).length,n=Ee.readOnly),this._firstFragment?(this._firstFragment=!1,a&&r&&r.params[r._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=i>=r._threshold),this._compress=a):(a=!1,o=0),t.fin&&(this._firstFragment=!0);const c={[Ne]:i,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:o,readOnly:n,rsv1:a};ke(e)?0!==this._state?this.enqueue([this.getBlobData,e,this._compress,c,s]):this.getBlobData(e,this._compress,c,s):0!==this._state?this.enqueue([this.dispatch,e,this._compress,c,s]):this.dispatch(e,this._compress,c,s)}getBlobData(t,s,r,i){this._bufferedBytes+=r[Ne],this._state=2,t.arrayBuffer().then((t=>{if(this._socket.destroyed){const e=new Error("The socket was closed while the blob was being read");return void process.nextTick(Pe,this,e,i)}this._bufferedBytes-=r[Ne];const n=Ee(t);s?this.dispatch(n,s,r,i):(this._state=0,this.sendFrame(e.frame(n,r),i),this.dequeue())})).catch((e=>{process.nextTick(Ce,this,e,i)}))}dispatch(t,s,r,i){if(!s)return void this.sendFrame(e.frame(t,r),i);const n=this._extensions[_e.extensionName];this._bufferedBytes+=r[Ne],this._state=1,n.compress(t,r.fin,((t,s)=>{if(this._socket.destroyed){Pe(this,new Error("The socket was closed while data was being compressed"),i)}else this._bufferedBytes-=r[Ne],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(s,r),i),this.dequeue()}))}dequeue(){for(;0===this._state&&this._queue.length;){const e=this._queue.shift();this._bufferedBytes-=e[3][Ne],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][Ne],this._queue.push(e)}sendFrame(e,t){2===e.length?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function Pe(e,t,s){"function"==typeof s&&s(t);for(let s=0;s{let s=e[t];return Array.isArray(s)||(s=[s]),s.map((e=>[t].concat(Object.keys(e).map((t=>{let s=e[t];return Array.isArray(s)||(s=[s]),s.map((e=>!0===e?t:`${t}=${e}`)).join("; ")}))).join("; "))).join(", ")})).join(", ")},parse:function(e){const t=Object.create(null);let s,r,i=Object.create(null),n=!1,o=!1,a=!1,c=-1,h=-1,l=-1,f=0;for(;f0&&e.unshift(t),e.on("close",Qt),e.on("data",qt),e.on("end",Xt),e.on("error",Kt),this._readyState=Ot.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this._readyState=Ot.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[at.extensionName]&&this._extensions[at.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=Ot.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==Ot.CLOSED)if(this.readyState!==Ot.CONNECTING)this.readyState!==Ot.CLOSING?(this._readyState=Ot.CLOSING,this._sender.close(e,t,!this._isServer,(e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())})),Gt(this)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();else{const e="WebSocket was closed before the connection was established";Lt(this,this._req,e)}}pause(){this.readyState!==Ot.CONNECTING&&this.readyState!==Ot.CLOSED&&(this._paused=!0,this._socket.pause())}ping(e,t,s){if(this.readyState===Ot.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===Ot.OPEN?(void 0===t&&(t=!this._isServer),this._sender.ping(e||ut,t,s)):Ut(this,e,s)}pong(e,t,s){if(this.readyState===Ot.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(s=e,e=t=void 0):"function"==typeof t&&(s=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===Ot.OPEN?(void 0===t&&(t=!this._isServer),this._sender.pong(e||ut,t,s)):Ut(this,e,s)}resume(){this.readyState!==Ot.CONNECTING&&this.readyState!==Ot.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,s){if(this.readyState===Ot.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(s=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==Ot.OPEN)return void Ut(this,e,s);const r={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[at.extensionName]||(r.compress=!1),this._sender.send(e||ut,r,s)}terminate(){if(this.readyState!==Ot.CLOSED)if(this.readyState!==Ot.CONNECTING)this._socket&&(this._readyState=Ot.CLOSING,this._socket.destroy());else{const e="WebSocket was closed before the connection was established";Lt(this,this._req,e)}}}function xt(e,t,s,r){const i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Nt[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=i.autoPong,!Nt.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${Nt.join(", ")})`);let n;if(t instanceof ot)n=t;else try{n=new ot(t)}catch(e){throw new SyntaxError(`Invalid URL: ${t}`)}"http:"===n.protocol?n.protocol="ws:":"https:"===n.protocol&&(n.protocol="wss:"),e._url=n.href;const o="wss:"===n.protocol,a="ws+unix:"===n.protocol;let c;if("ws:"===n.protocol||o||a?a&&!n.pathname?c="The URL's pathname is empty":n.hash&&(c="The URL contains a fragment identifier"):c='The URL\'s protocol must be one of "ws:", "wss:", "http:", "https", or "ws+unix:"',c){const t=new SyntaxError(c);if(0===e._redirects)throw t;return void Bt(e,t)}const h=o?443:80,l=it(16).toString("base64"),f=o?et.request:tt.request,u=new Set;let d,p;if(i.createConnection=i.createConnection||(o?Ct:Pt),i.defaultPort=i.defaultPort||h,i.port=n.port||h,i.host=n.hostname.startsWith("[")?n.hostname.slice(1,-1):n.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":l,Connection:"Upgrade",Upgrade:"websocket"},i.path=n.pathname+n.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(d=new at(!0!==i.perMessageDeflate?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=kt({[at.extensionName]:d.offer()})),s.length){for(const e of s){if("string"!=typeof e||!It.test(e)||u.has(e))throw new SyntaxError("An invalid or duplicated subprotocol was specified");u.add(e)}i.headers["Sec-WebSocket-Protocol"]=s.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(n.username||n.password)&&(i.auth=`${n.username}:${n.password}`),a){const e=i.path.split(":");i.socketPath=e[0],i.path=e[1]}if(i.followRedirects){if(0===e._redirects){e._originalIpc=a,e._originalSecure=o,e._originalHostOrSocketPath=a?i.socketPath:n.host;const t=r&&r.headers;if(r={...r,headers:{}},t)for(const[e,s]of Object.entries(t))r.headers[e.toLowerCase()]=s}else if(0===e.listenerCount("redirect")){const t=a?!!e._originalIpc&&i.socketPath===e._originalHostOrSocketPath:!e._originalIpc&&n.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!o)&&(delete i.headers.authorization,delete i.headers.cookie,t||delete i.headers.host,i.auth=void 0)}i.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),p=e._req=f(i),e._redirects&&e.emit("redirect",e.url,p)}else p=e._req=f(i);i.timeout&&p.on("timeout",(()=>{Lt(e,p,"Opening handshake has timed out")})),p.on("error",(t=>{null===p||p[Et]||(p=e._req=null,Bt(e,t))})),p.on("response",(n=>{const o=n.headers.location,a=n.statusCode;if(o&&i.followRedirects&&a>=300&&a<400){if(++e._redirects>i.maxRedirects)return void Lt(e,p,"Maximum redirects exceeded");let n;p.abort();try{n=new ot(o,t)}catch(t){const s=new SyntaxError(`Invalid URL: ${o}`);return void Bt(e,s)}xt(e,n,s,r)}else e.emit("unexpected-response",p,n)||Lt(e,p,`Unexpected server response: ${n.statusCode}`)})),p.on("upgrade",((t,s,r)=>{if(e.emit("upgrade",t),e.readyState!==Ot.CONNECTING)return;p=e._req=null;const n=t.headers.upgrade;if(void 0===n||"websocket"!==n.toLowerCase())return void Lt(e,s,"Invalid Upgrade header");const o=nt("sha1").update(l+dt).digest("base64");if(t.headers["sec-websocket-accept"]!==o)return void Lt(e,s,"Invalid Sec-WebSocket-Accept header");const a=t.headers["sec-websocket-protocol"];let c;if(void 0!==a?u.size?u.has(a)||(c="Server sent an invalid subprotocol"):c="Server sent a subprotocol but none was requested":u.size&&(c="Server sent no subprotocol"),c)return void Lt(e,s,c);a&&(e._protocol=a);const h=t.headers["sec-websocket-extensions"];if(void 0!==h){if(!d){return void Lt(e,s,"Server sent a Sec-WebSocket-Extensions header but no extension was requested")}let t;try{t=vt(h)}catch(t){return void Lt(e,s,"Invalid Sec-WebSocket-Extensions header")}const r=Object.keys(t);if(1!==r.length||r[0]!==at.extensionName){return void Lt(e,s,"Server indicated an extension that was not requested")}try{d.accept(t[at.extensionName])}catch(t){return void Lt(e,s,"Invalid Sec-WebSocket-Extensions header")}e._extensions[at.extensionName]=d}e.setSocket(s,r,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})})),i.finishRequest?i.finishRequest(p,e):p.end()}function Bt(e,t){e._readyState=Ot.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function Pt(e){return e.path=e.socketPath,st.connect(e)}function Ct(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=st.isIP(e.host)?"":e.host),rt.connect(e)}function Lt(e,t,s){e._readyState=Ot.CLOSING;const r=new Error(s);Error.captureStackTrace(r,Lt),t.setHeader?(t[Et]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(Bt,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function Ut(e,t,s){if(t){const s=lt(t)?t.size:St(t).length;e._socket?e._sender._bufferedBytes+=s:e._bufferedAmount+=s}if(s){const t=new Error(`WebSocket is not open: readyState ${e.readyState} (${Tt[e.readyState]})`);process.nextTick(s,t)}}function Rt(e,t){const s=this[_t];s._closeFrameReceived=!0,s._closeMessage=t,s._closeCode=e,void 0!==s._socket[_t]&&(s._socket.removeListener("data",qt),process.nextTick(Wt,s._socket),1005===e?s.close():s.close(e,t))}function At(){const e=this[_t];e.isPaused||e._socket.resume()}function Dt(e){const t=this[_t];void 0!==t._socket[_t]&&(t._socket.removeListener("data",qt),process.nextTick(Wt,t._socket),t.close(e[gt])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function Ft(){this[_t].emitClose()}function Vt(e,t){this[_t].emit("message",e,t)}function jt(e){const t=this[_t];t._autoPong&&t.pong(e,!this._isServer,bt),t.emit("ping",e)}function Mt(e){this[_t].emit("pong",e)}function Wt(e){e.resume()}function $t(e){const t=this[_t];t.readyState!==Ot.CLOSED&&(t.readyState===Ot.OPEN&&(t._readyState=Ot.CLOSING,Gt(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function Gt(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),3e4)}function Qt(){const e=this[_t];let t;this.removeListener("close",Qt),this.removeListener("data",qt),this.removeListener("end",Xt),e._readyState=Ot.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||e._receiver.write(t),e._receiver.end(),this[_t]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",Ft),e._receiver.on("finish",Ft))}function qt(e){this[_t]._receiver.write(e)||this.pause()}function Xt(){const e=this[_t];e._readyState=Ot.CLOSING,e._receiver.end(),this.end()}function Kt(){const e=this[_t];this.removeListener("error",Kt),this.on("error",bt),e&&(e._readyState=Ot.CLOSING,this.destroy())}Object.defineProperty(Ot,"CONNECTING",{enumerable:!0,value:Tt.indexOf("CONNECTING")}),Object.defineProperty(Ot.prototype,"CONNECTING",{enumerable:!0,value:Tt.indexOf("CONNECTING")}),Object.defineProperty(Ot,"OPEN",{enumerable:!0,value:Tt.indexOf("OPEN")}),Object.defineProperty(Ot.prototype,"OPEN",{enumerable:!0,value:Tt.indexOf("OPEN")}),Object.defineProperty(Ot,"CLOSING",{enumerable:!0,value:Tt.indexOf("CLOSING")}),Object.defineProperty(Ot.prototype,"CLOSING",{enumerable:!0,value:Tt.indexOf("CLOSING")}),Object.defineProperty(Ot,"CLOSED",{enumerable:!0,value:Tt.indexOf("CLOSED")}),Object.defineProperty(Ot.prototype,"CLOSED",{enumerable:!0,value:Tt.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(Ot.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(Ot.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[pt])return t[mt];return null},set(t){for(const t of this.listeners(e))if(t[pt]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[pt]:!0})}})})),Ot.prototype.addEventListener=yt,Ot.prototype.removeEventListener=wt;const Yt=k(Ot);class Zt{cb=new w(500);isAvailable=!1;wrapperSession;constructor(e){this.wrapperSession=e}randText(e){let t="";const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let r=0;r{}){return new Promise(((o,a)=>{const c=setTimeout((()=>{a(new Error(`sendCommand timed out after ${i} ms for ${e} with trace_id ${s}`))}),i);this.registerCallback(s,"send",(async e=>{n(e),r||(clearTimeout(c),o(e))})),r&&this.registerCallback(s,"recv",(async e=>{clearTimeout(c),o(e)})),this.sendCommandImpl(e,t,s)}))}async sendPacket(e,t,s=!1){return new Promise(((r,n)=>{if(!this.available)return void console.error("NapCat.Packet 未初始化!");const o=i.createHash("md5").update(t).digest("hex"),a=(this.randText(4)+o+t).slice(0,t.length/2);this.sendCommand(e,t,a,s,2e4,(async()=>{await this.wrapperSession.getMsgService().sendSsoCmdReqByContend(e,a)})).then((e=>r(e))).catch((e=>n(e)))}))}async sendOidbPacket(e,t=!1){return this.sendPacket(e.cmd,e.data,t)}}class Jt extends Zt{websocket;isConnected=!1;reconnectAttempts=0;maxReconnectAttempts=60;clientUrl="";logger=console;constructor(e){super(e),this.clientUrl="ws://127.0.0.1:8086/ws"}check(){return!0}sendCommandImpl(e,t,s){throw new Error("Method not implemented.")}connect(e){return new Promise(((t,s)=>{this.websocket=new Yt(this.clientUrl),this.websocket.on("error",(e=>{})),this.websocket.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.logger.log.bind(this.logger)(`[Core] [Packet Server] 已连接到 ${this.clientUrl}`),e(),t()},this.websocket.onerror=e=>{s(new Error(`${e.message}`))},this.websocket.onmessage=e=>{this.handleMessage(e.data).then().catch()},this.websocket.onclose=()=>{this.isConnected=!1,this.attemptReconnect(e)}}))}attemptReconnect(e){try{this.reconnectAttempts{this.connect(e).catch((e=>{this.logger.error.bind(this.logger)(`[Core] [Packet Server] 尝试重连失败:${e.message}`)}))}),5e3*this.reconnectAttempts)):this.logger.error.bind(this.logger)(`[Core] [Packet Server] ${this.clientUrl} 已达到最大重连次数!`)}catch(e){this.logger.error.bind(this.logger)(`[Core] [Packet Server] 重连时出错: ${e.message}`)}}async init(e,t,s){if(!this.isConnected||!this.websocket)throw new Error("WebSocket is not connected");const r={action:"init",pid:e,recv:t,send:s};this.websocket.send(JSON.stringify(r))}async handleMessage(e){try{const t=JSON.parse(e.toString()),s=t.trace_id_md5,r=t?.type??"init",i=this.cb.get(s+r);i&&await i(t.data)}catch(e){this.logger.error.bind(this.logger)(`Error parsing message: ${e}`)}}}class zt extends Zt{supportedPlatforms=["win32.x64","linux.x64","linux.arm64"];MoeHooExport={exports:{}};sendEvent=new w(500);constructor(e){super(e)}get available(){return this.isAvailable}check(){const e=process.platform+"."+process.arch;if(!this.supportedPlatforms.includes(e))return console.warn(`[Core] [Packet:Native] 不支持的平台: ${e}`),!1;const t=d.join(p(u(import.meta.url)),"./moehoo/MoeHoo."+e+".node");return!!m.existsSync(t)||(console.warn(`[Core] [Packet:Native] 缺失运行时文件: ${t}`),!1)}async init(e,t,s){const r=process.platform+"."+process.arch,i=d.join(p(u(import.meta.url)),"./moehoo/MoeHoo."+r+".node"),o=d.join(p(u(import.meta.url)),"./moehoo/MoeHoo.v1.0.0.node");if(m.existsSync(i)&&!m.existsSync(o))try{m.copyFileSync(i,o)}catch(e){}console.debug("moehoo_path:",o),process.dlopen(this.MoeHooExport,o,_.dlopen.RTLD_LAZY),this.MoeHooExport.exports.InitHook?.(s,t,((e,t,s,r,i)=>{const o=n("md5").update(Buffer.from(i,"hex")).digest("hex");if(0===e&&this.cb.get(o+"recv")&&this.sendEvent.put(r,o),1===e&&this.sendEvent.get(r)){const e=this.sendEvent.get(r),t=this.cb.get(e+"recv");t?.({seq:r,cmd:s,hex_data:i})}})),console.debug("MoeHoo init complete"),this.isAvailable=!0}sendCommandImpl(e,t,s){const r=n("md5").update(s).digest("hex");this.MoeHooExport.exports.SendPacket?.(e,t,r),this.cb.get(r+"send")?.({seq:0,cmd:e,hex_data:""})}connect(e){return e(),Promise.resolve()}}function Ht(e){let t=typeof e;if("object"==t){if(Array.isArray(e))return"array";if(null===e)return"null"}return t}let es="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),ts=[];for(let e=0;e>4,!(128&s))return this.assertBounds(),[e,t];for(let s=3;s<=31;s+=7){let r=this.buf[this.pos++];if(t|=(127&r)<>>r,n=!(i>>>7==0&&0==t),o=255&(n?128|i:i);if(s.push(o),!n)return}const r=e>>>28&15|(7&t)<<4,i=!!(t>>3);if(s.push(255&(i?128|r:r)),i){for(let e=3;e<31;e+=7){const r=t>>>e,i=!(r>>>7==0),n=255&(i?128|r:r);if(s.push(n),!i)return}s.push(t>>>31&1)}}ts["-".charCodeAt(0)]=es.indexOf("+"),ts["_".charCodeAt(0)]=es.indexOf("/"),function(e){e.symbol=Symbol.for("protobuf-ts/unknown"),e.onRead=(s,r,i,n,o)=>{(t(r)?r[e.symbol]:r[e.symbol]=[]).push({no:i,wireType:n,data:o})},e.onWrite=(t,s,r)=>{for(let{no:t,wireType:i,data:n}of e.list(s))r.tag(t,i).raw(n)},e.list=(s,r)=>{if(t(s)){let t=s[e.symbol];return r?t.filter((e=>e.no==r)):t}return[]},e.last=(t,s)=>e.list(t,s).slice(-1)[0];const t=t=>t&&Array.isArray(t[e.symbol])}(ss||(ss={})),function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"}(rs||(rs={}));const os=4294967296;function as(e){let t="-"==e[0];t&&(e=e.slice(1));const s=1e6;let r=0,i=0;function n(t,n){const o=Number(e.slice(t,n));i*=s,r=r*s+o,r>=os&&(i+=r/os|0,r%=os)}return n(-24,-18),n(-18,-12),n(-12,-6),n(-6),[t,r,i]}function cs(e,t){if(t>>>0<=2097151)return""+(os*t+(e>>>0));let s=(e>>>24|t<<8)>>>0&16777215,r=t>>16&65535,i=(16777215&e)+6777216*s+6710656*r,n=s+8147497*r,o=2*r,a=1e7;function c(e,t){let s=e?String(e):"";return t?"0000000".slice(s.length)+s:s}return i>=a&&(n+=Math.floor(i/a),i%=a),n>=a&&(o+=Math.floor(n/a),n%=a),c(o,0)+c(n,o)+c(i,1)}function hs(e,t){if(e>=0){for(;e>127;)t.push(127&e|128),e>>>=7;t.push(e)}else{for(let s=0;s<9;s++)t.push(127&e|128),e>>=7;t.push(1)}}function ls(){let e=this.buf[this.pos++],t=127&e;if(!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<7,!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<14,!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<21,!(128&e))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(15&e)<<28;for(let t=5;128&e&&t<10;t++)e=this.buf[this.pos++];if(128&e)throw new Error("invalid varint");return this.assertBounds(),t>>>0}let fs;function us(e){if(!e)throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}!function(){const e=new DataView(new ArrayBuffer(8)),t=void 0!==globalThis.BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64;fs=t?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:e}:void 0}();const ds=/^-?[0-9]+$/,ps=4294967296,ms=2147483648;class gs{constructor(e,t){this.lo=0|e,this.hi=0|t}isZero(){return 0==this.lo&&0==this.hi}toNumber(){let e=this.hi*ps+(this.lo>>>0);if(!Number.isSafeInteger(e))throw new Error("cannot convert to safe number");return e}}class _s extends gs{static from(e){if(fs)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=fs.C(e);case"number":if(0===e)return this.ZERO;e=fs.C(e);case"bigint":if(!e)return this.ZERO;if(efs.UMAX)throw new Error("ulong too large");return fs.V.setBigUint64(0,e,!0),new _s(fs.V.getInt32(0,!0),fs.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!ds.test(e))throw new Error("string is no integer");let[t,s,r]=as(e);if(t)throw new Error("signed value for ulong");return new _s(s,r);case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");if(e<0)throw new Error("signed value for ulong");return new _s(e,e/ps)}throw new Error("unknown value "+typeof e)}toString(){return fs?this.toBigInt().toString():cs(this.lo,this.hi)}toBigInt(){return us(fs),fs.V.setInt32(0,this.lo,!0),fs.V.setInt32(4,this.hi,!0),fs.V.getBigUint64(0,!0)}}_s.ZERO=new _s(0,0);class bs extends gs{static from(e){if(fs)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=fs.C(e);case"number":if(0===e)return this.ZERO;e=fs.C(e);case"bigint":if(!e)return this.ZERO;if(efs.MAX)throw new Error("signed long too large");return fs.V.setBigInt64(0,e,!0),new bs(fs.V.getInt32(0,!0),fs.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!ds.test(e))throw new Error("string is no integer");let[t,s,r]=as(e);if(t){if(r>ms||r==ms&&0!=s)throw new Error("signed long too small")}else if(r>=ms)throw new Error("signed long too large");let i=new bs(s,r);return t?i.negate():i;case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");return e>0?new bs(e,e/ps):new bs(-e,-e/ps).negate()}throw new Error("unknown value "+typeof e)}isNegative(){return!!(this.hi&ms)}negate(){let e=~this.hi,t=this.lo;return t?t=1+~t:e+=1,new bs(t,e)}toString(){if(fs)return this.toBigInt().toString();if(this.isNegative()){let e=this.negate();return"-"+cs(e.lo,e.hi)}return cs(this.lo,this.hi)}toBigInt(){return us(fs),fs.V.setInt32(0,this.lo,!0),fs.V.setInt32(4,this.hi,!0),fs.V.getBigInt64(0,!0)}}bs.ZERO=new bs(0,0);const ys={readUnknownField:!0,readerFactory:e=>new ws(e)};class ws{constructor(e,t){this.varint64=is,this.uint32=ls,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=null!=t?t:new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0})}tag(){let e=this.uint32(),t=e>>>3,s=7&e;if(t<=0||s<0||s>5)throw new Error("illegal tag: field no "+t+" wire type "+s);return[t,s]}skip(e){let t=this.pos;switch(e){case rs.Varint:for(;128&this.buf[this.pos++];);break;case rs.Bit64:this.pos+=4;case rs.Bit32:this.pos+=4;break;case rs.LengthDelimited:let t=this.uint32();this.pos+=t;break;case rs.StartGroup:let s;for(;(s=this.tag()[1])!==rs.EndGroup;)this.skip(s);break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(t,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let e=this.uint32();return e>>>1^-(1&e)}int64(){return new bs(...this.varint64())}uint64(){return new _s(...this.varint64())}sint64(){let[e,t]=this.varint64(),s=-(1&e);return e=(e>>>1|(1&t)<<31)^s,t=t>>>1^s,new bs(e,t)}bool(){let[e,t]=this.varint64();return 0!==e||0!==t}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return new _s(this.sfixed32(),this.sfixed32())}sfixed64(){return new bs(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function ks(e,t){if(!e)throw new Error(t)}function vs(e){if("number"!=typeof e)throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw new Error("invalid int 32: "+e)}function Ss(e){if("number"!=typeof e)throw new Error("invalid uint 32: "+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw new Error("invalid uint 32: "+e)}function Es(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>34028234663852886e22||e<-34028234663852886e22))throw new Error("invalid float 32: "+e)}const Ns={writeUnknownFields:!0,writerFactory:()=>new Ts};class Ts{constructor(e){this.stack=[],this.textEncoder=null!=e?e:new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Ss(e);e>127;)this.buf.push(127&e|128),e>>>=7;return this.buf.push(e),this}int32(e){return vs(e),hs(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){Es(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){Ss(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){vs(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return vs(e),hs(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){let t=new Uint8Array(8),s=new DataView(t.buffer),r=bs.from(e);return s.setInt32(0,r.lo,!0),s.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),s=new DataView(t.buffer),r=_s.from(e);return s.setInt32(0,r.lo,!0),s.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=bs.from(e);return ns(t.lo,t.hi,this.buf),this}sint64(e){let t=bs.from(e),s=t.hi>>31;return ns(t.lo<<1^s,(t.hi<<1|t.lo>>>31)^s,this.buf),this}uint64(e){let t=_s.from(e);return ns(t.lo,t.hi,this.buf),this}}const Is={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0},Os={ignoreUnknownFields:!1};const xs=Symbol.for("protobuf-ts/message-type");function Bs(e){let t=!1;const s=[];for(let r=0;r!r.includes(e))))return!1;if(!s&&r.some((e=>!i.known.includes(e))))return!1;if(t<1)return!0;for(const r of i.oneofs){const i=e[r];if(!Rs(i))return!1;if(void 0===i.oneofKind)continue;const n=this.fields.find((e=>e.localName===i.oneofKind));if(!n)return!1;if(!this.field(i[i.oneofKind],n,s,t))return!1}for(const r of this.fields)if(void 0===r.oneof&&!this.field(e[r.localName],r,s,t))return!1;return!0}field(e,t,s,r){let i=t.repeat;switch(t.kind){case"scalar":return void 0===e?t.opt:i?this.scalars(e,t.T,r,t.L):this.scalar(e,t.T,t.L);case"enum":return void 0===e?t.opt:i?this.scalars(e,Ps.INT32,r):this.scalar(e,Ps.INT32);case"message":return void 0===e||(i?this.messages(e,t.T(),s,r):this.message(e,t.T(),s,r));case"map":if("object"!=typeof e||null===e)return!1;if(r<2)return!0;if(!this.mapKeys(e,t.K,r))return!1;switch(t.V.kind){case"scalar":return this.scalars(Object.values(e),t.V.T,r,t.V.L);case"enum":return this.scalars(Object.values(e),Ps.INT32,r);case"message":return this.messages(Object.values(e),t.V.T(),s,r)}}return!0}message(e,t,s,r){return s?t.isAssignable(e,r):t.is(e,r)}messages(e,t,s,r){if(!Array.isArray(e))return!1;if(r<2)return!0;if(s){for(let s=0;sparseInt(e))),t,s);case Ps.BOOL:return this.scalars(r.slice(0,s).map((e=>"true"==e||"false"!=e&&e)),t,s);default:return this.scalars(r,t,s,Cs.STRING)}}}function Ds(e,t){switch(t){case Cs.BIGINT:return e.toBigInt();case Cs.NUMBER:return e.toNumber();default:return e.toString()}}class Fs{constructor(e){this.info=e}prepare(){var e;if(void 0===this.fMap){this.fMap={};const t=null!==(e=this.info.fields)&&void 0!==e?e:[];for(const e of t)this.fMap[e.name]=e,this.fMap[e.jsonName]=e,this.fMap[e.localName]=e}}assert(e,t,s){if(!e){let e=Ht(s);throw"number"!=e&&"boolean"!=e||(e=s.toString()),new Error(`Cannot parse JSON ${e} for ${this.info.typeName}#${t}`)}}read(e,t,s){this.prepare();const r=[];for(const[n,o]of Object.entries(e)){const e=this.fMap[n];if(!e){if(!s.ignoreUnknownFields)throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ${n}`);continue}const a=e.localName;let c;if(e.oneof){if(null===o&&("enum"!==e.kind||"google.protobuf.NullValue"!==e.T()[0]))continue;if(r.includes(e.oneof))throw new Error(`Multiple members of the oneof group "${e.oneof}" of ${this.info.typeName} are present in JSON.`);r.push(e.oneof),c=t[e.oneof]={oneofKind:a}}else c=t;if("map"==e.kind){if(null===o)continue;this.assert(null!==(i=o)&&"object"==typeof i&&!Array.isArray(i),e.name,o);const t=c[a];for(const[r,i]of Object.entries(o)){let n;switch(this.assert(null!==i,e.name+" map value",null),e.V.kind){case"message":n=e.V.T().internalJsonRead(i,s);break;case"enum":if(n=this.enum(e.V.T(),i,e.name,s.ignoreUnknownFields),!1===n)continue;break;case"scalar":n=this.scalar(i,e.V.T,e.V.L,e.name)}this.assert(void 0!==n,e.name+" map value",i);let o=r;e.K==Ps.BOOL&&(o="true"==o||"false"!=o&&o),o=this.scalar(o,e.K,Cs.STRING,e.name).toString(),t[o]=n}}else if(e.repeat){if(null===o)continue;this.assert(Array.isArray(o),e.name,o);const t=c[a];for(const r of o){let i;switch(this.assert(null!==r,e.name,null),e.kind){case"message":i=e.T().internalJsonRead(r,s);break;case"enum":if(i=this.enum(e.T(),r,e.name,s.ignoreUnknownFields),!1===i)continue;break;case"scalar":i=this.scalar(r,e.T,e.L,e.name)}this.assert(void 0!==i,e.name,o),t.push(i)}}else switch(e.kind){case"message":if(null===o&&"google.protobuf.Value"!=e.T().typeName){this.assert(void 0===e.oneof,e.name+" (oneof member)",null);continue}c[a]=e.T().internalJsonRead(o,s,c[a]);break;case"enum":let t=this.enum(e.T(),o,e.name,s.ignoreUnknownFields);if(!1===t)continue;c[a]=t;break;case"scalar":c[a]=this.scalar(o,e.T,e.L,e.name)}}var i}enum(e,t,s,r){if("google.protobuf.NullValue"==e[0]&&ks(null===t||"NULL_VALUE"===t,`Unable to parse field ${this.info.typeName}#${s}, enum ${e[0]} only accepts null.`),null===t)return 0;switch(typeof t){case"number":return ks(Number.isInteger(t),`Unable to parse field ${this.info.typeName}#${s}, enum can only be integral number, got ${t}.`),t;case"string":let i=t;e[2]&&t.substring(0,e[2].length)===e[2]&&(i=t.substring(e[2].length));let n=e[1][i];return(void 0!==n||!r)&&(ks("number"==typeof n,`Unable to parse field ${this.info.typeName}#${s}, enum ${e[0]} has no value for "${t}".`),n)}ks(!1,`Unable to parse field ${this.info.typeName}#${s}, cannot parse enum value from ${typeof t}".`)}scalar(e,t,s,r){let i;try{switch(t){case Ps.DOUBLE:case Ps.FLOAT:if(null===e)return 0;if("NaN"===e)return Number.NaN;if("Infinity"===e)return Number.POSITIVE_INFINITY;if("-Infinity"===e)return Number.NEGATIVE_INFINITY;if(""===e){i="empty string";break}if("string"==typeof e&&e.trim().length!==e.length){i="extra whitespace";break}if("string"!=typeof e&&"number"!=typeof e)break;let r=Number(e);if(Number.isNaN(r)){i="not a number";break}if(!Number.isFinite(r)){i="too large or small";break}return t==Ps.FLOAT&&Es(r),r;case Ps.INT32:case Ps.FIXED32:case Ps.SFIXED32:case Ps.SINT32:case Ps.UINT32:if(null===e)return 0;let n;if("number"==typeof e?n=e:""===e?i="empty string":"string"==typeof e&&(e.trim().length!==e.length?i="extra whitespace":n=Number(e)),void 0===n)break;return t==Ps.UINT32?Ss(n):vs(n),n;case Ps.INT64:case Ps.SFIXED64:case Ps.SINT64:if(null===e)return Ds(bs.ZERO,s);if("number"!=typeof e&&"string"!=typeof e)break;return Ds(bs.from(e),s);case Ps.FIXED64:case Ps.UINT64:if(null===e)return Ds(_s.ZERO,s);if("number"!=typeof e&&"string"!=typeof e)break;return Ds(_s.from(e),s);case Ps.BOOL:if(null===e)return!1;if("boolean"!=typeof e)break;return e;case Ps.STRING:if(null===e)return"";if("string"!=typeof e){i="extra whitespace";break}try{encodeURIComponent(e)}catch(i){i="invalid UTF8";break}return e;case Ps.BYTES:if(null===e||""===e)return new Uint8Array(0);if("string"!=typeof e)break;return function(e){let t=3*e.length/4;"="==e[e.length-2]?t-=2:"="==e[e.length-1]&&(t-=1);let s,r=new Uint8Array(t),i=0,n=0,o=0;for(let t=0;t>4,o=s,n=2;break;case 2:r[i++]=(15&o)<<4|(60&s)>>2,o=s,n=3;break;case 3:r[i++]=(3&o)<<6|s,n=0}}if(1==n)throw Error("invalid base64 string.");return r.subarray(0,i)}(e)}}catch(e){i=e.message}this.assert(!1,r+(i?" - "+i:""),e)}}class Vs{constructor(e){var t;this.fields=null!==(t=e.fields)&&void 0!==t?t:[]}write(e,t){const s={},r=e;for(const e of this.fields){if(!e.oneof){let i=this.field(e,r[e.localName],t);void 0!==i&&(s[t.useProtoFieldName?e.name:e.jsonName]=i);continue}const i=r[e.oneof];if(i.oneofKind!==e.localName)continue;const n="scalar"==e.kind||"enum"==e.kind?Object.assign(Object.assign({},t),{emitDefaultValues:!0}):t;let o=this.field(e,i[e.localName],n);ks(void 0!==o),s[t.useProtoFieldName?e.name:e.jsonName]=o}return s}field(e,t,s){let r;if("map"==e.kind){ks("object"==typeof t&&null!==t);const i={};switch(e.V.kind){case"scalar":for(const[s,r]of Object.entries(t)){const t=this.scalar(e.V.T,r,e.name,!1,!0);ks(void 0!==t),i[s.toString()]=t}break;case"message":const r=e.V.T();for(const[n,o]of Object.entries(t)){const t=this.message(r,o,e.name,s);ks(void 0!==t),i[n.toString()]=t}break;case"enum":const n=e.V.T();for(const[r,o]of Object.entries(t)){ks(void 0===o||"number"==typeof o);const t=this.enum(n,o,e.name,!1,!0,s.enumAsInteger);ks(void 0!==t),i[r.toString()]=t}}(s.emitDefaultValues||Object.keys(i).length>0)&&(r=i)}else if(e.repeat){ks(Array.isArray(t));const i=[];switch(e.kind){case"scalar":for(let s=0;s0||s.emitDefaultValues)&&(r=i)}else switch(e.kind){case"scalar":r=this.scalar(e.T,t,e.name,e.opt,s.emitDefaultValues);break;case"enum":r=this.enum(e.T(),t,e.name,e.opt,s.emitDefaultValues,s.enumAsInteger);break;case"message":r=this.message(e.T(),t,e.name,s)}return r}enum(e,t,s,r,i,n){if("google.protobuf.NullValue"==e[0])return i||r?null:void 0;if(void 0!==t){if(0!==t||i||r)return ks("number"==typeof t),ks(Number.isInteger(t)),n||!e[1].hasOwnProperty(t)?t:e[2]?e[2]+e[1][t]:e[1][t]}else ks(r)}message(e,t,s,r){return void 0===t?r.emitDefaultValues?null:void 0:e.internalJsonWrite(t,r)}scalar(e,t,s,r,i){if(void 0===t)return void ks(r);const n=i||r;switch(e){case Ps.INT32:case Ps.SFIXED32:case Ps.SINT32:return 0===t?n?0:void 0:(vs(t),t);case Ps.FIXED32:case Ps.UINT32:return 0===t?n?0:void 0:(Ss(t),t);case Ps.FLOAT:Es(t);case Ps.DOUBLE:return 0===t?n?0:void 0:(ks("number"==typeof t),Number.isNaN(t)?"NaN":t===Number.POSITIVE_INFINITY?"Infinity":t===Number.NEGATIVE_INFINITY?"-Infinity":t);case Ps.STRING:return""===t?n?"":void 0:(ks("string"==typeof t),t);case Ps.BOOL:return!1===t?!n&&void 0:(ks("boolean"==typeof t),t);case Ps.UINT64:case Ps.FIXED64:ks("number"==typeof t||"string"==typeof t||"bigint"==typeof t);let e=_s.from(t);if(e.isZero()&&!n)return;return e.toString();case Ps.INT64:case Ps.SFIXED64:case Ps.SINT64:ks("number"==typeof t||"string"==typeof t||"bigint"==typeof t);let s=bs.from(t);if(s.isZero()&&!n)return;return s.toString();case Ps.BYTES:return ks(t instanceof Uint8Array),t.byteLength?function(e){let t,s="",r=0,i=0;for(let n=0;n>2],i=(3&t)<<4,r=1;break;case 1:s+=es[i|t>>4],i=(15&t)<<2,r=2;break;case 2:s+=es[i|t>>6],s+=es[63&t],r=0}return r&&(s+=es[i],s+="=",1==r&&(s+="=")),s}(t):n?"":void 0}}}function js(e,t=Cs.STRING){switch(e){case Ps.BOOL:return!1;case Ps.UINT64:case Ps.FIXED64:return Ds(_s.ZERO,t);case Ps.INT64:case Ps.SFIXED64:case Ps.SINT64:return Ds(bs.ZERO,t);case Ps.DOUBLE:case Ps.FLOAT:return 0;case Ps.BYTES:return new Uint8Array(0);case Ps.STRING:return"";default:return 0}}class Ms{constructor(e){this.info=e}prepare(){var e;if(!this.fieldNoToField){const t=null!==(e=this.info.fields)&&void 0!==e?e:[];this.fieldNoToField=new Map(t.map((e=>[e.no,e])))}}read(e,t,s,r){this.prepare();const i=void 0===r?e.len:e.pos+r;for(;e.pose.no-t.no))}}write(e,t,s){this.prepare();for(const r of this.fields){let i,n,o=r.repeat,a=r.localName;if(r.oneof){const t=e[r.oneof];if(t.oneofKind!==a)continue;i=t[a],n=!0}else i=e[a],n=!1;switch(r.kind){case"scalar":case"enum":let e="enum"==r.kind?Ps.INT32:r.T;if(o)if(ks(Array.isArray(i)),o==Ls.PACKED)this.packed(t,e,r.no,i);else for(const s of i)this.scalar(t,e,r.no,s,!0);else void 0===i?ks(r.opt):this.scalar(t,e,r.no,i,n||r.opt);break;case"message":if(o){ks(Array.isArray(i));for(const e of i)this.message(t,s,r.T(),r.no,e)}else this.message(t,s,r.T(),r.no,i);break;case"map":ks("object"==typeof i&&null!==i);for(const[e,n]of Object.entries(i))this.mapEntry(t,s,r,e,n)}}let r=s.writeUnknownFields;!1!==r&&(!0===r?ss.onWrite:r)(this.info.typeName,e,t)}mapEntry(e,t,s,r,i){e.tag(s.no,rs.LengthDelimited),e.fork();let n=r;switch(s.K){case Ps.INT32:case Ps.FIXED32:case Ps.UINT32:case Ps.SFIXED32:case Ps.SINT32:n=Number.parseInt(r);break;case Ps.BOOL:ks("true"==r||"false"==r),n="true"==r}switch(this.scalar(e,s.K,1,n,!0),s.V.kind){case"scalar":this.scalar(e,s.V.T,2,i,!0);break;case"enum":this.scalar(e,Ps.INT32,2,i,!0);break;case"message":this.message(e,t,s.V.T(),2,i)}e.join()}message(e,t,s,r,i){void 0!==i&&(s.internalBinaryWrite(i,e.tag(r,rs.LengthDelimited).fork(),t),e.join())}scalar(e,t,s,r,i){let[n,o,a]=this.scalarInfo(t,r);a&&!i||(e.tag(s,n),e[o](r))}packed(e,t,s,r){if(!r.length)return;ks(t!==Ps.BYTES&&t!==Ps.STRING),e.tag(s,rs.LengthDelimited),e.fork();let[,i]=this.scalarInfo(t);for(let t=0;t{const s=e[t];if("scalar"===s.kind){const e=s.repeat?[Ps.STRING,Ps.BYTES].includes(s.type)?Ls.UNPACKED:Ls.PACKED:Ls.NO;return{no:s.no,name:t,kind:"scalar",T:s.type,opt:s.optional,repeat:e}}if("message"===s.kind)return{no:s.no,name:t,kind:"message",repeat:s.repeat?Ls.PACKED:Ls.NO,T:()=>Js.getInstance(s.type())._proto_msg}})),this._proto_msg=new Ys("nya",this._field)}static getInstance(e){let t=this.cache.get(e);return t||(t=new Js(e),this.cache.set(e,t)),t}encode(e){return this._proto_msg.toBinary(this._proto_msg.create(e))}decode(e){return this._proto_msg.fromBinary(e)}}class zs{realMsg;constructor(e){this.realMsg=Js.getInstance(e)}encode(e){return this.realMsg.encode(e)}decode(e){return this.realMsg.decode(e)}}const Hs={command:Zs(1,Ps.UINT32),subCommand:Zs(2,Ps.UINT32),body:Zs(4,Ps.BYTES),errorMsg:Zs(5,Ps.STRING,!0),isReserved:Zs(12,Ps.UINT32)};Zs(4,Ps.BYTES);const er={uin:Zs(1,Ps.UINT32),groupUin:Zs(2,Ps.UINT32),friendUin:Zs(5,Ps.UINT32),ext:Zs(6,Ps.UINT32,!0)},tr={targetUid:Zs(1,Ps.STRING),specialTitle:Zs(5,Ps.STRING),expiredTime:Zs(6,Ps.SINT32),uinName:Zs(7,Ps.STRING),targetName:Zs(8,Ps.STRING)},sr={groupUin:Zs(1,Ps.UINT32),body:Zs(3,Ps.BYTES)},rr={uin:Zs(1,Ps.STRING),groupUin:Zs(2,Ps.STRING),version:Zs(3,Ps.STRING)},ir={body:Zs(2,(()=>rr))};class nr{client;constructor(e){this.client=e}packetPacket(e){return Buffer.from(e).toString("hex")}packOidbPacket(e,t,s,r=!0,i=!1){const n=new zs(Hs).encode({command:e,subCommand:t,body:s,isReserved:r?1:0});return{cmd:`OidbSvcTrpcTcp.0x${e.toString(16).toUpperCase()}_${t}`,data:this.packetPacket(n)}}packPokePacket(e,t){const s=new zs(er).encode({uin:e,groupUin:t,friendUin:t??e,ext:0});return this.packOidbPacket(3795,1,s)}packSetSpecialTittlePacket(e,t,s){const r=new zs(tr).encode({targetUid:t,specialTitle:s,expiredTime:-1,uinName:s}),i=new zs(sr).encode({groupUin:+e,body:r});return this.packOidbPacket(2300,2,i,!1,!1)}packGroupSignReq(e,t){return this.packOidbPacket(3767,1,new zs(ir).encode({body:{uin:e,groupUin:t,version:"9.0.90"}}),!1,!1)}}const or={10:e=>new zt(e),1:e=>new Jt(e)};class ar{client;packer;wrapperSession;constructor(e){this.wrapperSession=e,this.client=this.newClient(),this.packer=new nr(this.client)}newClient(){let e,t="native";switch(t){case"native":console.log("[Core] [Packet] 使用指定的 NativePacketClient 作为后端"),e=new zt(this.wrapperSession);break;case"frida":console.log("[Core] [Packet] 使用指定的 FridaPacketClient 作为后端"),e=new Jt(this.wrapperSession);break;case"auto":case void 0:e=this.judgeClient();break;default:console.error(`[Core] [Packet] 未知的PacketBackend ${t},请检查配置文件!`),e=null}if(!e||!e.check())throw new Error("[Core] [Packet] 无可用的后端,NapCat.Packet将不会加载!");return e}judgeClient(){const e=Object.entries(or).map((([e,t])=>{const s=t(this.wrapperSession),r=+e*+s.check();return{client:s,score:r}})).filter((({score:e})=>e>0)).sort(((e,t)=>t.score-e.score)),t=e[0]?.client;if(!t)throw new Error("[Core] [Packet] 无可用的后端,NapCat.Packet将不会加载!");return console.log(`[Core] [Packet] 自动选择 ${t.constructor.name} 作为后端`),t}}const cr={"6.9.56-28418-arm64":{send:"4471360",recv:"4473BCC"},"3.2.12-28418-x64":{recv:"A0723E0",send:"A06EAE0"},"9.9.15-28418-x64":{recv:"37A9004",send:"37A4BD0"},"9.9.15-28498-x64":{recv:"37A9004",send:"37A4BD0"},"9.9.16-28788-x64":{send:"38076D0",recv:"380BB04"},"3.2.13-28788-x64":{send:"A0CEC20",recv:"A0D2520"},"3.2.13-28788-arm64":{send:"6E91018",recv:"6E94850"},"9.9.16-28971-x64":{send:"38079F0",recv:"380BE24"},"3.2.13-28971-x64":{send:"A0CEF60",recv:"A0D2860"},"3.2.12-28971-arm64":{send:"6E91318",recv:"6E94B50"},"6.9.58-28971-arm64":{send:"449ACA0",recv:"449D50C"},"9.9.16-29271-x64":{send:"3833510",recv:"3837944"},"3.2.13-29271-x64":{send:"A11E680",recv:"A121F80"},"3.2.13-29271-arm64":{send:"6ECA098",recv:"6ECD8D0"},"9.9.16-29456-x64":{send:"3835CD0",recv:"383A104"},"3.2.13-29456-x64":{send:"A11E820",recv:"A122120"},"3.2.13-29456-arm64":{send:"6ECA130",recv:"6ECD968"}};class hr{QQMainPath;QQPackageInfoPath;QQVersionConfigPath;isQuickUpdate;QQVersionConfig;QQPackageInfo;constructor(){this.QQMainPath=process.execPath,this.QQVersionConfigPath=function(e=""){let t;if("win32"===g.platform())t=y.join(y.dirname(e),"versions","config.json");else if("darwin"===g.platform()){const e=g.homedir(),s=y.resolve(e,"./Library/Application Support/QQ");t=y.resolve(s,"./versions/config.json")}else{const e=g.homedir(),s=y.resolve(e,"./.config/QQ");t=y.resolve(s,"./versions/config.json")}if("string"==typeof t&&(b.existsSync(t)||(t=y.join(y.dirname(e),"./resources/app/versions/config.json")),b.existsSync(t)))return t}(this.QQMainPath),this.isQuickUpdate=!!this.QQVersionConfigPath,this.QQVersionConfig=this.isQuickUpdate?JSON.parse(b.readFileSync(this.QQVersionConfigPath).toString()):"linux"===g.platform()?{baseVersion:"3.2.12.28060",curVersion:"3.2.12.28060",prevVersion:"",onErrorVersions:[],buildId:"27254"}:"darwin"===g.platform()?{baseVersion:"6.9.53.28060",curVersion:"6.9.53.28060",prevVersion:"",onErrorVersions:[],buildId:"28060"}:{baseVersion:"9.9.15-28131",curVersion:"9.9.15-28131",prevVersion:"",onErrorVersions:[],buildId:"28131"},this.QQPackageInfoPath=function(e="",t){let s;return s="darwin"===g.platform()?y.join(y.dirname(e),"..","Resources","app","package.json"):"linux"===g.platform()?y.join(y.dirname(e),"./resources/app/package.json"):y.join(y.dirname(e),"./versions/"+t+"/resources/app/package.json"),b.existsSync(s)||(s=y.join(y.dirname(e),"./resources/app/versions/"+t+"/package.json")),s}(this.QQMainPath,this.QQVersionConfig?.curVersion),this.QQPackageInfo=JSON.parse(b.readFileSync(this.QQPackageInfoPath).toString())}getFullQQVersion(){const e=this.isQuickUpdate?this.QQVersionConfig?.curVersion:this.QQPackageInfo?.version;if(!e)throw new Error("QQ版本获取失败");return e}}let lr=require("process"),fr=null;const ur="dlopenOri"+Math.random().toString(36).substring(7);async function dr(){return fr||new Promise(((e,t)=>{let s=setInterval((()=>{fr&&(clearInterval(s),e(fr))}),100)}))}lr[ur]=lr.dlopen,lr.dlopen=function(e,t,s=g.constants.dlopen.RTLD_LAZY){let r=this[ur](e,t,s),i=e.exports;return e.exports=new Proxy({},{get:function(e,t,s){return"NodeIQQNTWrapperSession"===t?new Proxy((()=>{}),{get(e,t,s){if("create"===t)return new Proxy((()=>{}),{apply:(e,t,s)=>(fr=i.NodeIQQNTWrapperSession.create(...s),console.log("NodeIQQNTWrapperSession created:",fr),lr.dlopen=lr[ur],fr)})}}):i[t]}}),r};class pr{qqVersion;packetSession;logger=console;wrapperSession;constructor(e){this.wrapperSession=e,this.packetSession=void 0,this.InitSendPacket((new hr).getFullQQVersion()).then().catch(console.error)}get available(){return this.packetSession?.client.available??!1}async InitSendPacket(t){this.qqVersion=t;const s=cr[t+"-"+e.arch()];if(!s)return this.logger.error("PacketServer Offset table not found for QQVersion: ",t+"-"+e.arch()),!1;this.packetSession=new ar(this.wrapperSession);return await this.packetSession.client.connect((()=>{this.packetSession&&this.packetSession.client&&this.packetSession.client.init(process.pid,s.recv,s.send).then().catch(this.logger.error.bind(this.logger))})),!0}async sendPacket(e,t,s=!1){return this.packetSession.client.sendPacket(e,t,s)}async sendOidbPacket(e,t=!1){return this.sendPacket(e.cmd,e.data,t)}async sendPokePacket(e,t){const s=this.packetSession?.packer.packPokePacket(e,t);await this.sendOidbPacket(s,!1)}async sendGroupSignPacket(e,t){const s=this.packetSession?.packer.packGroupSignReq(e,t);await this.sendOidbPacket(s,!0)}async sendSetSpecialTittlePacket(e,t,s){const r=this.packetSession?.packer.packSetSpecialTittlePacket(e,t,s);await this.sendOidbPacket(r,!0)}}export{pr as NTQQPacketApi,dr as initWrapperSession}; +import _0x2378fb from 'os'; +import require$$0$2 from 'stream'; +import require$$0 from 'zlib'; +import require$$0$1 from 'buffer'; +import require$$1$1, { createHash as createHash$1 } from 'crypto'; +import require$$0$3 from 'events'; +import require$$1$2 from 'https'; +import require$$2$1 from 'http'; +import require$$3 from 'net'; +import require$$4 from 'tls'; +import require$$7, { fileURLToPath } from 'url'; +import _0x10daec, { dirname } from 'path'; +import _0x3e7a5a from 'fs'; +import _0x2cc836, { constants as constants$1 } from 'node:os'; +import _0x5a9d71 from 'node:fs'; +import _0x2fc670 from 'node:path'; + +function _0x41d6(){const _0xce27c3=['13623642xtJDKR','720294ERTOnQ','get','has','set','329OWWzYZ','capacity','8UsTMVn','9862oKHjSp','value','keys','cache','delete','11862980eBUtnn','next','152104NDBwMH','254frKgUC','471327cVFkap','8498720ZwnDvN'];_0x41d6=function(){return _0xce27c3;};return _0x41d6();}const _0x37832f=_0x11d9;function _0x11d9(_0x3ea709,_0x3a7a15){const _0x41d614=_0x41d6();return _0x11d9=function(_0x11d999,_0xe6ed7e){_0x11d999=_0x11d999-0x171;let _0x6de7b9=_0x41d614[_0x11d999];return _0x6de7b9;},_0x11d9(_0x3ea709,_0x3a7a15);}(function(_0x4c1e11,_0x44b142){const _0x50c546=_0x11d9,_0x5497f8=_0x4c1e11();while(!![]){try{const _0x46c9bb=parseInt(_0x50c546(0x181))/0x1*(parseInt(_0x50c546(0x176))/0x2)+parseInt(_0x50c546(0x177))/0x3*(-parseInt(_0x50c546(0x180))/0x4)+-parseInt(_0x50c546(0x178))/0x5+-parseInt(_0x50c546(0x17a))/0x6+parseInt(_0x50c546(0x17e))/0x7*(-parseInt(_0x50c546(0x175))/0x8)+parseInt(_0x50c546(0x179))/0x9+parseInt(_0x50c546(0x173))/0xa;if(_0x46c9bb===_0x44b142)break;else _0x5497f8['push'](_0x5497f8['shift']());}catch(_0x2a2c41){_0x5497f8['push'](_0x5497f8['shift']());}}}(_0x41d6,0xe1cd8));class LRUCache{[_0x37832f(0x17f)];[_0x37832f(0x171)];constructor(_0x13648e){const _0x109020=_0x37832f;this['capacity']=_0x13648e,this[_0x109020(0x171)]=new Map();}[_0x37832f(0x17b)](_0x45f06c){const _0x4e148c=_0x37832f,_0x52aa56=this[_0x4e148c(0x171)]['get'](_0x45f06c);return _0x52aa56!==void 0x0&&(this['cache'][_0x4e148c(0x172)](_0x45f06c),this['cache'][_0x4e148c(0x17d)](_0x45f06c,_0x52aa56)),_0x52aa56;}['put'](_0xd434fd,_0x19f64d){const _0x4e8071=_0x37832f;if(this[_0x4e8071(0x171)][_0x4e8071(0x17c)](_0xd434fd))this['cache'][_0x4e8071(0x172)](_0xd434fd);else {if(this[_0x4e8071(0x171)]['size']>=this['capacity']){const _0x4ec25a=this['cache'][_0x4e8071(0x183)]()[_0x4e8071(0x174)]()[_0x4e8071(0x182)];_0x4ec25a!==void 0x0&&this['cache'][_0x4e8071(0x172)](_0x4ec25a);}}this['cache'][_0x4e8071(0x17d)](_0xd434fd,_0x19f64d);}} + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + if (this instanceof a) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +var bufferUtil$1 = {exports: {}}; + +const BINARY_TYPES$2 = ['nodebuffer', 'arraybuffer', 'fragments']; +const hasBlob$1 = typeof Blob !== 'undefined'; + +if (hasBlob$1) BINARY_TYPES$2.push('blob'); + +var constants = { + BINARY_TYPES: BINARY_TYPES$2, + EMPTY_BUFFER: Buffer.alloc(0), + GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11', + hasBlob: hasBlob$1, + kForOnEventAttribute: Symbol('kIsForOnEventAttribute'), + kListener: Symbol('kListener'), + kStatusCode: Symbol('status-code'), + kWebSocket: Symbol('websocket'), + NOOP: () => {} +}; + +const __viteOptionalPeerDep_bufferutil_ws = {}; + +const __viteOptionalPeerDep_bufferutil_ws$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ + __proto__: null, + default: __viteOptionalPeerDep_bufferutil_ws +}, Symbol.toStringTag, { value: 'Module' })); + +const require$$1 = /*@__PURE__*/getAugmentedNamespace(__viteOptionalPeerDep_bufferutil_ws$1); + +var unmask$1; +var mask; + +const { EMPTY_BUFFER: EMPTY_BUFFER$3 } = constants; + +const FastBuffer$2 = Buffer[Symbol.species]; + +/** + * Merges an array of buffers into a new buffer. + * + * @param {Buffer[]} list The array of buffers to concat + * @param {Number} totalLength The total length of buffers in the list + * @return {Buffer} The resulting buffer + * @public + */ +function concat$1(list, totalLength) { + if (list.length === 0) return EMPTY_BUFFER$3; + if (list.length === 1) return list[0]; + + const target = Buffer.allocUnsafe(totalLength); + let offset = 0; + + for (let i = 0; i < list.length; i++) { + const buf = list[i]; + target.set(buf, offset); + offset += buf.length; + } + + if (offset < totalLength) { + return new FastBuffer$2(target.buffer, target.byteOffset, offset); + } + + return target; +} + +/** + * Masks a buffer using the given mask. + * + * @param {Buffer} source The buffer to mask + * @param {Buffer} mask The mask to use + * @param {Buffer} output The buffer where to store the result + * @param {Number} offset The offset at which to start writing + * @param {Number} length The number of bytes to mask. + * @public + */ +function _mask(source, mask, output, offset, length) { + for (let i = 0; i < length; i++) { + output[offset + i] = source[i] ^ mask[i & 3]; + } +} + +/** + * Unmasks a buffer using the given mask. + * + * @param {Buffer} buffer The buffer to unmask + * @param {Buffer} mask The mask to use + * @public + */ +function _unmask(buffer, mask) { + for (let i = 0; i < buffer.length; i++) { + buffer[i] ^= mask[i & 3]; + } +} + +/** + * Converts a buffer to an `ArrayBuffer`. + * + * @param {Buffer} buf The buffer to convert + * @return {ArrayBuffer} Converted buffer + * @public + */ +function toArrayBuffer$1(buf) { + if (buf.length === buf.buffer.byteLength) { + return buf.buffer; + } + + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length); +} + +/** + * Converts `data` to a `Buffer`. + * + * @param {*} data The data to convert + * @return {Buffer} The buffer + * @throws {TypeError} + * @public + */ +function toBuffer$2(data) { + toBuffer$2.readOnly = true; + + if (Buffer.isBuffer(data)) return data; + + let buf; + + if (data instanceof ArrayBuffer) { + buf = new FastBuffer$2(data); + } else if (ArrayBuffer.isView(data)) { + buf = new FastBuffer$2(data.buffer, data.byteOffset, data.byteLength); + } else { + buf = Buffer.from(data); + toBuffer$2.readOnly = false; + } + + return buf; +} + +bufferUtil$1.exports = { + concat: concat$1, + mask: _mask, + toArrayBuffer: toArrayBuffer$1, + toBuffer: toBuffer$2, + unmask: _unmask +}; + +/* istanbul ignore else */ +if (!process.env.WS_NO_BUFFER_UTIL) { + try { + const bufferUtil = require$$1; + + mask = bufferUtil$1.exports.mask = function (source, mask, output, offset, length) { + if (length < 48) _mask(source, mask, output, offset, length); + else bufferUtil.mask(source, mask, output, offset, length); + }; + + unmask$1 = bufferUtil$1.exports.unmask = function (buffer, mask) { + if (buffer.length < 32) _unmask(buffer, mask); + else bufferUtil.unmask(buffer, mask); + }; + } catch (e) { + // Continue regardless of the error. + } +} + +var bufferUtilExports = bufferUtil$1.exports; + +const kDone = Symbol('kDone'); +const kRun = Symbol('kRun'); + +/** + * A very simple job queue with adjustable concurrency. Adapted from + * https://github.com/STRML/async-limiter + */ +let Limiter$1 = class Limiter { + /** + * Creates a new `Limiter`. + * + * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed + * to run concurrently + */ + constructor(concurrency) { + this[kDone] = () => { + this.pending--; + this[kRun](); + }; + this.concurrency = concurrency || Infinity; + this.jobs = []; + this.pending = 0; + } + + /** + * Adds a job to the queue. + * + * @param {Function} job The job to run + * @public + */ + add(job) { + this.jobs.push(job); + this[kRun](); + } + + /** + * Removes a job from the queue and runs it if possible. + * + * @private + */ + [kRun]() { + if (this.pending === this.concurrency) return; + + if (this.jobs.length) { + const job = this.jobs.shift(); + + this.pending++; + job(this[kDone]); + } + } +}; + +var limiter = Limiter$1; + +const zlib = require$$0; + +const bufferUtil = bufferUtilExports; +const Limiter = limiter; +const { kStatusCode: kStatusCode$2 } = constants; + +const FastBuffer$1 = Buffer[Symbol.species]; +const TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]); +const kPerMessageDeflate = Symbol('permessage-deflate'); +const kTotalLength = Symbol('total-length'); +const kCallback = Symbol('callback'); +const kBuffers = Symbol('buffers'); +const kError$1 = Symbol('error'); + +// +// We limit zlib concurrency, which prevents severe memory fragmentation +// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913 +// and https://github.com/websockets/ws/issues/1202 +// +// Intentionally global; it's the global thread pool that's an issue. +// +let zlibLimiter; + +/** + * permessage-deflate implementation. + */ +let PerMessageDeflate$3 = class PerMessageDeflate { + /** + * Creates a PerMessageDeflate instance. + * + * @param {Object} [options] Configuration options + * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support + * for, or request, a custom client window size + * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/ + * acknowledge disabling of client context takeover + * @param {Number} [options.concurrencyLimit=10] The number of concurrent + * calls to zlib + * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the + * use of a custom server window size + * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept + * disabling of server context takeover + * @param {Number} [options.threshold=1024] Size (in bytes) below which + * messages should not be compressed if context takeover is disabled + * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on + * deflate + * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on + * inflate + * @param {Boolean} [isServer=false] Create the instance in either server or + * client mode + * @param {Number} [maxPayload=0] The maximum allowed message length + */ + constructor(options, isServer, maxPayload) { + this._maxPayload = maxPayload | 0; + this._options = options || {}; + this._threshold = + this._options.threshold !== undefined ? this._options.threshold : 1024; + this._isServer = !!isServer; + this._deflate = null; + this._inflate = null; + + this.params = null; + + if (!zlibLimiter) { + const concurrency = + this._options.concurrencyLimit !== undefined + ? this._options.concurrencyLimit + : 10; + zlibLimiter = new Limiter(concurrency); + } + } + + /** + * @type {String} + */ + static get extensionName() { + return 'permessage-deflate'; + } + + /** + * Create an extension negotiation offer. + * + * @return {Object} Extension parameters + * @public + */ + offer() { + const params = {}; + + if (this._options.serverNoContextTakeover) { + params.server_no_context_takeover = true; + } + if (this._options.clientNoContextTakeover) { + params.client_no_context_takeover = true; + } + if (this._options.serverMaxWindowBits) { + params.server_max_window_bits = this._options.serverMaxWindowBits; + } + if (this._options.clientMaxWindowBits) { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } else if (this._options.clientMaxWindowBits == null) { + params.client_max_window_bits = true; + } + + return params; + } + + /** + * Accept an extension negotiation offer/response. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Object} Accepted configuration + * @public + */ + accept(configurations) { + configurations = this.normalizeParams(configurations); + + this.params = this._isServer + ? this.acceptAsServer(configurations) + : this.acceptAsClient(configurations); + + return this.params; + } + + /** + * Releases all resources used by the extension. + * + * @public + */ + cleanup() { + if (this._inflate) { + this._inflate.close(); + this._inflate = null; + } + + if (this._deflate) { + const callback = this._deflate[kCallback]; + + this._deflate.close(); + this._deflate = null; + + if (callback) { + callback( + new Error( + 'The deflate stream was closed while data was being processed' + ) + ); + } + } + } + + /** + * Accept an extension negotiation offer. + * + * @param {Array} offers The extension negotiation offers + * @return {Object} Accepted configuration + * @private + */ + acceptAsServer(offers) { + const opts = this._options; + const accepted = offers.find((params) => { + if ( + (opts.serverNoContextTakeover === false && + params.server_no_context_takeover) || + (params.server_max_window_bits && + (opts.serverMaxWindowBits === false || + (typeof opts.serverMaxWindowBits === 'number' && + opts.serverMaxWindowBits > params.server_max_window_bits))) || + (typeof opts.clientMaxWindowBits === 'number' && + !params.client_max_window_bits) + ) { + return false; + } + + return true; + }); + + if (!accepted) { + throw new Error('None of the extension offers can be accepted'); + } + + if (opts.serverNoContextTakeover) { + accepted.server_no_context_takeover = true; + } + if (opts.clientNoContextTakeover) { + accepted.client_no_context_takeover = true; + } + if (typeof opts.serverMaxWindowBits === 'number') { + accepted.server_max_window_bits = opts.serverMaxWindowBits; + } + if (typeof opts.clientMaxWindowBits === 'number') { + accepted.client_max_window_bits = opts.clientMaxWindowBits; + } else if ( + accepted.client_max_window_bits === true || + opts.clientMaxWindowBits === false + ) { + delete accepted.client_max_window_bits; + } + + return accepted; + } + + /** + * Accept the extension negotiation response. + * + * @param {Array} response The extension negotiation response + * @return {Object} Accepted configuration + * @private + */ + acceptAsClient(response) { + const params = response[0]; + + if ( + this._options.clientNoContextTakeover === false && + params.client_no_context_takeover + ) { + throw new Error('Unexpected parameter "client_no_context_takeover"'); + } + + if (!params.client_max_window_bits) { + if (typeof this._options.clientMaxWindowBits === 'number') { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } + } else if ( + this._options.clientMaxWindowBits === false || + (typeof this._options.clientMaxWindowBits === 'number' && + params.client_max_window_bits > this._options.clientMaxWindowBits) + ) { + throw new Error( + 'Unexpected or invalid parameter "client_max_window_bits"' + ); + } + + return params; + } + + /** + * Normalize parameters. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Array} The offers/response with normalized parameters + * @private + */ + normalizeParams(configurations) { + configurations.forEach((params) => { + Object.keys(params).forEach((key) => { + let value = params[key]; + + if (value.length > 1) { + throw new Error(`Parameter "${key}" must have only a single value`); + } + + value = value[0]; + + if (key === 'client_max_window_bits') { + if (value !== true) { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (!this._isServer) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else if (key === 'server_max_window_bits') { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if ( + key === 'client_no_context_takeover' || + key === 'server_no_context_takeover' + ) { + if (value !== true) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else { + throw new Error(`Unknown parameter "${key}"`); + } + + params[key] = value; + }); + }); + + return configurations; + } + + /** + * Decompress data. Concurrency limited. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + decompress(data, fin, callback) { + zlibLimiter.add((done) => { + this._decompress(data, fin, (err, result) => { + done(); + callback(err, result); + }); + }); + } + + /** + * Compress data. Concurrency limited. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + compress(data, fin, callback) { + zlibLimiter.add((done) => { + this._compress(data, fin, (err, result) => { + done(); + callback(err, result); + }); + }); + } + + /** + * Decompress data. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _decompress(data, fin, callback) { + const endpoint = this._isServer ? 'client' : 'server'; + + if (!this._inflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = + typeof this.params[key] !== 'number' + ? zlib.Z_DEFAULT_WINDOWBITS + : this.params[key]; + + this._inflate = zlib.createInflateRaw({ + ...this._options.zlibInflateOptions, + windowBits + }); + this._inflate[kPerMessageDeflate] = this; + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + this._inflate.on('error', inflateOnError); + this._inflate.on('data', inflateOnData); + } + + this._inflate[kCallback] = callback; + + this._inflate.write(data); + if (fin) this._inflate.write(TRAILER); + + this._inflate.flush(() => { + const err = this._inflate[kError$1]; + + if (err) { + this._inflate.close(); + this._inflate = null; + callback(err); + return; + } + + const data = bufferUtil.concat( + this._inflate[kBuffers], + this._inflate[kTotalLength] + ); + + if (this._inflate._readableState.endEmitted) { + this._inflate.close(); + this._inflate = null; + } else { + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._inflate.reset(); + } + } + + callback(null, data); + }); + } + + /** + * Compress data. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _compress(data, fin, callback) { + const endpoint = this._isServer ? 'server' : 'client'; + + if (!this._deflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = + typeof this.params[key] !== 'number' + ? zlib.Z_DEFAULT_WINDOWBITS + : this.params[key]; + + this._deflate = zlib.createDeflateRaw({ + ...this._options.zlibDeflateOptions, + windowBits + }); + + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + + this._deflate.on('data', deflateOnData); + } + + this._deflate[kCallback] = callback; + + this._deflate.write(data); + this._deflate.flush(zlib.Z_SYNC_FLUSH, () => { + if (!this._deflate) { + // + // The deflate stream was closed while data was being processed. + // + return; + } + + let data = bufferUtil.concat( + this._deflate[kBuffers], + this._deflate[kTotalLength] + ); + + if (fin) { + data = new FastBuffer$1(data.buffer, data.byteOffset, data.length - 4); + } + + // + // Ensure that the callback will not be called again in + // `PerMessageDeflate#cleanup()`. + // + this._deflate[kCallback] = null; + + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._deflate.reset(); + } + + callback(null, data); + }); + } +}; + +var permessageDeflate = PerMessageDeflate$3; + +/** + * The listener of the `zlib.DeflateRaw` stream `'data'` event. + * + * @param {Buffer} chunk A chunk of data + * @private + */ +function deflateOnData(chunk) { + this[kBuffers].push(chunk); + this[kTotalLength] += chunk.length; +} + +/** + * The listener of the `zlib.InflateRaw` stream `'data'` event. + * + * @param {Buffer} chunk A chunk of data + * @private + */ +function inflateOnData(chunk) { + this[kTotalLength] += chunk.length; + + if ( + this[kPerMessageDeflate]._maxPayload < 1 || + this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload + ) { + this[kBuffers].push(chunk); + return; + } + + this[kError$1] = new RangeError('Max payload size exceeded'); + this[kError$1].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'; + this[kError$1][kStatusCode$2] = 1009; + this.removeListener('data', inflateOnData); + this.reset(); +} + +/** + * The listener of the `zlib.InflateRaw` stream `'error'` event. + * + * @param {Error} err The emitted error + * @private + */ +function inflateOnError(err) { + // + // There is no need to call `Zlib#close()` as the handle is automatically + // closed when an error is emitted. + // + this[kPerMessageDeflate]._inflate = null; + err[kStatusCode$2] = 1007; + this[kCallback](err); +} + +var validation = {exports: {}}; + +const __viteOptionalPeerDep_utf8Validate_ws = {}; + +const __viteOptionalPeerDep_utf8Validate_ws$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ + __proto__: null, + default: __viteOptionalPeerDep_utf8Validate_ws +}, Symbol.toStringTag, { value: 'Module' })); + +const require$$2 = /*@__PURE__*/getAugmentedNamespace(__viteOptionalPeerDep_utf8Validate_ws$1); + +var isValidUTF8_1; + +const { isUtf8 } = require$$0$1; + +const { hasBlob } = constants; + +// +// Allowed token characters: +// +// '!', '#', '$', '%', '&', ''', '*', '+', '-', +// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~' +// +// tokenChars[32] === 0 // ' ' +// tokenChars[33] === 1 // '!' +// tokenChars[34] === 0 // '"' +// ... +// +// prettier-ignore +const tokenChars$1 = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31 + 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63 + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127 +]; + +/** + * Checks if a status code is allowed in a close frame. + * + * @param {Number} code The status code + * @return {Boolean} `true` if the status code is valid, else `false` + * @public + */ +function isValidStatusCode$2(code) { + return ( + (code >= 1000 && + code <= 1014 && + code !== 1004 && + code !== 1005 && + code !== 1006) || + (code >= 3000 && code <= 4999) + ); +} + +/** + * Checks if a given buffer contains only correct UTF-8. + * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by + * Markus Kuhn. + * + * @param {Buffer} buf The buffer to check + * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false` + * @public + */ +function _isValidUTF8(buf) { + const len = buf.length; + let i = 0; + + while (i < len) { + if ((buf[i] & 0x80) === 0) { + // 0xxxxxxx + i++; + } else if ((buf[i] & 0xe0) === 0xc0) { + // 110xxxxx 10xxxxxx + if ( + i + 1 === len || + (buf[i + 1] & 0xc0) !== 0x80 || + (buf[i] & 0xfe) === 0xc0 // Overlong + ) { + return false; + } + + i += 2; + } else if ((buf[i] & 0xf0) === 0xe0) { + // 1110xxxx 10xxxxxx 10xxxxxx + if ( + i + 2 >= len || + (buf[i + 1] & 0xc0) !== 0x80 || + (buf[i + 2] & 0xc0) !== 0x80 || + (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong + (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF) + ) { + return false; + } + + i += 3; + } else if ((buf[i] & 0xf8) === 0xf0) { + // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + if ( + i + 3 >= len || + (buf[i + 1] & 0xc0) !== 0x80 || + (buf[i + 2] & 0xc0) !== 0x80 || + (buf[i + 3] & 0xc0) !== 0x80 || + (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong + (buf[i] === 0xf4 && buf[i + 1] > 0x8f) || + buf[i] > 0xf4 // > U+10FFFF + ) { + return false; + } + + i += 4; + } else { + return false; + } + } + + return true; +} + +/** + * Determines whether a value is a `Blob`. + * + * @param {*} value The value to be tested + * @return {Boolean} `true` if `value` is a `Blob`, else `false` + * @private + */ +function isBlob$2(value) { + return ( + hasBlob && + typeof value === 'object' && + typeof value.arrayBuffer === 'function' && + typeof value.type === 'string' && + typeof value.stream === 'function' && + (value[Symbol.toStringTag] === 'Blob' || + value[Symbol.toStringTag] === 'File') + ); +} + +validation.exports = { + isBlob: isBlob$2, + isValidStatusCode: isValidStatusCode$2, + isValidUTF8: _isValidUTF8, + tokenChars: tokenChars$1 +}; + +if (isUtf8) { + isValidUTF8_1 = validation.exports.isValidUTF8 = function (buf) { + return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf); + }; +} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) { + try { + const isValidUTF8 = require$$2; + + isValidUTF8_1 = validation.exports.isValidUTF8 = function (buf) { + return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf); + }; + } catch (e) { + // Continue regardless of the error. + } +} + +var validationExports = validation.exports; + +const { Writable } = require$$0$2; + +const PerMessageDeflate$2 = permessageDeflate; +const { + BINARY_TYPES: BINARY_TYPES$1, + EMPTY_BUFFER: EMPTY_BUFFER$2, + kStatusCode: kStatusCode$1, + kWebSocket: kWebSocket$2 +} = constants; +const { concat, toArrayBuffer, unmask } = bufferUtilExports; +const { isValidStatusCode: isValidStatusCode$1, isValidUTF8 } = validationExports; + +const FastBuffer = Buffer[Symbol.species]; + +const GET_INFO = 0; +const GET_PAYLOAD_LENGTH_16 = 1; +const GET_PAYLOAD_LENGTH_64 = 2; +const GET_MASK = 3; +const GET_DATA = 4; +const INFLATING = 5; +const DEFER_EVENT = 6; + +/** + * HyBi Receiver implementation. + * + * @extends Writable + */ +let Receiver$1 = class Receiver extends Writable { + /** + * Creates a Receiver instance. + * + * @param {Object} [options] Options object + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {String} [options.binaryType=nodebuffer] The type for binary data + * @param {Object} [options.extensions] An object containing the negotiated + * extensions + * @param {Boolean} [options.isServer=false] Specifies whether to operate in + * client or server mode + * @param {Number} [options.maxPayload=0] The maximum allowed message length + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + */ + constructor(options = {}) { + super(); + + this._allowSynchronousEvents = + options.allowSynchronousEvents !== undefined + ? options.allowSynchronousEvents + : true; + this._binaryType = options.binaryType || BINARY_TYPES$1[0]; + this._extensions = options.extensions || {}; + this._isServer = !!options.isServer; + this._maxPayload = options.maxPayload | 0; + this._skipUTF8Validation = !!options.skipUTF8Validation; + this[kWebSocket$2] = undefined; + + this._bufferedBytes = 0; + this._buffers = []; + + this._compressed = false; + this._payloadLength = 0; + this._mask = undefined; + this._fragmented = 0; + this._masked = false; + this._fin = false; + this._opcode = 0; + + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragments = []; + + this._errored = false; + this._loop = false; + this._state = GET_INFO; + } + + /** + * Implements `Writable.prototype._write()`. + * + * @param {Buffer} chunk The chunk of data to write + * @param {String} encoding The character encoding of `chunk` + * @param {Function} cb Callback + * @private + */ + _write(chunk, encoding, cb) { + if (this._opcode === 0x08 && this._state == GET_INFO) return cb(); + + this._bufferedBytes += chunk.length; + this._buffers.push(chunk); + this.startLoop(cb); + } + + /** + * Consumes `n` bytes from the buffered data. + * + * @param {Number} n The number of bytes to consume + * @return {Buffer} The consumed bytes + * @private + */ + consume(n) { + this._bufferedBytes -= n; + + if (n === this._buffers[0].length) return this._buffers.shift(); + + if (n < this._buffers[0].length) { + const buf = this._buffers[0]; + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + + return new FastBuffer(buf.buffer, buf.byteOffset, n); + } + + const dst = Buffer.allocUnsafe(n); + + do { + const buf = this._buffers[0]; + const offset = dst.length - n; + + if (n >= buf.length) { + dst.set(this._buffers.shift(), offset); + } else { + dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset); + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + } + + n -= buf.length; + } while (n > 0); + + return dst; + } + + /** + * Starts the parsing loop. + * + * @param {Function} cb Callback + * @private + */ + startLoop(cb) { + this._loop = true; + + do { + switch (this._state) { + case GET_INFO: + this.getInfo(cb); + break; + case GET_PAYLOAD_LENGTH_16: + this.getPayloadLength16(cb); + break; + case GET_PAYLOAD_LENGTH_64: + this.getPayloadLength64(cb); + break; + case GET_MASK: + this.getMask(); + break; + case GET_DATA: + this.getData(cb); + break; + case INFLATING: + case DEFER_EVENT: + this._loop = false; + return; + } + } while (this._loop); + + if (!this._errored) cb(); + } + + /** + * Reads the first two bytes of a frame. + * + * @param {Function} cb Callback + * @private + */ + getInfo(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + + const buf = this.consume(2); + + if ((buf[0] & 0x30) !== 0x00) { + const error = this.createError( + RangeError, + 'RSV2 and RSV3 must be clear', + true, + 1002, + 'WS_ERR_UNEXPECTED_RSV_2_3' + ); + + cb(error); + return; + } + + const compressed = (buf[0] & 0x40) === 0x40; + + if (compressed && !this._extensions[PerMessageDeflate$2.extensionName]) { + const error = this.createError( + RangeError, + 'RSV1 must be clear', + true, + 1002, + 'WS_ERR_UNEXPECTED_RSV_1' + ); + + cb(error); + return; + } + + this._fin = (buf[0] & 0x80) === 0x80; + this._opcode = buf[0] & 0x0f; + this._payloadLength = buf[1] & 0x7f; + + if (this._opcode === 0x00) { + if (compressed) { + const error = this.createError( + RangeError, + 'RSV1 must be clear', + true, + 1002, + 'WS_ERR_UNEXPECTED_RSV_1' + ); + + cb(error); + return; + } + + if (!this._fragmented) { + const error = this.createError( + RangeError, + 'invalid opcode 0', + true, + 1002, + 'WS_ERR_INVALID_OPCODE' + ); + + cb(error); + return; + } + + this._opcode = this._fragmented; + } else if (this._opcode === 0x01 || this._opcode === 0x02) { + if (this._fragmented) { + const error = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + 'WS_ERR_INVALID_OPCODE' + ); + + cb(error); + return; + } + + this._compressed = compressed; + } else if (this._opcode > 0x07 && this._opcode < 0x0b) { + if (!this._fin) { + const error = this.createError( + RangeError, + 'FIN must be set', + true, + 1002, + 'WS_ERR_EXPECTED_FIN' + ); + + cb(error); + return; + } + + if (compressed) { + const error = this.createError( + RangeError, + 'RSV1 must be clear', + true, + 1002, + 'WS_ERR_UNEXPECTED_RSV_1' + ); + + cb(error); + return; + } + + if ( + this._payloadLength > 0x7d || + (this._opcode === 0x08 && this._payloadLength === 1) + ) { + const error = this.createError( + RangeError, + `invalid payload length ${this._payloadLength}`, + true, + 1002, + 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH' + ); + + cb(error); + return; + } + } else { + const error = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + 'WS_ERR_INVALID_OPCODE' + ); + + cb(error); + return; + } + + if (!this._fin && !this._fragmented) this._fragmented = this._opcode; + this._masked = (buf[1] & 0x80) === 0x80; + + if (this._isServer) { + if (!this._masked) { + const error = this.createError( + RangeError, + 'MASK must be set', + true, + 1002, + 'WS_ERR_EXPECTED_MASK' + ); + + cb(error); + return; + } + } else if (this._masked) { + const error = this.createError( + RangeError, + 'MASK must be clear', + true, + 1002, + 'WS_ERR_UNEXPECTED_MASK' + ); + + cb(error); + return; + } + + if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16; + else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64; + else this.haveLength(cb); + } + + /** + * Gets extended payload length (7+16). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength16(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + + this._payloadLength = this.consume(2).readUInt16BE(0); + this.haveLength(cb); + } + + /** + * Gets extended payload length (7+64). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength64(cb) { + if (this._bufferedBytes < 8) { + this._loop = false; + return; + } + + const buf = this.consume(8); + const num = buf.readUInt32BE(0); + + // + // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned + // if payload length is greater than this number. + // + if (num > Math.pow(2, 53 - 32) - 1) { + const error = this.createError( + RangeError, + 'Unsupported WebSocket frame: payload length > 2^53 - 1', + false, + 1009, + 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH' + ); + + cb(error); + return; + } + + this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4); + this.haveLength(cb); + } + + /** + * Payload length has been read. + * + * @param {Function} cb Callback + * @private + */ + haveLength(cb) { + if (this._payloadLength && this._opcode < 0x08) { + this._totalPayloadLength += this._payloadLength; + if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) { + const error = this.createError( + RangeError, + 'Max payload size exceeded', + false, + 1009, + 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH' + ); + + cb(error); + return; + } + } + + if (this._masked) this._state = GET_MASK; + else this._state = GET_DATA; + } + + /** + * Reads mask bytes. + * + * @private + */ + getMask() { + if (this._bufferedBytes < 4) { + this._loop = false; + return; + } + + this._mask = this.consume(4); + this._state = GET_DATA; + } + + /** + * Reads data bytes. + * + * @param {Function} cb Callback + * @private + */ + getData(cb) { + let data = EMPTY_BUFFER$2; + + if (this._payloadLength) { + if (this._bufferedBytes < this._payloadLength) { + this._loop = false; + return; + } + + data = this.consume(this._payloadLength); + + if ( + this._masked && + (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0 + ) { + unmask(data, this._mask); + } + } + + if (this._opcode > 0x07) { + this.controlMessage(data, cb); + return; + } + + if (this._compressed) { + this._state = INFLATING; + this.decompress(data, cb); + return; + } + + if (data.length) { + // + // This message is not compressed so its length is the sum of the payload + // length of all fragments. + // + this._messageLength = this._totalPayloadLength; + this._fragments.push(data); + } + + this.dataMessage(cb); + } + + /** + * Decompresses data. + * + * @param {Buffer} data Compressed data + * @param {Function} cb Callback + * @private + */ + decompress(data, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate$2.extensionName]; + + perMessageDeflate.decompress(data, this._fin, (err, buf) => { + if (err) return cb(err); + + if (buf.length) { + this._messageLength += buf.length; + if (this._messageLength > this._maxPayload && this._maxPayload > 0) { + const error = this.createError( + RangeError, + 'Max payload size exceeded', + false, + 1009, + 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH' + ); + + cb(error); + return; + } + + this._fragments.push(buf); + } + + this.dataMessage(cb); + if (this._state === GET_INFO) this.startLoop(cb); + }); + } + + /** + * Handles a data message. + * + * @param {Function} cb Callback + * @private + */ + dataMessage(cb) { + if (!this._fin) { + this._state = GET_INFO; + return; + } + + const messageLength = this._messageLength; + const fragments = this._fragments; + + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragmented = 0; + this._fragments = []; + + if (this._opcode === 2) { + let data; + + if (this._binaryType === 'nodebuffer') { + data = concat(fragments, messageLength); + } else if (this._binaryType === 'arraybuffer') { + data = toArrayBuffer(concat(fragments, messageLength)); + } else if (this._binaryType === 'blob') { + data = new Blob(fragments); + } else { + data = fragments; + } + + if (this._allowSynchronousEvents) { + this.emit('message', data, true); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit('message', data, true); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } else { + const buf = concat(fragments, messageLength); + + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error = this.createError( + Error, + 'invalid UTF-8 sequence', + true, + 1007, + 'WS_ERR_INVALID_UTF8' + ); + + cb(error); + return; + } + + if (this._state === INFLATING || this._allowSynchronousEvents) { + this.emit('message', buf, false); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit('message', buf, false); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + } + + /** + * Handles a control message. + * + * @param {Buffer} data Data to handle + * @return {(Error|RangeError|undefined)} A possible error + * @private + */ + controlMessage(data, cb) { + if (this._opcode === 0x08) { + if (data.length === 0) { + this._loop = false; + this.emit('conclude', 1005, EMPTY_BUFFER$2); + this.end(); + } else { + const code = data.readUInt16BE(0); + + if (!isValidStatusCode$1(code)) { + const error = this.createError( + RangeError, + `invalid status code ${code}`, + true, + 1002, + 'WS_ERR_INVALID_CLOSE_CODE' + ); + + cb(error); + return; + } + + const buf = new FastBuffer( + data.buffer, + data.byteOffset + 2, + data.length - 2 + ); + + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error = this.createError( + Error, + 'invalid UTF-8 sequence', + true, + 1007, + 'WS_ERR_INVALID_UTF8' + ); + + cb(error); + return; + } + + this._loop = false; + this.emit('conclude', code, buf); + this.end(); + } + + this._state = GET_INFO; + return; + } + + if (this._allowSynchronousEvents) { + this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + + /** + * Builds an error object. + * + * @param {function(new:Error|RangeError)} ErrorCtor The error constructor + * @param {String} message The error message + * @param {Boolean} prefix Specifies whether or not to add a default prefix to + * `message` + * @param {Number} statusCode The status code + * @param {String} errorCode The exposed error code + * @return {(Error|RangeError)} The error + * @private + */ + createError(ErrorCtor, message, prefix, statusCode, errorCode) { + this._loop = false; + this._errored = true; + + const err = new ErrorCtor( + prefix ? `Invalid WebSocket frame: ${message}` : message + ); + + Error.captureStackTrace(err, this.createError); + err.code = errorCode; + err[kStatusCode$1] = statusCode; + return err; + } +}; + +var receiver = Receiver$1; + +/* eslint no-unused-vars: ["error", { "varsIgnorePattern": "^Duplex" }] */ +const { randomFillSync } = require$$1$1; + +const PerMessageDeflate$1 = permessageDeflate; +const { EMPTY_BUFFER: EMPTY_BUFFER$1, kWebSocket: kWebSocket$1, NOOP: NOOP$1 } = constants; +const { isBlob: isBlob$1, isValidStatusCode } = validationExports; +const { mask: applyMask, toBuffer: toBuffer$1 } = bufferUtilExports; + +const kByteLength = Symbol('kByteLength'); +const maskBuffer = Buffer.alloc(4); +const RANDOM_POOL_SIZE = 8 * 1024; +let randomPool; +let randomPoolPointer = RANDOM_POOL_SIZE; + +const DEFAULT = 0; +const DEFLATING = 1; +const GET_BLOB_DATA = 2; + +/** + * HyBi Sender implementation. + */ +let Sender$1 = class Sender { + /** + * Creates a Sender instance. + * + * @param {Duplex} socket The connection socket + * @param {Object} [extensions] An object containing the negotiated extensions + * @param {Function} [generateMask] The function used to generate the masking + * key + */ + constructor(socket, extensions, generateMask) { + this._extensions = extensions || {}; + + if (generateMask) { + this._generateMask = generateMask; + this._maskBuffer = Buffer.alloc(4); + } + + this._socket = socket; + + this._firstFragment = true; + this._compress = false; + + this._bufferedBytes = 0; + this._queue = []; + this._state = DEFAULT; + this.onerror = NOOP$1; + this[kWebSocket$1] = undefined; + } + + /** + * Frames a piece of data according to the HyBi WebSocket protocol. + * + * @param {(Buffer|String)} data The data to frame + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @return {(Buffer|String)[]} The framed data + * @public + */ + static frame(data, options) { + let mask; + let merge = false; + let offset = 2; + let skipMasking = false; + + if (options.mask) { + mask = options.maskBuffer || maskBuffer; + + if (options.generateMask) { + options.generateMask(mask); + } else { + if (randomPoolPointer === RANDOM_POOL_SIZE) { + /* istanbul ignore else */ + if (randomPool === undefined) { + // + // This is lazily initialized because server-sent frames must not + // be masked so it may never be used. + // + randomPool = Buffer.alloc(RANDOM_POOL_SIZE); + } + + randomFillSync(randomPool, 0, RANDOM_POOL_SIZE); + randomPoolPointer = 0; + } + + mask[0] = randomPool[randomPoolPointer++]; + mask[1] = randomPool[randomPoolPointer++]; + mask[2] = randomPool[randomPoolPointer++]; + mask[3] = randomPool[randomPoolPointer++]; + } + + skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0; + offset = 6; + } + + let dataLength; + + if (typeof data === 'string') { + if ( + (!options.mask || skipMasking) && + options[kByteLength] !== undefined + ) { + dataLength = options[kByteLength]; + } else { + data = Buffer.from(data); + dataLength = data.length; + } + } else { + dataLength = data.length; + merge = options.mask && options.readOnly && !skipMasking; + } + + let payloadLength = dataLength; + + if (dataLength >= 65536) { + offset += 8; + payloadLength = 127; + } else if (dataLength > 125) { + offset += 2; + payloadLength = 126; + } + + const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset); + + target[0] = options.fin ? options.opcode | 0x80 : options.opcode; + if (options.rsv1) target[0] |= 0x40; + + target[1] = payloadLength; + + if (payloadLength === 126) { + target.writeUInt16BE(dataLength, 2); + } else if (payloadLength === 127) { + target[2] = target[3] = 0; + target.writeUIntBE(dataLength, 4, 6); + } + + if (!options.mask) return [target, data]; + + target[1] |= 0x80; + target[offset - 4] = mask[0]; + target[offset - 3] = mask[1]; + target[offset - 2] = mask[2]; + target[offset - 1] = mask[3]; + + if (skipMasking) return [target, data]; + + if (merge) { + applyMask(data, mask, target, offset, dataLength); + return [target]; + } + + applyMask(data, mask, data, 0, dataLength); + return [target, data]; + } + + /** + * Sends a close message to the other peer. + * + * @param {Number} [code] The status code component of the body + * @param {(String|Buffer)} [data] The message component of the body + * @param {Boolean} [mask=false] Specifies whether or not to mask the message + * @param {Function} [cb] Callback + * @public + */ + close(code, data, mask, cb) { + let buf; + + if (code === undefined) { + buf = EMPTY_BUFFER$1; + } else if (typeof code !== 'number' || !isValidStatusCode(code)) { + throw new TypeError('First argument must be a valid error code number'); + } else if (data === undefined || !data.length) { + buf = Buffer.allocUnsafe(2); + buf.writeUInt16BE(code, 0); + } else { + const length = Buffer.byteLength(data); + + if (length > 123) { + throw new RangeError('The message must not be greater than 123 bytes'); + } + + buf = Buffer.allocUnsafe(2 + length); + buf.writeUInt16BE(code, 0); + + if (typeof data === 'string') { + buf.write(data, 2); + } else { + buf.set(data, 2); + } + } + + const options = { + [kByteLength]: buf.length, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 0x08, + readOnly: false, + rsv1: false + }; + + if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, buf, false, options, cb]); + } else { + this.sendFrame(Sender.frame(buf, options), cb); + } + } + + /** + * Sends a ping message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + ping(data, mask, cb) { + let byteLength; + let readOnly; + + if (typeof data === 'string') { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob$1(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer$1(data); + byteLength = data.length; + readOnly = toBuffer$1.readOnly; + } + + if (byteLength > 125) { + throw new RangeError('The data size must not be greater than 125 bytes'); + } + + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 0x09, + readOnly, + rsv1: false + }; + + if (isBlob$1(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(Sender.frame(data, options), cb); + } + } + + /** + * Sends a pong message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + pong(data, mask, cb) { + let byteLength; + let readOnly; + + if (typeof data === 'string') { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob$1(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer$1(data); + byteLength = data.length; + readOnly = toBuffer$1.readOnly; + } + + if (byteLength > 125) { + throw new RangeError('The data size must not be greater than 125 bytes'); + } + + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 0x0a, + readOnly, + rsv1: false + }; + + if (isBlob$1(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(Sender.frame(data, options), cb); + } + } + + /** + * Sends a data message to the other peer. + * + * @param {*} data The message to send + * @param {Object} options Options object + * @param {Boolean} [options.binary=false] Specifies whether `data` is binary + * or text + * @param {Boolean} [options.compress=false] Specifies whether or not to + * compress `data` + * @param {Boolean} [options.fin=false] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Function} [cb] Callback + * @public + */ + send(data, options, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate$1.extensionName]; + let opcode = options.binary ? 2 : 1; + let rsv1 = options.compress; + + let byteLength; + let readOnly; + + if (typeof data === 'string') { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob$1(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer$1(data); + byteLength = data.length; + readOnly = toBuffer$1.readOnly; + } + + if (this._firstFragment) { + this._firstFragment = false; + if ( + rsv1 && + perMessageDeflate && + perMessageDeflate.params[ + perMessageDeflate._isServer + ? 'server_no_context_takeover' + : 'client_no_context_takeover' + ] + ) { + rsv1 = byteLength >= perMessageDeflate._threshold; + } + this._compress = rsv1; + } else { + rsv1 = false; + opcode = 0; + } + + if (options.fin) this._firstFragment = true; + + const opts = { + [kByteLength]: byteLength, + fin: options.fin, + generateMask: this._generateMask, + mask: options.mask, + maskBuffer: this._maskBuffer, + opcode, + readOnly, + rsv1 + }; + + if (isBlob$1(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, this._compress, opts, cb]); + } else { + this.getBlobData(data, this._compress, opts, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, this._compress, opts, cb]); + } else { + this.dispatch(data, this._compress, opts, cb); + } + } + + /** + * Gets the contents of a blob as binary data. + * + * @param {Blob} blob The blob + * @param {Boolean} [compress=false] Specifies whether or not to compress + * the data + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + getBlobData(blob, compress, options, cb) { + this._bufferedBytes += options[kByteLength]; + this._state = GET_BLOB_DATA; + + blob + .arrayBuffer() + .then((arrayBuffer) => { + if (this._socket.destroyed) { + const err = new Error( + 'The socket was closed while the blob was being read' + ); + + // + // `callCallbacks` is called in the next tick to ensure that errors + // that might be thrown in the callbacks behave like errors thrown + // outside the promise chain. + // + process.nextTick(callCallbacks, this, err, cb); + return; + } + + this._bufferedBytes -= options[kByteLength]; + const data = toBuffer$1(arrayBuffer); + + if (!compress) { + this._state = DEFAULT; + this.sendFrame(Sender.frame(data, options), cb); + this.dequeue(); + } else { + this.dispatch(data, compress, options, cb); + } + }) + .catch((err) => { + // + // `onError` is called in the next tick for the same reason that + // `callCallbacks` above is. + // + process.nextTick(onError, this, err, cb); + }); + } + + /** + * Dispatches a message. + * + * @param {(Buffer|String)} data The message to send + * @param {Boolean} [compress=false] Specifies whether or not to compress + * `data` + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + dispatch(data, compress, options, cb) { + if (!compress) { + this.sendFrame(Sender.frame(data, options), cb); + return; + } + + const perMessageDeflate = this._extensions[PerMessageDeflate$1.extensionName]; + + this._bufferedBytes += options[kByteLength]; + this._state = DEFLATING; + perMessageDeflate.compress(data, options.fin, (_, buf) => { + if (this._socket.destroyed) { + const err = new Error( + 'The socket was closed while data was being compressed' + ); + + callCallbacks(this, err, cb); + return; + } + + this._bufferedBytes -= options[kByteLength]; + this._state = DEFAULT; + options.readOnly = false; + this.sendFrame(Sender.frame(buf, options), cb); + this.dequeue(); + }); + } + + /** + * Executes queued send operations. + * + * @private + */ + dequeue() { + while (this._state === DEFAULT && this._queue.length) { + const params = this._queue.shift(); + + this._bufferedBytes -= params[3][kByteLength]; + Reflect.apply(params[0], this, params.slice(1)); + } + } + + /** + * Enqueues a send operation. + * + * @param {Array} params Send operation parameters. + * @private + */ + enqueue(params) { + this._bufferedBytes += params[3][kByteLength]; + this._queue.push(params); + } + + /** + * Sends a frame. + * + * @param {Buffer[]} list The frame to send + * @param {Function} [cb] Callback + * @private + */ + sendFrame(list, cb) { + if (list.length === 2) { + this._socket.cork(); + this._socket.write(list[0]); + this._socket.write(list[1], cb); + this._socket.uncork(); + } else { + this._socket.write(list[0], cb); + } + } +}; + +var sender = Sender$1; + +/** + * Calls queued callbacks with an error. + * + * @param {Sender} sender The `Sender` instance + * @param {Error} err The error to call the callbacks with + * @param {Function} [cb] The first callback + * @private + */ +function callCallbacks(sender, err, cb) { + if (typeof cb === 'function') cb(err); + + for (let i = 0; i < sender._queue.length; i++) { + const params = sender._queue[i]; + const callback = params[params.length - 1]; + + if (typeof callback === 'function') callback(err); + } +} + +/** + * Handles a `Sender` error. + * + * @param {Sender} sender The `Sender` instance + * @param {Error} err The error + * @param {Function} [cb] The first pending callback + * @private + */ +function onError(sender, err, cb) { + callCallbacks(sender, err, cb); + sender.onerror(err); +} + +const { kForOnEventAttribute: kForOnEventAttribute$1, kListener: kListener$1 } = constants; + +const kCode = Symbol('kCode'); +const kData = Symbol('kData'); +const kError = Symbol('kError'); +const kMessage = Symbol('kMessage'); +const kReason = Symbol('kReason'); +const kTarget = Symbol('kTarget'); +const kType = Symbol('kType'); +const kWasClean = Symbol('kWasClean'); + +/** + * Class representing an event. + */ +class Event { + /** + * Create a new `Event`. + * + * @param {String} type The name of the event + * @throws {TypeError} If the `type` argument is not specified + */ + constructor(type) { + this[kTarget] = null; + this[kType] = type; + } + + /** + * @type {*} + */ + get target() { + return this[kTarget]; + } + + /** + * @type {String} + */ + get type() { + return this[kType]; + } +} + +Object.defineProperty(Event.prototype, 'target', { enumerable: true }); +Object.defineProperty(Event.prototype, 'type', { enumerable: true }); + +/** + * Class representing a close event. + * + * @extends Event + */ +class CloseEvent extends Event { + /** + * Create a new `CloseEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {Number} [options.code=0] The status code explaining why the + * connection was closed + * @param {String} [options.reason=''] A human-readable string explaining why + * the connection was closed + * @param {Boolean} [options.wasClean=false] Indicates whether or not the + * connection was cleanly closed + */ + constructor(type, options = {}) { + super(type); + + this[kCode] = options.code === undefined ? 0 : options.code; + this[kReason] = options.reason === undefined ? '' : options.reason; + this[kWasClean] = options.wasClean === undefined ? false : options.wasClean; + } + + /** + * @type {Number} + */ + get code() { + return this[kCode]; + } + + /** + * @type {String} + */ + get reason() { + return this[kReason]; + } + + /** + * @type {Boolean} + */ + get wasClean() { + return this[kWasClean]; + } +} + +Object.defineProperty(CloseEvent.prototype, 'code', { enumerable: true }); +Object.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true }); +Object.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true }); + +/** + * Class representing an error event. + * + * @extends Event + */ +class ErrorEvent extends Event { + /** + * Create a new `ErrorEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.error=null] The error that generated this event + * @param {String} [options.message=''] The error message + */ + constructor(type, options = {}) { + super(type); + + this[kError] = options.error === undefined ? null : options.error; + this[kMessage] = options.message === undefined ? '' : options.message; + } + + /** + * @type {*} + */ + get error() { + return this[kError]; + } + + /** + * @type {String} + */ + get message() { + return this[kMessage]; + } +} + +Object.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true }); +Object.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true }); + +/** + * Class representing a message event. + * + * @extends Event + */ +class MessageEvent extends Event { + /** + * Create a new `MessageEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.data=null] The message content + */ + constructor(type, options = {}) { + super(type); + + this[kData] = options.data === undefined ? null : options.data; + } + + /** + * @type {*} + */ + get data() { + return this[kData]; + } +} + +Object.defineProperty(MessageEvent.prototype, 'data', { enumerable: true }); + +/** + * This provides methods for emulating the `EventTarget` interface. It's not + * meant to be used directly. + * + * @mixin + */ +const EventTarget = { + /** + * Register an event listener. + * + * @param {String} type A string representing the event type to listen for + * @param {(Function|Object)} handler The listener to add + * @param {Object} [options] An options object specifies characteristics about + * the event listener + * @param {Boolean} [options.once=false] A `Boolean` indicating that the + * listener should be invoked at most once after being added. If `true`, + * the listener would be automatically removed when invoked. + * @public + */ + addEventListener(type, handler, options = {}) { + for (const listener of this.listeners(type)) { + if ( + !options[kForOnEventAttribute$1] && + listener[kListener$1] === handler && + !listener[kForOnEventAttribute$1] + ) { + return; + } + } + + let wrapper; + + if (type === 'message') { + wrapper = function onMessage(data, isBinary) { + const event = new MessageEvent('message', { + data: isBinary ? data : data.toString() + }); + + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === 'close') { + wrapper = function onClose(code, message) { + const event = new CloseEvent('close', { + code, + reason: message.toString(), + wasClean: this._closeFrameReceived && this._closeFrameSent + }); + + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === 'error') { + wrapper = function onError(error) { + const event = new ErrorEvent('error', { + error, + message: error.message + }); + + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === 'open') { + wrapper = function onOpen() { + const event = new Event('open'); + + event[kTarget] = this; + callListener(handler, this, event); + }; + } else { + return; + } + + wrapper[kForOnEventAttribute$1] = !!options[kForOnEventAttribute$1]; + wrapper[kListener$1] = handler; + + if (options.once) { + this.once(type, wrapper); + } else { + this.on(type, wrapper); + } + }, + + /** + * Remove an event listener. + * + * @param {String} type A string representing the event type to remove + * @param {(Function|Object)} handler The listener to remove + * @public + */ + removeEventListener(type, handler) { + for (const listener of this.listeners(type)) { + if (listener[kListener$1] === handler && !listener[kForOnEventAttribute$1]) { + this.removeListener(type, listener); + break; + } + } + } +}; + +var eventTarget = { + CloseEvent, + ErrorEvent, + Event, + EventTarget, + MessageEvent +}; + +/** + * Call an event listener + * + * @param {(Function|Object)} listener The listener to call + * @param {*} thisArg The value to use as `this`` when calling the listener + * @param {Event} event The event to pass to the listener + * @private + */ +function callListener(listener, thisArg, event) { + if (typeof listener === 'object' && listener.handleEvent) { + listener.handleEvent.call(listener, event); + } else { + listener.call(thisArg, event); + } +} + +const { tokenChars } = validationExports; + +/** + * Adds an offer to the map of extension offers or a parameter to the map of + * parameters. + * + * @param {Object} dest The map of extension offers or parameters + * @param {String} name The extension or parameter name + * @param {(Object|Boolean|String)} elem The extension parameters or the + * parameter value + * @private + */ +function push(dest, name, elem) { + if (dest[name] === undefined) dest[name] = [elem]; + else dest[name].push(elem); +} + +/** + * Parses the `Sec-WebSocket-Extensions` header into an object. + * + * @param {String} header The field value of the header + * @return {Object} The parsed object + * @public + */ +function parse$1(header) { + const offers = Object.create(null); + let params = Object.create(null); + let mustUnescape = false; + let isEscaping = false; + let inQuotes = false; + let extensionName; + let paramName; + let start = -1; + let code = -1; + let end = -1; + let i = 0; + + for (; i < header.length; i++) { + code = header.charCodeAt(i); + + if (extensionName === undefined) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if ( + i !== 0 && + (code === 0x20 /* ' ' */ || code === 0x09) /* '\t' */ + ) { + if (end === -1 && start !== -1) end = i; + } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + + if (end === -1) end = i; + const name = header.slice(start, end); + if (code === 0x2c) { + push(offers, name, params); + params = Object.create(null); + } else { + extensionName = name; + } + + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (paramName === undefined) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (code === 0x20 || code === 0x09) { + if (end === -1 && start !== -1) end = i; + } else if (code === 0x3b || code === 0x2c) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + + if (end === -1) end = i; + push(params, header.slice(start, end), true); + if (code === 0x2c) { + push(offers, extensionName, params); + params = Object.create(null); + extensionName = undefined; + } + + start = end = -1; + } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) { + paramName = header.slice(start, i); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else { + // + // The value of a quoted-string after unescaping must conform to the + // token ABNF, so only token characters are valid. + // Ref: https://tools.ietf.org/html/rfc6455#section-9.1 + // + if (isEscaping) { + if (tokenChars[code] !== 1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (start === -1) start = i; + else if (!mustUnescape) mustUnescape = true; + isEscaping = false; + } else if (inQuotes) { + if (tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (code === 0x22 /* '"' */ && start !== -1) { + inQuotes = false; + end = i; + } else if (code === 0x5c /* '\' */) { + isEscaping = true; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) { + inQuotes = true; + } else if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (start !== -1 && (code === 0x20 || code === 0x09)) { + if (end === -1) end = i; + } else if (code === 0x3b || code === 0x2c) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + + if (end === -1) end = i; + let value = header.slice(start, end); + if (mustUnescape) { + value = value.replace(/\\/g, ''); + mustUnescape = false; + } + push(params, paramName, value); + if (code === 0x2c) { + push(offers, extensionName, params); + params = Object.create(null); + extensionName = undefined; + } + + paramName = undefined; + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + } + + if (start === -1 || inQuotes || code === 0x20 || code === 0x09) { + throw new SyntaxError('Unexpected end of input'); + } + + if (end === -1) end = i; + const token = header.slice(start, end); + if (extensionName === undefined) { + push(offers, token, params); + } else { + if (paramName === undefined) { + push(params, token, true); + } else if (mustUnescape) { + push(params, paramName, token.replace(/\\/g, '')); + } else { + push(params, paramName, token); + } + push(offers, extensionName, params); + } + + return offers; +} + +/** + * Builds the `Sec-WebSocket-Extensions` header field value. + * + * @param {Object} extensions The map of extensions and parameters to format + * @return {String} A string representing the given object + * @public + */ +function format$1(extensions) { + return Object.keys(extensions) + .map((extension) => { + let configurations = extensions[extension]; + if (!Array.isArray(configurations)) configurations = [configurations]; + return configurations + .map((params) => { + return [extension] + .concat( + Object.keys(params).map((k) => { + let values = params[k]; + if (!Array.isArray(values)) values = [values]; + return values + .map((v) => (v === true ? k : `${k}=${v}`)) + .join('; '); + }) + ) + .join('; '); + }) + .join(', '); + }) + .join(', '); +} + +var extension = { format: format$1, parse: parse$1 }; + +/* eslint no-unused-vars: ["error", { "varsIgnorePattern": "^Duplex|Readable$", "caughtErrors": "none" }] */ + +const EventEmitter = require$$0$3; +const https = require$$1$2; +const http = require$$2$1; +const net = require$$3; +const tls = require$$4; +const { randomBytes, createHash } = require$$1$1; +const { URL } = require$$7; + +const PerMessageDeflate = permessageDeflate; +const Receiver = receiver; +const Sender = sender; +const { isBlob } = validationExports; + +const { + BINARY_TYPES, + EMPTY_BUFFER, + GUID, + kForOnEventAttribute, + kListener, + kStatusCode, + kWebSocket, + NOOP +} = constants; +const { + EventTarget: { addEventListener, removeEventListener } +} = eventTarget; +const { format, parse } = extension; +const { toBuffer } = bufferUtilExports; + +const closeTimeout = 30 * 1000; +const kAborted = Symbol('kAborted'); +const protocolVersions = [8, 13]; +const readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED']; +const subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/; + +/** + * Class representing a WebSocket. + * + * @extends EventEmitter + */ +class WebSocket extends EventEmitter { + /** + * Create a new `WebSocket`. + * + * @param {(String|URL)} address The URL to which to connect + * @param {(String|String[])} [protocols] The subprotocols + * @param {Object} [options] Connection options + */ + constructor(address, protocols, options) { + super(); + + this._binaryType = BINARY_TYPES[0]; + this._closeCode = 1006; + this._closeFrameReceived = false; + this._closeFrameSent = false; + this._closeMessage = EMPTY_BUFFER; + this._closeTimer = null; + this._errorEmitted = false; + this._extensions = {}; + this._paused = false; + this._protocol = ''; + this._readyState = WebSocket.CONNECTING; + this._receiver = null; + this._sender = null; + this._socket = null; + + if (address !== null) { + this._bufferedAmount = 0; + this._isServer = false; + this._redirects = 0; + + if (protocols === undefined) { + protocols = []; + } else if (!Array.isArray(protocols)) { + if (typeof protocols === 'object' && protocols !== null) { + options = protocols; + protocols = []; + } else { + protocols = [protocols]; + } + } + + initAsClient(this, address, protocols, options); + } else { + this._autoPong = options.autoPong; + this._isServer = true; + } + } + + /** + * For historical reasons, the custom "nodebuffer" type is used by the default + * instead of "blob". + * + * @type {String} + */ + get binaryType() { + return this._binaryType; + } + + set binaryType(type) { + if (!BINARY_TYPES.includes(type)) return; + + this._binaryType = type; + + // + // Allow to change `binaryType` on the fly. + // + if (this._receiver) this._receiver._binaryType = type; + } + + /** + * @type {Number} + */ + get bufferedAmount() { + if (!this._socket) return this._bufferedAmount; + + return this._socket._writableState.length + this._sender._bufferedBytes; + } + + /** + * @type {String} + */ + get extensions() { + return Object.keys(this._extensions).join(); + } + + /** + * @type {Boolean} + */ + get isPaused() { + return this._paused; + } + + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onclose() { + return null; + } + + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onerror() { + return null; + } + + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onopen() { + return null; + } + + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onmessage() { + return null; + } + + /** + * @type {String} + */ + get protocol() { + return this._protocol; + } + + /** + * @type {Number} + */ + get readyState() { + return this._readyState; + } + + /** + * @type {String} + */ + get url() { + return this._url; + } + + /** + * Set up the socket and the internal resources. + * + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Object} options Options object + * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Number} [options.maxPayload=0] The maximum allowed message size + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @private + */ + setSocket(socket, head, options) { + const receiver = new Receiver({ + allowSynchronousEvents: options.allowSynchronousEvents, + binaryType: this.binaryType, + extensions: this._extensions, + isServer: this._isServer, + maxPayload: options.maxPayload, + skipUTF8Validation: options.skipUTF8Validation + }); + + const sender = new Sender(socket, this._extensions, options.generateMask); + + this._receiver = receiver; + this._sender = sender; + this._socket = socket; + + receiver[kWebSocket] = this; + sender[kWebSocket] = this; + socket[kWebSocket] = this; + + receiver.on('conclude', receiverOnConclude); + receiver.on('drain', receiverOnDrain); + receiver.on('error', receiverOnError); + receiver.on('message', receiverOnMessage); + receiver.on('ping', receiverOnPing); + receiver.on('pong', receiverOnPong); + + sender.onerror = senderOnError; + + // + // These methods may not be available if `socket` is just a `Duplex`. + // + if (socket.setTimeout) socket.setTimeout(0); + if (socket.setNoDelay) socket.setNoDelay(); + + if (head.length > 0) socket.unshift(head); + + socket.on('close', socketOnClose); + socket.on('data', socketOnData); + socket.on('end', socketOnEnd); + socket.on('error', socketOnError); + + this._readyState = WebSocket.OPEN; + this.emit('open'); + } + + /** + * Emit the `'close'` event. + * + * @private + */ + emitClose() { + if (!this._socket) { + this._readyState = WebSocket.CLOSED; + this.emit('close', this._closeCode, this._closeMessage); + return; + } + + if (this._extensions[PerMessageDeflate.extensionName]) { + this._extensions[PerMessageDeflate.extensionName].cleanup(); + } + + this._receiver.removeAllListeners(); + this._readyState = WebSocket.CLOSED; + this.emit('close', this._closeCode, this._closeMessage); + } + + /** + * Start a closing handshake. + * + * +----------+ +-----------+ +----------+ + * - - -|ws.close()|-->|close frame|-->|ws.close()|- - - + * | +----------+ +-----------+ +----------+ | + * +----------+ +-----------+ | + * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING + * +----------+ +-----------+ | + * | | | +---+ | + * +------------------------+-->|fin| - - - - + * | +---+ | +---+ + * - - - - -|fin|<---------------------+ + * +---+ + * + * @param {Number} [code] Status code explaining why the connection is closing + * @param {(String|Buffer)} [data] The reason why the connection is + * closing + * @public + */ + close(code, data) { + if (this.readyState === WebSocket.CLOSED) return; + if (this.readyState === WebSocket.CONNECTING) { + const msg = 'WebSocket was closed before the connection was established'; + abortHandshake(this, this._req, msg); + return; + } + + if (this.readyState === WebSocket.CLOSING) { + if ( + this._closeFrameSent && + (this._closeFrameReceived || this._receiver._writableState.errorEmitted) + ) { + this._socket.end(); + } + + return; + } + + this._readyState = WebSocket.CLOSING; + this._sender.close(code, data, !this._isServer, (err) => { + // + // This error is handled by the `'error'` listener on the socket. We only + // want to know if the close frame has been sent here. + // + if (err) return; + + this._closeFrameSent = true; + + if ( + this._closeFrameReceived || + this._receiver._writableState.errorEmitted + ) { + this._socket.end(); + } + }); + + setCloseTimer(this); + } + + /** + * Pause the socket. + * + * @public + */ + pause() { + if ( + this.readyState === WebSocket.CONNECTING || + this.readyState === WebSocket.CLOSED + ) { + return; + } + + this._paused = true; + this._socket.pause(); + } + + /** + * Send a ping. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the ping is sent + * @public + */ + ping(data, mask, cb) { + if (this.readyState === WebSocket.CONNECTING) { + throw new Error('WebSocket is not open: readyState 0 (CONNECTING)'); + } + + if (typeof data === 'function') { + cb = data; + data = mask = undefined; + } else if (typeof mask === 'function') { + cb = mask; + mask = undefined; + } + + if (typeof data === 'number') data = data.toString(); + + if (this.readyState !== WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + + if (mask === undefined) mask = !this._isServer; + this._sender.ping(data || EMPTY_BUFFER, mask, cb); + } + + /** + * Send a pong. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the pong is sent + * @public + */ + pong(data, mask, cb) { + if (this.readyState === WebSocket.CONNECTING) { + throw new Error('WebSocket is not open: readyState 0 (CONNECTING)'); + } + + if (typeof data === 'function') { + cb = data; + data = mask = undefined; + } else if (typeof mask === 'function') { + cb = mask; + mask = undefined; + } + + if (typeof data === 'number') data = data.toString(); + + if (this.readyState !== WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + + if (mask === undefined) mask = !this._isServer; + this._sender.pong(data || EMPTY_BUFFER, mask, cb); + } + + /** + * Resume the socket. + * + * @public + */ + resume() { + if ( + this.readyState === WebSocket.CONNECTING || + this.readyState === WebSocket.CLOSED + ) { + return; + } + + this._paused = false; + if (!this._receiver._writableState.needDrain) this._socket.resume(); + } + + /** + * Send a data message. + * + * @param {*} data The message to send + * @param {Object} [options] Options object + * @param {Boolean} [options.binary] Specifies whether `data` is binary or + * text + * @param {Boolean} [options.compress] Specifies whether or not to compress + * `data` + * @param {Boolean} [options.fin=true] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when data is written out + * @public + */ + send(data, options, cb) { + if (this.readyState === WebSocket.CONNECTING) { + throw new Error('WebSocket is not open: readyState 0 (CONNECTING)'); + } + + if (typeof options === 'function') { + cb = options; + options = {}; + } + + if (typeof data === 'number') data = data.toString(); + + if (this.readyState !== WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + + const opts = { + binary: typeof data !== 'string', + mask: !this._isServer, + compress: true, + fin: true, + ...options + }; + + if (!this._extensions[PerMessageDeflate.extensionName]) { + opts.compress = false; + } + + this._sender.send(data || EMPTY_BUFFER, opts, cb); + } + + /** + * Forcibly close the connection. + * + * @public + */ + terminate() { + if (this.readyState === WebSocket.CLOSED) return; + if (this.readyState === WebSocket.CONNECTING) { + const msg = 'WebSocket was closed before the connection was established'; + abortHandshake(this, this._req, msg); + return; + } + + if (this._socket) { + this._readyState = WebSocket.CLOSING; + this._socket.destroy(); + } + } +} + +/** + * @constant {Number} CONNECTING + * @memberof WebSocket + */ +Object.defineProperty(WebSocket, 'CONNECTING', { + enumerable: true, + value: readyStates.indexOf('CONNECTING') +}); + +/** + * @constant {Number} CONNECTING + * @memberof WebSocket.prototype + */ +Object.defineProperty(WebSocket.prototype, 'CONNECTING', { + enumerable: true, + value: readyStates.indexOf('CONNECTING') +}); + +/** + * @constant {Number} OPEN + * @memberof WebSocket + */ +Object.defineProperty(WebSocket, 'OPEN', { + enumerable: true, + value: readyStates.indexOf('OPEN') +}); + +/** + * @constant {Number} OPEN + * @memberof WebSocket.prototype + */ +Object.defineProperty(WebSocket.prototype, 'OPEN', { + enumerable: true, + value: readyStates.indexOf('OPEN') +}); + +/** + * @constant {Number} CLOSING + * @memberof WebSocket + */ +Object.defineProperty(WebSocket, 'CLOSING', { + enumerable: true, + value: readyStates.indexOf('CLOSING') +}); + +/** + * @constant {Number} CLOSING + * @memberof WebSocket.prototype + */ +Object.defineProperty(WebSocket.prototype, 'CLOSING', { + enumerable: true, + value: readyStates.indexOf('CLOSING') +}); + +/** + * @constant {Number} CLOSED + * @memberof WebSocket + */ +Object.defineProperty(WebSocket, 'CLOSED', { + enumerable: true, + value: readyStates.indexOf('CLOSED') +}); + +/** + * @constant {Number} CLOSED + * @memberof WebSocket.prototype + */ +Object.defineProperty(WebSocket.prototype, 'CLOSED', { + enumerable: true, + value: readyStates.indexOf('CLOSED') +}); + +[ + 'binaryType', + 'bufferedAmount', + 'extensions', + 'isPaused', + 'protocol', + 'readyState', + 'url' +].forEach((property) => { + Object.defineProperty(WebSocket.prototype, property, { enumerable: true }); +}); + +// +// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes. +// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface +// +['open', 'error', 'close', 'message'].forEach((method) => { + Object.defineProperty(WebSocket.prototype, `on${method}`, { + enumerable: true, + get() { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) return listener[kListener]; + } + + return null; + }, + set(handler) { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) { + this.removeListener(method, listener); + break; + } + } + + if (typeof handler !== 'function') return; + + this.addEventListener(method, handler, { + [kForOnEventAttribute]: true + }); + } + }); +}); + +WebSocket.prototype.addEventListener = addEventListener; +WebSocket.prototype.removeEventListener = removeEventListener; + +var websocket = WebSocket; + +/** + * Initialize a WebSocket client. + * + * @param {WebSocket} websocket The client to initialize + * @param {(String|URL)} address The URL to which to connect + * @param {Array} protocols The subprotocols + * @param {Object} [options] Connection options + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any + * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple + * times in the same tick + * @param {Boolean} [options.autoPong=true] Specifies whether or not to + * automatically send a pong in response to a ping + * @param {Function} [options.finishRequest] A function which can be used to + * customize the headers of each http request before it is sent + * @param {Boolean} [options.followRedirects=false] Whether or not to follow + * redirects + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the + * handshake request + * @param {Number} [options.maxPayload=104857600] The maximum allowed message + * size + * @param {Number} [options.maxRedirects=10] The maximum number of redirects + * allowed + * @param {String} [options.origin] Value of the `Origin` or + * `Sec-WebSocket-Origin` header + * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable + * permessage-deflate + * @param {Number} [options.protocolVersion=13] Value of the + * `Sec-WebSocket-Version` header + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @private + */ +function initAsClient(websocket, address, protocols, options) { + const opts = { + allowSynchronousEvents: true, + autoPong: true, + protocolVersion: protocolVersions[1], + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: true, + followRedirects: false, + maxRedirects: 10, + ...options, + socketPath: undefined, + hostname: undefined, + protocol: undefined, + timeout: undefined, + method: 'GET', + host: undefined, + path: undefined, + port: undefined + }; + + websocket._autoPong = opts.autoPong; + + if (!protocolVersions.includes(opts.protocolVersion)) { + throw new RangeError( + `Unsupported protocol version: ${opts.protocolVersion} ` + + `(supported versions: ${protocolVersions.join(', ')})` + ); + } + + let parsedUrl; + + if (address instanceof URL) { + parsedUrl = address; + } else { + try { + parsedUrl = new URL(address); + } catch (e) { + throw new SyntaxError(`Invalid URL: ${address}`); + } + } + + if (parsedUrl.protocol === 'http:') { + parsedUrl.protocol = 'ws:'; + } else if (parsedUrl.protocol === 'https:') { + parsedUrl.protocol = 'wss:'; + } + + websocket._url = parsedUrl.href; + + const isSecure = parsedUrl.protocol === 'wss:'; + const isIpcUrl = parsedUrl.protocol === 'ws+unix:'; + let invalidUrlMessage; + + if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) { + invalidUrlMessage = + 'The URL\'s protocol must be one of "ws:", "wss:", ' + + '"http:", "https", or "ws+unix:"'; + } else if (isIpcUrl && !parsedUrl.pathname) { + invalidUrlMessage = "The URL's pathname is empty"; + } else if (parsedUrl.hash) { + invalidUrlMessage = 'The URL contains a fragment identifier'; + } + + if (invalidUrlMessage) { + const err = new SyntaxError(invalidUrlMessage); + + if (websocket._redirects === 0) { + throw err; + } else { + emitErrorAndClose(websocket, err); + return; + } + } + + const defaultPort = isSecure ? 443 : 80; + const key = randomBytes(16).toString('base64'); + const request = isSecure ? https.request : http.request; + const protocolSet = new Set(); + let perMessageDeflate; + + opts.createConnection = + opts.createConnection || (isSecure ? tlsConnect : netConnect); + opts.defaultPort = opts.defaultPort || defaultPort; + opts.port = parsedUrl.port || defaultPort; + opts.host = parsedUrl.hostname.startsWith('[') + ? parsedUrl.hostname.slice(1, -1) + : parsedUrl.hostname; + opts.headers = { + ...opts.headers, + 'Sec-WebSocket-Version': opts.protocolVersion, + 'Sec-WebSocket-Key': key, + Connection: 'Upgrade', + Upgrade: 'websocket' + }; + opts.path = parsedUrl.pathname + parsedUrl.search; + opts.timeout = opts.handshakeTimeout; + + if (opts.perMessageDeflate) { + perMessageDeflate = new PerMessageDeflate( + opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, + false, + opts.maxPayload + ); + opts.headers['Sec-WebSocket-Extensions'] = format({ + [PerMessageDeflate.extensionName]: perMessageDeflate.offer() + }); + } + if (protocols.length) { + for (const protocol of protocols) { + if ( + typeof protocol !== 'string' || + !subprotocolRegex.test(protocol) || + protocolSet.has(protocol) + ) { + throw new SyntaxError( + 'An invalid or duplicated subprotocol was specified' + ); + } + + protocolSet.add(protocol); + } + + opts.headers['Sec-WebSocket-Protocol'] = protocols.join(','); + } + if (opts.origin) { + if (opts.protocolVersion < 13) { + opts.headers['Sec-WebSocket-Origin'] = opts.origin; + } else { + opts.headers.Origin = opts.origin; + } + } + if (parsedUrl.username || parsedUrl.password) { + opts.auth = `${parsedUrl.username}:${parsedUrl.password}`; + } + + if (isIpcUrl) { + const parts = opts.path.split(':'); + + opts.socketPath = parts[0]; + opts.path = parts[1]; + } + + let req; + + if (opts.followRedirects) { + if (websocket._redirects === 0) { + websocket._originalIpc = isIpcUrl; + websocket._originalSecure = isSecure; + websocket._originalHostOrSocketPath = isIpcUrl + ? opts.socketPath + : parsedUrl.host; + + const headers = options && options.headers; + + // + // Shallow copy the user provided options so that headers can be changed + // without mutating the original object. + // + options = { ...options, headers: {} }; + + if (headers) { + for (const [key, value] of Object.entries(headers)) { + options.headers[key.toLowerCase()] = value; + } + } + } else if (websocket.listenerCount('redirect') === 0) { + const isSameHost = isIpcUrl + ? websocket._originalIpc + ? opts.socketPath === websocket._originalHostOrSocketPath + : false + : websocket._originalIpc + ? false + : parsedUrl.host === websocket._originalHostOrSocketPath; + + if (!isSameHost || (websocket._originalSecure && !isSecure)) { + // + // Match curl 7.77.0 behavior and drop the following headers. These + // headers are also dropped when following a redirect to a subdomain. + // + delete opts.headers.authorization; + delete opts.headers.cookie; + + if (!isSameHost) delete opts.headers.host; + + opts.auth = undefined; + } + } + + // + // Match curl 7.77.0 behavior and make the first `Authorization` header win. + // If the `Authorization` header is set, then there is nothing to do as it + // will take precedence. + // + if (opts.auth && !options.headers.authorization) { + options.headers.authorization = + 'Basic ' + Buffer.from(opts.auth).toString('base64'); + } + + req = websocket._req = request(opts); + + if (websocket._redirects) { + // + // Unlike what is done for the `'upgrade'` event, no early exit is + // triggered here if the user calls `websocket.close()` or + // `websocket.terminate()` from a listener of the `'redirect'` event. This + // is because the user can also call `request.destroy()` with an error + // before calling `websocket.close()` or `websocket.terminate()` and this + // would result in an error being emitted on the `request` object with no + // `'error'` event listeners attached. + // + websocket.emit('redirect', websocket.url, req); + } + } else { + req = websocket._req = request(opts); + } + + if (opts.timeout) { + req.on('timeout', () => { + abortHandshake(websocket, req, 'Opening handshake has timed out'); + }); + } + + req.on('error', (err) => { + if (req === null || req[kAborted]) return; + + req = websocket._req = null; + emitErrorAndClose(websocket, err); + }); + + req.on('response', (res) => { + const location = res.headers.location; + const statusCode = res.statusCode; + + if ( + location && + opts.followRedirects && + statusCode >= 300 && + statusCode < 400 + ) { + if (++websocket._redirects > opts.maxRedirects) { + abortHandshake(websocket, req, 'Maximum redirects exceeded'); + return; + } + + req.abort(); + + let addr; + + try { + addr = new URL(location, address); + } catch (e) { + const err = new SyntaxError(`Invalid URL: ${location}`); + emitErrorAndClose(websocket, err); + return; + } + + initAsClient(websocket, addr, protocols, options); + } else if (!websocket.emit('unexpected-response', req, res)) { + abortHandshake( + websocket, + req, + `Unexpected server response: ${res.statusCode}` + ); + } + }); + + req.on('upgrade', (res, socket, head) => { + websocket.emit('upgrade', res); + + // + // The user may have closed the connection from a listener of the + // `'upgrade'` event. + // + if (websocket.readyState !== WebSocket.CONNECTING) return; + + req = websocket._req = null; + + const upgrade = res.headers.upgrade; + + if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') { + abortHandshake(websocket, socket, 'Invalid Upgrade header'); + return; + } + + const digest = createHash('sha1') + .update(key + GUID) + .digest('base64'); + + if (res.headers['sec-websocket-accept'] !== digest) { + abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header'); + return; + } + + const serverProt = res.headers['sec-websocket-protocol']; + let protError; + + if (serverProt !== undefined) { + if (!protocolSet.size) { + protError = 'Server sent a subprotocol but none was requested'; + } else if (!protocolSet.has(serverProt)) { + protError = 'Server sent an invalid subprotocol'; + } + } else if (protocolSet.size) { + protError = 'Server sent no subprotocol'; + } + + if (protError) { + abortHandshake(websocket, socket, protError); + return; + } + + if (serverProt) websocket._protocol = serverProt; + + const secWebSocketExtensions = res.headers['sec-websocket-extensions']; + + if (secWebSocketExtensions !== undefined) { + if (!perMessageDeflate) { + const message = + 'Server sent a Sec-WebSocket-Extensions header but no extension ' + + 'was requested'; + abortHandshake(websocket, socket, message); + return; + } + + let extensions; + + try { + extensions = parse(secWebSocketExtensions); + } catch (err) { + const message = 'Invalid Sec-WebSocket-Extensions header'; + abortHandshake(websocket, socket, message); + return; + } + + const extensionNames = Object.keys(extensions); + + if ( + extensionNames.length !== 1 || + extensionNames[0] !== PerMessageDeflate.extensionName + ) { + const message = 'Server indicated an extension that was not requested'; + abortHandshake(websocket, socket, message); + return; + } + + try { + perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]); + } catch (err) { + const message = 'Invalid Sec-WebSocket-Extensions header'; + abortHandshake(websocket, socket, message); + return; + } + + websocket._extensions[PerMessageDeflate.extensionName] = + perMessageDeflate; + } + + websocket.setSocket(socket, head, { + allowSynchronousEvents: opts.allowSynchronousEvents, + generateMask: opts.generateMask, + maxPayload: opts.maxPayload, + skipUTF8Validation: opts.skipUTF8Validation + }); + }); + + if (opts.finishRequest) { + opts.finishRequest(req, websocket); + } else { + req.end(); + } +} + +/** + * Emit the `'error'` and `'close'` events. + * + * @param {WebSocket} websocket The WebSocket instance + * @param {Error} The error to emit + * @private + */ +function emitErrorAndClose(websocket, err) { + websocket._readyState = WebSocket.CLOSING; + // + // The following assignment is practically useless and is done only for + // consistency. + // + websocket._errorEmitted = true; + websocket.emit('error', err); + websocket.emitClose(); +} + +/** + * Create a `net.Socket` and initiate a connection. + * + * @param {Object} options Connection options + * @return {net.Socket} The newly created socket used to start the connection + * @private + */ +function netConnect(options) { + options.path = options.socketPath; + return net.connect(options); +} + +/** + * Create a `tls.TLSSocket` and initiate a connection. + * + * @param {Object} options Connection options + * @return {tls.TLSSocket} The newly created socket used to start the connection + * @private + */ +function tlsConnect(options) { + options.path = undefined; + + if (!options.servername && options.servername !== '') { + options.servername = net.isIP(options.host) ? '' : options.host; + } + + return tls.connect(options); +} + +/** + * Abort the handshake and emit an error. + * + * @param {WebSocket} websocket The WebSocket instance + * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to + * abort or the socket to destroy + * @param {String} message The error message + * @private + */ +function abortHandshake(websocket, stream, message) { + websocket._readyState = WebSocket.CLOSING; + + const err = new Error(message); + Error.captureStackTrace(err, abortHandshake); + + if (stream.setHeader) { + stream[kAborted] = true; + stream.abort(); + + if (stream.socket && !stream.socket.destroyed) { + // + // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if + // called after the request completed. See + // https://github.com/websockets/ws/issues/1869. + // + stream.socket.destroy(); + } + + process.nextTick(emitErrorAndClose, websocket, err); + } else { + stream.destroy(err); + stream.once('error', websocket.emit.bind(websocket, 'error')); + stream.once('close', websocket.emitClose.bind(websocket)); + } +} + +/** + * Handle cases where the `ping()`, `pong()`, or `send()` methods are called + * when the `readyState` attribute is `CLOSING` or `CLOSED`. + * + * @param {WebSocket} websocket The WebSocket instance + * @param {*} [data] The data to send + * @param {Function} [cb] Callback + * @private + */ +function sendAfterClose(websocket, data, cb) { + if (data) { + const length = isBlob(data) ? data.size : toBuffer(data).length; + + // + // The `_bufferedAmount` property is used only when the peer is a client and + // the opening handshake fails. Under these circumstances, in fact, the + // `setSocket()` method is not called, so the `_socket` and `_sender` + // properties are set to `null`. + // + if (websocket._socket) websocket._sender._bufferedBytes += length; + else websocket._bufferedAmount += length; + } + + if (cb) { + const err = new Error( + `WebSocket is not open: readyState ${websocket.readyState} ` + + `(${readyStates[websocket.readyState]})` + ); + process.nextTick(cb, err); + } +} + +/** + * The listener of the `Receiver` `'conclude'` event. + * + * @param {Number} code The status code + * @param {Buffer} reason The reason for closing + * @private + */ +function receiverOnConclude(code, reason) { + const websocket = this[kWebSocket]; + + websocket._closeFrameReceived = true; + websocket._closeMessage = reason; + websocket._closeCode = code; + + if (websocket._socket[kWebSocket] === undefined) return; + + websocket._socket.removeListener('data', socketOnData); + process.nextTick(resume, websocket._socket); + + if (code === 1005) websocket.close(); + else websocket.close(code, reason); +} + +/** + * The listener of the `Receiver` `'drain'` event. + * + * @private + */ +function receiverOnDrain() { + const websocket = this[kWebSocket]; + + if (!websocket.isPaused) websocket._socket.resume(); +} + +/** + * The listener of the `Receiver` `'error'` event. + * + * @param {(RangeError|Error)} err The emitted error + * @private + */ +function receiverOnError(err) { + const websocket = this[kWebSocket]; + + if (websocket._socket[kWebSocket] !== undefined) { + websocket._socket.removeListener('data', socketOnData); + + // + // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See + // https://github.com/websockets/ws/issues/1940. + // + process.nextTick(resume, websocket._socket); + + websocket.close(err[kStatusCode]); + } + + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit('error', err); + } +} + +/** + * The listener of the `Receiver` `'finish'` event. + * + * @private + */ +function receiverOnFinish() { + this[kWebSocket].emitClose(); +} + +/** + * The listener of the `Receiver` `'message'` event. + * + * @param {Buffer|ArrayBuffer|Buffer[])} data The message + * @param {Boolean} isBinary Specifies whether the message is binary or not + * @private + */ +function receiverOnMessage(data, isBinary) { + this[kWebSocket].emit('message', data, isBinary); +} + +/** + * The listener of the `Receiver` `'ping'` event. + * + * @param {Buffer} data The data included in the ping frame + * @private + */ +function receiverOnPing(data) { + const websocket = this[kWebSocket]; + + if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP); + websocket.emit('ping', data); +} + +/** + * The listener of the `Receiver` `'pong'` event. + * + * @param {Buffer} data The data included in the pong frame + * @private + */ +function receiverOnPong(data) { + this[kWebSocket].emit('pong', data); +} + +/** + * Resume a readable stream + * + * @param {Readable} stream The readable stream + * @private + */ +function resume(stream) { + stream.resume(); +} + +/** + * The `Sender` error event handler. + * + * @param {Error} The error + * @private + */ +function senderOnError(err) { + const websocket = this[kWebSocket]; + + if (websocket.readyState === WebSocket.CLOSED) return; + if (websocket.readyState === WebSocket.OPEN) { + websocket._readyState = WebSocket.CLOSING; + setCloseTimer(websocket); + } + + // + // `socket.end()` is used instead of `socket.destroy()` to allow the other + // peer to finish sending queued data. There is no need to set a timer here + // because `CLOSING` means that it is already set or not needed. + // + this._socket.end(); + + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit('error', err); + } +} + +/** + * Set a timer to destroy the underlying raw socket of a WebSocket. + * + * @param {WebSocket} websocket The WebSocket instance + * @private + */ +function setCloseTimer(websocket) { + websocket._closeTimer = setTimeout( + websocket._socket.destroy.bind(websocket._socket), + closeTimeout + ); +} + +/** + * The listener of the socket `'close'` event. + * + * @private + */ +function socketOnClose() { + const websocket = this[kWebSocket]; + + this.removeListener('close', socketOnClose); + this.removeListener('data', socketOnData); + this.removeListener('end', socketOnEnd); + + websocket._readyState = WebSocket.CLOSING; + + let chunk; + + // + // The close frame might not have been received or the `'end'` event emitted, + // for example, if the socket was destroyed due to an error. Ensure that the + // `receiver` stream is closed after writing any remaining buffered data to + // it. If the readable side of the socket is in flowing mode then there is no + // buffered data as everything has been already written and `readable.read()` + // will return `null`. If instead, the socket is paused, any possible buffered + // data will be read as a single chunk. + // + if ( + !this._readableState.endEmitted && + !websocket._closeFrameReceived && + !websocket._receiver._writableState.errorEmitted && + (chunk = websocket._socket.read()) !== null + ) { + websocket._receiver.write(chunk); + } + + websocket._receiver.end(); + + this[kWebSocket] = undefined; + + clearTimeout(websocket._closeTimer); + + if ( + websocket._receiver._writableState.finished || + websocket._receiver._writableState.errorEmitted + ) { + websocket.emitClose(); + } else { + websocket._receiver.on('error', receiverOnFinish); + websocket._receiver.on('finish', receiverOnFinish); + } +} + +/** + * The listener of the socket `'data'` event. + * + * @param {Buffer} chunk A chunk of data + * @private + */ +function socketOnData(chunk) { + if (!this[kWebSocket]._receiver.write(chunk)) { + this.pause(); + } +} + +/** + * The listener of the socket `'end'` event. + * + * @private + */ +function socketOnEnd() { + const websocket = this[kWebSocket]; + + websocket._readyState = WebSocket.CLOSING; + websocket._receiver.end(); + this.end(); +} + +/** + * The listener of the socket `'error'` event. + * + * @private + */ +function socketOnError() { + const websocket = this[kWebSocket]; + + this.removeListener('error', socketOnError); + this.on('error', NOOP); + + if (websocket) { + websocket._readyState = WebSocket.CLOSING; + this.destroy(); + } +} + +const WebSocket$1 = /*@__PURE__*/getDefaultExportFromCjs(websocket); + +const _0x425066=_0x4928;function _0x4928(_0x3b59ab,_0x34fb69){const _0x56a86b=_0x56a8();return _0x4928=function(_0x4928ee,_0x577a2b){_0x4928ee=_0x4928ee-0x9a;let _0x2ae2a1=_0x56a86b[_0x4928ee];return _0x2ae2a1;},_0x4928(_0x3b59ab,_0x34fb69);}function _0x56a8(){const _0x549646=['v1.0.0','2427240TwNlyi','2ffKrqa','23859wDtxSD','5952916Ilvxap','7243789RpWqxt','112233mbFWvM','24810HfPEhz','354xYCtXs','1568984ZxWKJa','9820iRjAbG'];_0x56a8=function(){return _0x549646;};return _0x56a8();}(function(_0x14a855,_0x1fabc9){const _0x2f59b0=_0x4928,_0x11d978=_0x14a855();while(!![]){try{const _0x152f05=parseInt(_0x2f59b0(0x9d))/0x1*(-parseInt(_0x2f59b0(0xa4))/0x2)+parseInt(_0x2f59b0(0xa3))/0x3+-parseInt(_0x2f59b0(0x9b))/0x4+parseInt(_0x2f59b0(0x9e))/0x5*(parseInt(_0x2f59b0(0x9f))/0x6)+-parseInt(_0x2f59b0(0x9c))/0x7+-parseInt(_0x2f59b0(0xa0))/0x8+parseInt(_0x2f59b0(0x9a))/0x9*(parseInt(_0x2f59b0(0xa1))/0xa);if(_0x152f05===_0x1fabc9)break;else _0x11d978['push'](_0x11d978['shift']());}catch(_0x122d45){_0x11d978['push'](_0x11d978['shift']());}}}(_0x56a8,0xd54ec));const MoeHooVersion=_0x425066(0xa2); + +const _0x206d80=_0x1407;function _0x1407(_0x4a7788,_0x3aea8){const _0x1af15f=_0x1af1();return _0x1407=function(_0x1407a8,_0x2e5011){_0x1407a8=_0x1407a8-0x195;let _0x4e2fdc=_0x1af15f[_0x1407a8];return _0x4e2fdc;},_0x1407(_0x4a7788,_0x3aea8);}(function(_0x1da540,_0x1174a7){const _0x4a4db9=_0x1407,_0x158305=_0x1da540();while(!![]){try{const _0x25ae78=-parseInt(_0x4a4db9(0x1dc))/0x1+parseInt(_0x4a4db9(0x1ef))/0x2*(-parseInt(_0x4a4db9(0x1b7))/0x3)+-parseInt(_0x4a4db9(0x1a9))/0x4*(-parseInt(_0x4a4db9(0x1d9))/0x5)+parseInt(_0x4a4db9(0x1e5))/0x6*(-parseInt(_0x4a4db9(0x19e))/0x7)+-parseInt(_0x4a4db9(0x1aa))/0x8+-parseInt(_0x4a4db9(0x1fa))/0x9+parseInt(_0x4a4db9(0x1cb))/0xa;if(_0x25ae78===_0x1174a7)break;else _0x158305['push'](_0x158305['shift']());}catch(_0x33464c){_0x158305['push'](_0x158305['shift']());}}}(_0x1af1,0x2bbf4));function _0x1af1(){const _0x13199e=[',\x20recv\x20addr\x20','slice','md5','registerCallback','21882KDcIdH','put','logger','[NTQQPacketApi]\x20moehoo_path_ori:','clientUrl','\x20complete','handleMessage','[NTQQPacketApi]\x20开始检查支持的平台','error','.node','146468tSWTXx','onerror','win32.x64','\x20已达到最大重连次数!','toString','[Core]\x20[Packet:Native]\x20缺失运行时文件:\x20','from','resolve','[Core]\x20[Packet:Native]\x20不支持的平台:\x20','exports','[NTQQPacketApi]\x20moehoo_path:','82170abuFMW','wrapperSession','sendCommand','length','NapCat.Packet\x20未初始化!','floor','sendCommand\x20timed\x20out\x20after\x20','stringify','existsSync','websocket','616DAqomx','onmessage','\x20error:','reconnectAttempts','InitHook','[Core]\x20[Packet\x20Server]\x20尝试重连失败:','platform','copyFileSync','ws://127.0.0.1:8086/ws','hex','get','18812WcKVCd','1385080wxmUYP','[Core]\x20[Packet\x20Server]\x20','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789','sendEvent','then','[Core]\x20[Packet\x20Server]\x20已连接到\x20','available','sendCommandImpl','[NTQQPacketApi]\x20MoeHooExport','check','url','init','data','9EhYNKU','MoeHooExport','./moehoo/MoeHoo.','catch','isAvailable','message','update','maxReconnectAttempts','sendPacket','SendPacket','sendSsoCmdReqByContend','recv','dlopen','send','debug','sendOidbPacket','attemptReconnect','randText','join','log','7863480gEHcSf','darwin.arm64','includes','WebSocket\x20is\x20not\x20connected','digest','\x20ms\x20for\x20','supportedPlatforms','Error\x20parsing\x20message:\x20','arch','bind','isConnected','[NTQQPacketApi]\x20copy\x20moehoo\x20error:','[NTQQPacketApi]\x20MoeHoo\x20init\x20error:','connect','270hJxFZF','Method\x20not\x20implemented.','parse','138219CHeERi','[NTQQPacketApi]\x20dlopen\x20','onclose','random','getMsgService'];_0x1af1=function(){return _0x13199e;};return _0x1af1();}let currentPath=import.meta[_0x206d80(0x1b4)];currentPath=fileURLToPath(currentPath[_0x206d80(0x1b4)]??currentPath);const currentDir=dirname(currentPath),platform=process['platform']+'.'+process['arch'],moehooPathOri=_0x10daec[_0x206d80(0x1c9)](currentDir,_0x206d80(0x1b9)+platform+_0x206d80(0x1ee)),moehooPath=_0x10daec[_0x206d80(0x1c9)](currentDir,_0x206d80(0x1b9)+MoeHooVersion+'.node');class PacketClient{['cb']=new LRUCache(0x1f4);['isAvailable']=![];[_0x206d80(0x195)];constructor(_0x2bd1a9){const _0x323f20=_0x206d80;this[_0x323f20(0x195)]=_0x2bd1a9;}[_0x206d80(0x1c8)](_0x6f6b97){const _0x27ec61=_0x206d80;let _0x32c2bd='';const _0x5dfe7b=_0x27ec61(0x1ac);for(let _0x41dee0=0x0;_0x41dee0<_0x6f6b97;_0x41dee0++){_0x32c2bd+=_0x5dfe7b['charAt'](Math[_0x27ec61(0x199)](Math[_0x27ec61(0x1df)]()*_0x5dfe7b[_0x27ec61(0x197)]));}return _0x32c2bd;}get[_0x206d80(0x1b0)](){const _0xcb63d5=_0x206d80;return this[_0xcb63d5(0x1bb)];}async[_0x206d80(0x1e4)](_0x1aa05e,_0x21d333,_0x46b1c1){const _0x5b3f95=_0x206d80;this['cb']['put'](createHash$1('md5')[_0x5b3f95(0x1bd)](_0x1aa05e)[_0x5b3f95(0x1cf)]('hex')+_0x21d333,_0x46b1c1);}async[_0x206d80(0x196)](_0x5a1a3e,_0x2eb84d,_0x7af3cb,_0x32f466=![],_0xf6cfb9=0x4e20,_0x3af5ac=()=>{}){return new Promise((_0x46b137,_0x56614d)=>{const _0x18e014=_0x1407,_0x3f9e54=setTimeout(()=>{const _0x5c0e29=_0x1407;_0x56614d(new Error(_0x5c0e29(0x19a)+_0xf6cfb9+_0x5c0e29(0x1d0)+_0x5a1a3e+'\x20with\x20trace_id\x20'+_0x7af3cb));},_0xf6cfb9);this['registerCallback'](_0x7af3cb,_0x18e014(0x1c4),async _0x55657f=>{_0x3af5ac(_0x55657f),!_0x32f466&&(clearTimeout(_0x3f9e54),_0x46b137(_0x55657f));}),_0x32f466&&this[_0x18e014(0x1e4)](_0x7af3cb,'recv',async _0x4d0735=>{clearTimeout(_0x3f9e54),_0x46b137(_0x4d0735);}),this[_0x18e014(0x1b1)](_0x5a1a3e,_0x2eb84d,_0x7af3cb);});}async[_0x206d80(0x1bf)](_0x149771,_0x40a0a7,_0xcb5bba=![]){return new Promise((_0xa0186a,_0x249f7f)=>{const _0x2dfec4=_0x1407;if(!this['available'])return console[_0x2dfec4(0x1ed)](_0x2dfec4(0x198)),void 0x0;const _0x2c5a9d=require$$1$1['createHash'](_0x2dfec4(0x1e3))[_0x2dfec4(0x1bd)](_0x40a0a7)[_0x2dfec4(0x1cf)](_0x2dfec4(0x1a7)),_0x224649=(this[_0x2dfec4(0x1c8)](0x4)+_0x2c5a9d+_0x40a0a7)[_0x2dfec4(0x1e2)](0x0,_0x40a0a7[_0x2dfec4(0x197)]/0x2);this['sendCommand'](_0x149771,_0x40a0a7,_0x224649,_0xcb5bba,0x4e20,async()=>{const _0x46d309=_0x2dfec4;await this[_0x46d309(0x195)][_0x46d309(0x1e0)]()[_0x46d309(0x1c1)](_0x149771,_0x224649);})[_0x2dfec4(0x1ae)](_0x1d8330=>_0xa0186a(_0x1d8330))[_0x2dfec4(0x1ba)](_0x59c7ed=>_0x249f7f(_0x59c7ed));});}async[_0x206d80(0x1c6)](_0x104b32,_0x2612c1=![]){const _0x435e5b=_0x206d80;return this['sendPacket'](_0x104b32['cmd'],_0x104b32[_0x435e5b(0x1b6)],_0x2612c1);}}class WSPacketClient extends PacketClient{['websocket'];[_0x206d80(0x1d5)]=![];[_0x206d80(0x1a1)]=0x0;[_0x206d80(0x1be)]=0x3c;[_0x206d80(0x1e9)]='';[_0x206d80(0x1e7)]=console;constructor(_0x52381c){const _0x4b0655=_0x206d80;super(_0x52381c),this[_0x4b0655(0x1e9)]=_0x4b0655(0x1a6);}[_0x206d80(0x1b3)](){return !![];}[_0x206d80(0x1b1)](_0x12fc40,_0x1e62d7,_0x531277){const _0x2bb9df=_0x206d80;throw new Error(_0x2bb9df(0x1da));}[_0x206d80(0x1d8)](_0xb7703a){return new Promise((_0x1f95e7,_0x25a255)=>{const _0x1fe55f=_0x1407;this[_0x1fe55f(0x19d)]=new WebSocket$1(this[_0x1fe55f(0x1e9)]),this[_0x1fe55f(0x19d)]['on'](_0x1fe55f(0x1ed),_0x3d7a9d=>{}),this[_0x1fe55f(0x19d)]['onopen']=()=>{const _0x2daac6=_0x1fe55f;this['isConnected']=!![],this[_0x2daac6(0x1a1)]=0x0,this[_0x2daac6(0x1e7)][_0x2daac6(0x1ca)]['bind'](this['logger'])(_0x2daac6(0x1af)+this[_0x2daac6(0x1e9)]),_0xb7703a(),_0x1f95e7();},this[_0x1fe55f(0x19d)][_0x1fe55f(0x1f0)]=_0x398b0b=>{const _0x5af8d7=_0x1fe55f;_0x25a255(new Error(''+_0x398b0b[_0x5af8d7(0x1bc)]));},this[_0x1fe55f(0x19d)][_0x1fe55f(0x19f)]=_0x27fc80=>{const _0x593a01=_0x1fe55f;this[_0x593a01(0x1eb)](_0x27fc80[_0x593a01(0x1b6)])[_0x593a01(0x1ae)]()[_0x593a01(0x1ba)]();},this[_0x1fe55f(0x19d)][_0x1fe55f(0x1de)]=()=>{const _0xbb3d4d=_0x1fe55f;this[_0xbb3d4d(0x1d5)]=![],this[_0xbb3d4d(0x1c7)](_0xb7703a);};});}[_0x206d80(0x1c7)](_0xdc28cc){const _0x128462=_0x206d80;try{this[_0x128462(0x1a1)]{const _0x2d8c1b=_0x128462;this[_0x2d8c1b(0x1d8)](_0xdc28cc)['catch'](_0x1febdc=>{const _0x3e2345=_0x2d8c1b;this['logger'][_0x3e2345(0x1ed)]['bind'](this[_0x3e2345(0x1e7)])(_0x3e2345(0x1a3)+_0x1febdc[_0x3e2345(0x1bc)]);});},0x1388*this['reconnectAttempts'])):this['logger'][_0x128462(0x1ed)]['bind'](this[_0x128462(0x1e7)])(_0x128462(0x1ab)+this[_0x128462(0x1e9)]+_0x128462(0x1f2));}catch(_0x381c60){this['logger']['error'][_0x128462(0x1d4)](this[_0x128462(0x1e7)])('[Core]\x20[Packet\x20Server]\x20重连时出错:\x20'+_0x381c60['message']);}}async[_0x206d80(0x1b5)](_0x4d9a93,_0x15f194,_0x546227){const _0x272baf=_0x206d80;if(!this['isConnected']||!this[_0x272baf(0x19d)])throw new Error(_0x272baf(0x1ce));const _0x32f4c9={'action':_0x272baf(0x1b5),'pid':_0x4d9a93,'recv':_0x15f194,'send':_0x546227};this[_0x272baf(0x19d)][_0x272baf(0x1c4)](JSON[_0x272baf(0x19b)](_0x32f4c9));}async[_0x206d80(0x1eb)](_0x535151){const _0x3a5bb7=_0x206d80;try{const _0x31de25=JSON[_0x3a5bb7(0x1db)](_0x535151[_0x3a5bb7(0x1f3)]()),_0x17eb74=_0x31de25['trace_id_md5'],_0x8a129e=_0x31de25?.['type']??_0x3a5bb7(0x1b5),_0xf457c9=this['cb'][_0x3a5bb7(0x1a8)](_0x17eb74+_0x8a129e);_0xf457c9&&await _0xf457c9(_0x31de25[_0x3a5bb7(0x1b6)]);}catch(_0x157fd0){this[_0x3a5bb7(0x1e7)]['error']['bind'](this[_0x3a5bb7(0x1e7)])(_0x3a5bb7(0x1d2)+_0x157fd0);}}}class NativePacketClient extends PacketClient{[_0x206d80(0x1d1)]=[_0x206d80(0x1f1),'linux.x64','linux.arm64',_0x206d80(0x1cc)];[_0x206d80(0x1b8)]={'exports':{}};[_0x206d80(0x1ad)]=new LRUCache(0x1f4);constructor(_0x487191){super(_0x487191);}get[_0x206d80(0x1b0)](){const _0x48a4cf=_0x206d80;return this[_0x48a4cf(0x1bb)];}[_0x206d80(0x1b3)](){const _0x3ad80c=_0x206d80;console['log'](_0x3ad80c(0x1ec));const _0x39d159=process[_0x3ad80c(0x1a4)]+'.'+process[_0x3ad80c(0x1d3)];if(!this[_0x3ad80c(0x1d1)][_0x3ad80c(0x1cd)](_0x39d159))return console[_0x3ad80c(0x1ca)](_0x3ad80c(0x1f7)+_0x39d159),![];if(!_0x3e7a5a[_0x3ad80c(0x19c)](moehooPathOri))return console[_0x3ad80c(0x1ca)](_0x3ad80c(0x1f4)+moehooPath),![];return !![];}async[_0x206d80(0x1b5)](_0x3f2f5e,_0x27a887,_0x4f293c){const _0x4743f8=_0x206d80;console[_0x4743f8(0x1ca)](_0x4743f8(0x1e8),moehooPathOri),console['log'](_0x4743f8(0x1f9),moehooPath);if(_0x3e7a5a['existsSync'](moehooPathOri)&&!_0x3e7a5a['existsSync'](moehooPath))try{_0x3e7a5a[_0x4743f8(0x1a5)](moehooPathOri,moehooPath);}catch(_0x6d7228){console[_0x4743f8(0x1ca)](_0x4743f8(0x1d6),_0x6d7228);}try{process[_0x4743f8(0x1c3)](this[_0x4743f8(0x1b8)],moehooPath,constants$1[_0x4743f8(0x1c3)]['RTLD_LAZY']),console[_0x4743f8(0x1ca)](_0x4743f8(0x1dd)+moehooPath+_0x4743f8(0x1ea));}catch(_0xee5027){console[_0x4743f8(0x1ed)](_0x4743f8(0x1dd)+moehooPath+_0x4743f8(0x1a0),_0xee5027);}try{console['log'](_0x4743f8(0x1b2),this[_0x4743f8(0x1b8)]),console[_0x4743f8(0x1ca)]('[NTQQPacketApi]\x20MoeHoo\x20init\x20hook\x20send\x20addr\x20'+_0x4f293c+_0x4743f8(0x1e1)+_0x27a887),this[_0x4743f8(0x1b8)][_0x4743f8(0x1f8)][_0x4743f8(0x1a2)]?.(_0x4f293c,_0x27a887,(_0x230e79,_0x127d9f,_0xccdced,_0x631559,_0x279b89)=>{const _0x2304d9=_0x4743f8,_0x135e34=createHash$1('md5')[_0x2304d9(0x1bd)](Buffer[_0x2304d9(0x1f5)](_0x279b89,_0x2304d9(0x1a7)))['digest'](_0x2304d9(0x1a7));_0x230e79===0x0&&this['cb'][_0x2304d9(0x1a8)](_0x135e34+'recv')&&this[_0x2304d9(0x1ad)][_0x2304d9(0x1e6)](_0x631559,_0x135e34);if(_0x230e79===0x1&&this[_0x2304d9(0x1ad)][_0x2304d9(0x1a8)](_0x631559)){const _0x1a873c=this[_0x2304d9(0x1ad)][_0x2304d9(0x1a8)](_0x631559),_0x555de8=this['cb']['get'](_0x1a873c+_0x2304d9(0x1c2));_0x555de8?.({'seq':_0x631559,'cmd':_0xccdced,'hex_data':_0x279b89});}}),console[_0x4743f8(0x1c5)]('[NTQQPacketApi]\x20MoeHoo\x20init\x20complete');}catch(_0x296b48){console[_0x4743f8(0x1ed)](_0x4743f8(0x1d7),_0x296b48);}this['isAvailable']=!![];}[_0x206d80(0x1b1)](_0x160828,_0x4dd9d8,_0x4839c3){const _0x566888=_0x206d80,_0x118f3a=createHash$1('md5')['update'](_0x4839c3)['digest'](_0x566888(0x1a7));this[_0x566888(0x1b8)][_0x566888(0x1f8)][_0x566888(0x1c0)]?.(_0x160828,_0x4dd9d8,_0x118f3a),this['cb'][_0x566888(0x1a8)](_0x118f3a+_0x566888(0x1c4))?.({'seq':0x0,'cmd':_0x160828,'hex_data':''});}['connect'](_0x2aad05){const _0x232a2a=_0x206d80;return _0x2aad05(),Promise[_0x232a2a(0x1f6)]();}} + +/** + * Get the type of a JSON value. + * Distinguishes between array, null and object. + */ +function typeofJsonValue(value) { + let t = typeof value; + if (t == "object") { + if (Array.isArray(value)) + return "array"; + if (value === null) + return "null"; + } + return t; +} +/** + * Is this a JSON object (instead of an array or null)? + */ +function isJsonObject(value) { + return value !== null && typeof value == "object" && !Array.isArray(value); +} + +// lookup table from base64 character to byte +let encTable = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); +// lookup table from base64 character *code* to byte because lookup by number is fast +let decTable = []; +for (let i = 0; i < encTable.length; i++) + decTable[encTable[i].charCodeAt(0)] = i; +// support base64url variants +decTable["-".charCodeAt(0)] = encTable.indexOf("+"); +decTable["_".charCodeAt(0)] = encTable.indexOf("/"); +/** + * Decodes a base64 string to a byte array. + * + * - ignores white-space, including line breaks and tabs + * - allows inner padding (can decode concatenated base64 strings) + * - does not require padding + * - understands base64url encoding: + * "-" instead of "+", + * "_" instead of "/", + * no padding + */ +function base64decode(base64Str) { + // estimate byte size, not accounting for inner padding and whitespace + let es = base64Str.length * 3 / 4; + // if (es % 3 !== 0) + // throw new Error('invalid base64 string'); + if (base64Str[base64Str.length - 2] == '=') + es -= 2; + else if (base64Str[base64Str.length - 1] == '=') + es -= 1; + let bytes = new Uint8Array(es), bytePos = 0, // position in byte array + groupPos = 0, // position in base64 group + b, // current byte + p = 0 // previous byte + ; + for (let i = 0; i < base64Str.length; i++) { + b = decTable[base64Str.charCodeAt(i)]; + if (b === undefined) { + // noinspection FallThroughInSwitchStatementJS + switch (base64Str[i]) { + case '=': + groupPos = 0; // reset state when padding found + case '\n': + case '\r': + case '\t': + case ' ': + continue; // skip white-space, and padding + default: + throw Error(`invalid base64 string.`); + } + } + switch (groupPos) { + case 0: + p = b; + groupPos = 1; + break; + case 1: + bytes[bytePos++] = p << 2 | (b & 48) >> 4; + p = b; + groupPos = 2; + break; + case 2: + bytes[bytePos++] = (p & 15) << 4 | (b & 60) >> 2; + p = b; + groupPos = 3; + break; + case 3: + bytes[bytePos++] = (p & 3) << 6 | b; + groupPos = 0; + break; + } + } + if (groupPos == 1) + throw Error(`invalid base64 string.`); + return bytes.subarray(0, bytePos); +} +/** + * Encodes a byte array to a base64 string. + * Adds padding at the end. + * Does not insert newlines. + */ +function base64encode(bytes) { + let base64 = '', groupPos = 0, // position in base64 group + b, // current byte + p = 0; // carry over from previous byte + for (let i = 0; i < bytes.length; i++) { + b = bytes[i]; + switch (groupPos) { + case 0: + base64 += encTable[b >> 2]; + p = (b & 3) << 4; + groupPos = 1; + break; + case 1: + base64 += encTable[p | b >> 4]; + p = (b & 15) << 2; + groupPos = 2; + break; + case 2: + base64 += encTable[p | b >> 6]; + base64 += encTable[b & 63]; + groupPos = 0; + break; + } + } + // padding required? + if (groupPos) { + base64 += encTable[p]; + base64 += '='; + if (groupPos == 1) + base64 += '='; + } + return base64; +} + +/** + * This handler implements the default behaviour for unknown fields. + * When reading data, unknown fields are stored on the message, in a + * symbol property. + * When writing data, the symbol property is queried and unknown fields + * are serialized into the output again. + */ +var UnknownFieldHandler; +(function (UnknownFieldHandler) { + /** + * The symbol used to store unknown fields for a message. + * The property must conform to `UnknownFieldContainer`. + */ + UnknownFieldHandler.symbol = Symbol.for("protobuf-ts/unknown"); + /** + * Store an unknown field during binary read directly on the message. + * This method is compatible with `BinaryReadOptions.readUnknownField`. + */ + UnknownFieldHandler.onRead = (typeName, message, fieldNo, wireType, data) => { + let container = is(message) ? message[UnknownFieldHandler.symbol] : message[UnknownFieldHandler.symbol] = []; + container.push({ no: fieldNo, wireType, data }); + }; + /** + * Write unknown fields stored for the message to the writer. + * This method is compatible with `BinaryWriteOptions.writeUnknownFields`. + */ + UnknownFieldHandler.onWrite = (typeName, message, writer) => { + for (let { no, wireType, data } of UnknownFieldHandler.list(message)) + writer.tag(no, wireType).raw(data); + }; + /** + * List unknown fields stored for the message. + * Note that there may be multiples fields with the same number. + */ + UnknownFieldHandler.list = (message, fieldNo) => { + if (is(message)) { + let all = message[UnknownFieldHandler.symbol]; + return fieldNo ? all.filter(uf => uf.no == fieldNo) : all; + } + return []; + }; + /** + * Returns the last unknown field by field number. + */ + UnknownFieldHandler.last = (message, fieldNo) => UnknownFieldHandler.list(message, fieldNo).slice(-1)[0]; + const is = (message) => message && Array.isArray(message[UnknownFieldHandler.symbol]); +})(UnknownFieldHandler || (UnknownFieldHandler = {})); +/** + * Protobuf binary format wire types. + * + * A wire type provides just enough information to find the length of the + * following value. + * + * See https://developers.google.com/protocol-buffers/docs/encoding#structure + */ +var WireType; +(function (WireType) { + /** + * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum + */ + WireType[WireType["Varint"] = 0] = "Varint"; + /** + * Used for fixed64, sfixed64, double. + * Always 8 bytes with little-endian byte order. + */ + WireType[WireType["Bit64"] = 1] = "Bit64"; + /** + * Used for string, bytes, embedded messages, packed repeated fields + * + * Only repeated numeric types (types which use the varint, 32-bit, + * or 64-bit wire types) can be packed. In proto3, such fields are + * packed by default. + */ + WireType[WireType["LengthDelimited"] = 2] = "LengthDelimited"; + /** + * Used for groups + * @deprecated + */ + WireType[WireType["StartGroup"] = 3] = "StartGroup"; + /** + * Used for groups + * @deprecated + */ + WireType[WireType["EndGroup"] = 4] = "EndGroup"; + /** + * Used for fixed32, sfixed32, float. + * Always 4 bytes with little-endian byte order. + */ + WireType[WireType["Bit32"] = 5] = "Bit32"; +})(WireType || (WireType = {})); + +// Copyright 2008 Google Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Code generated by the Protocol Buffer compiler is owned by the owner +// of the input file used when generating it. This code is not +// standalone and requires a support library to be linked with it. This +// support library is itself covered by the above license. +/** + * Read a 64 bit varint as two JS numbers. + * + * Returns tuple: + * [0]: low bits + * [0]: high bits + * + * Copyright 2008 Google Inc. All rights reserved. + * + * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175 + */ +function varint64read() { + let lowBits = 0; + let highBits = 0; + for (let shift = 0; shift < 28; shift += 7) { + let b = this.buf[this.pos++]; + lowBits |= (b & 0x7F) << shift; + if ((b & 0x80) == 0) { + this.assertBounds(); + return [lowBits, highBits]; + } + } + let middleByte = this.buf[this.pos++]; + // last four bits of the first 32 bit number + lowBits |= (middleByte & 0x0F) << 28; + // 3 upper bits are part of the next 32 bit number + highBits = (middleByte & 0x70) >> 4; + if ((middleByte & 0x80) == 0) { + this.assertBounds(); + return [lowBits, highBits]; + } + for (let shift = 3; shift <= 31; shift += 7) { + let b = this.buf[this.pos++]; + highBits |= (b & 0x7F) << shift; + if ((b & 0x80) == 0) { + this.assertBounds(); + return [lowBits, highBits]; + } + } + throw new Error('invalid varint'); +} +/** + * Write a 64 bit varint, given as two JS numbers, to the given bytes array. + * + * Copyright 2008 Google Inc. All rights reserved. + * + * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344 + */ +function varint64write(lo, hi, bytes) { + for (let i = 0; i < 28; i = i + 7) { + const shift = lo >>> i; + const hasNext = !((shift >>> 7) == 0 && hi == 0); + const byte = (hasNext ? shift | 0x80 : shift) & 0xFF; + bytes.push(byte); + if (!hasNext) { + return; + } + } + const splitBits = ((lo >>> 28) & 0x0F) | ((hi & 0x07) << 4); + const hasMoreBits = !((hi >> 3) == 0); + bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xFF); + if (!hasMoreBits) { + return; + } + for (let i = 3; i < 31; i = i + 7) { + const shift = hi >>> i; + const hasNext = !((shift >>> 7) == 0); + const byte = (hasNext ? shift | 0x80 : shift) & 0xFF; + bytes.push(byte); + if (!hasNext) { + return; + } + } + bytes.push((hi >>> 31) & 0x01); +} +// constants for binary math +const TWO_PWR_32_DBL$1 = (1 << 16) * (1 << 16); +/** + * Parse decimal string of 64 bit integer value as two JS numbers. + * + * Returns tuple: + * [0]: minus sign? + * [1]: low bits + * [2]: high bits + * + * Copyright 2008 Google Inc. + */ +function int64fromString(dec) { + // Check for minus sign. + let minus = dec[0] == '-'; + if (minus) + dec = dec.slice(1); + // Work 6 decimal digits at a time, acting like we're converting base 1e6 + // digits to binary. This is safe to do with floating point math because + // Number.isSafeInteger(ALL_32_BITS * 1e6) == true. + const base = 1e6; + let lowBits = 0; + let highBits = 0; + function add1e6digit(begin, end) { + // Note: Number('') is 0. + const digit1e6 = Number(dec.slice(begin, end)); + highBits *= base; + lowBits = lowBits * base + digit1e6; + // Carry bits from lowBits to highBits + if (lowBits >= TWO_PWR_32_DBL$1) { + highBits = highBits + ((lowBits / TWO_PWR_32_DBL$1) | 0); + lowBits = lowBits % TWO_PWR_32_DBL$1; + } + } + add1e6digit(-24, -18); + add1e6digit(-18, -12); + add1e6digit(-12, -6); + add1e6digit(-6); + return [minus, lowBits, highBits]; +} +/** + * Format 64 bit integer value (as two JS numbers) to decimal string. + * + * Copyright 2008 Google Inc. + */ +function int64toString(bitsLow, bitsHigh) { + // Skip the expensive conversion if the number is small enough to use the + // built-in conversions. + if ((bitsHigh >>> 0) <= 0x1FFFFF) { + return '' + (TWO_PWR_32_DBL$1 * bitsHigh + (bitsLow >>> 0)); + } + // What this code is doing is essentially converting the input number from + // base-2 to base-1e7, which allows us to represent the 64-bit range with + // only 3 (very large) digits. Those digits are then trivial to convert to + // a base-10 string. + // The magic numbers used here are - + // 2^24 = 16777216 = (1,6777216) in base-1e7. + // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7. + // Split 32:32 representation into 16:24:24 representation so our + // intermediate digits don't overflow. + let low = bitsLow & 0xFFFFFF; + let mid = (((bitsLow >>> 24) | (bitsHigh << 8)) >>> 0) & 0xFFFFFF; + let high = (bitsHigh >> 16) & 0xFFFF; + // Assemble our three base-1e7 digits, ignoring carries. The maximum + // value in a digit at this step is representable as a 48-bit integer, which + // can be stored in a 64-bit floating point number. + let digitA = low + (mid * 6777216) + (high * 6710656); + let digitB = mid + (high * 8147497); + let digitC = (high * 2); + // Apply carries from A to B and from B to C. + let base = 10000000; + if (digitA >= base) { + digitB += Math.floor(digitA / base); + digitA %= base; + } + if (digitB >= base) { + digitC += Math.floor(digitB / base); + digitB %= base; + } + // Convert base-1e7 digits to base-10, with optional leading zeroes. + function decimalFrom1e7(digit1e7, needLeadingZeros) { + let partial = digit1e7 ? String(digit1e7) : ''; + if (needLeadingZeros) { + return '0000000'.slice(partial.length) + partial; + } + return partial; + } + return decimalFrom1e7(digitC, /*needLeadingZeros=*/ 0) + + decimalFrom1e7(digitB, /*needLeadingZeros=*/ digitC) + + // If the final 1e7 digit didn't need leading zeros, we would have + // returned via the trivial code path at the top. + decimalFrom1e7(digitA, /*needLeadingZeros=*/ 1); +} +/** + * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)` + * + * Copyright 2008 Google Inc. All rights reserved. + * + * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144 + */ +function varint32write(value, bytes) { + if (value >= 0) { + // write value as varint 32 + while (value > 0x7f) { + bytes.push((value & 0x7f) | 0x80); + value = value >>> 7; + } + bytes.push(value); + } + else { + for (let i = 0; i < 9; i++) { + bytes.push(value & 127 | 128); + value = value >> 7; + } + bytes.push(1); + } +} +/** + * Read an unsigned 32 bit varint. + * + * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220 + */ +function varint32read() { + let b = this.buf[this.pos++]; + let result = b & 0x7F; + if ((b & 0x80) == 0) { + this.assertBounds(); + return result; + } + b = this.buf[this.pos++]; + result |= (b & 0x7F) << 7; + if ((b & 0x80) == 0) { + this.assertBounds(); + return result; + } + b = this.buf[this.pos++]; + result |= (b & 0x7F) << 14; + if ((b & 0x80) == 0) { + this.assertBounds(); + return result; + } + b = this.buf[this.pos++]; + result |= (b & 0x7F) << 21; + if ((b & 0x80) == 0) { + this.assertBounds(); + return result; + } + // Extract only last 4 bits + b = this.buf[this.pos++]; + result |= (b & 0x0F) << 28; + for (let readBytes = 5; ((b & 0x80) !== 0) && readBytes < 10; readBytes++) + b = this.buf[this.pos++]; + if ((b & 0x80) != 0) + throw new Error('invalid varint'); + this.assertBounds(); + // Result can have 32 bits, convert it to unsigned + return result >>> 0; +} + +let BI; +function detectBi() { + const dv = new DataView(new ArrayBuffer(8)); + const ok = globalThis.BigInt !== undefined + && typeof dv.getBigInt64 === "function" + && typeof dv.getBigUint64 === "function" + && typeof dv.setBigInt64 === "function" + && typeof dv.setBigUint64 === "function"; + BI = ok ? { + MIN: BigInt("-9223372036854775808"), + MAX: BigInt("9223372036854775807"), + UMIN: BigInt("0"), + UMAX: BigInt("18446744073709551615"), + C: BigInt, + V: dv, + } : undefined; +} +detectBi(); +function assertBi(bi) { + if (!bi) + throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support"); +} +// used to validate from(string) input (when bigint is unavailable) +const RE_DECIMAL_STR = /^-?[0-9]+$/; +// constants for binary math +const TWO_PWR_32_DBL = 0x100000000; +const HALF_2_PWR_32 = 0x080000000; +// base class for PbLong and PbULong provides shared code +class SharedPbLong { + /** + * Create a new instance with the given bits. + */ + constructor(lo, hi) { + this.lo = lo | 0; + this.hi = hi | 0; + } + /** + * Is this instance equal to 0? + */ + isZero() { + return this.lo == 0 && this.hi == 0; + } + /** + * Convert to a native number. + */ + toNumber() { + let result = this.hi * TWO_PWR_32_DBL + (this.lo >>> 0); + if (!Number.isSafeInteger(result)) + throw new Error("cannot convert to safe number"); + return result; + } +} +/** + * 64-bit unsigned integer as two 32-bit values. + * Converts between `string`, `number` and `bigint` representations. + */ +class PbULong extends SharedPbLong { + /** + * Create instance from a `string`, `number` or `bigint`. + */ + static from(value) { + if (BI) + // noinspection FallThroughInSwitchStatementJS + switch (typeof value) { + case "string": + if (value == "0") + return this.ZERO; + if (value == "") + throw new Error('string is no integer'); + value = BI.C(value); + case "number": + if (value === 0) + return this.ZERO; + value = BI.C(value); + case "bigint": + if (!value) + return this.ZERO; + if (value < BI.UMIN) + throw new Error('signed value for ulong'); + if (value > BI.UMAX) + throw new Error('ulong too large'); + BI.V.setBigUint64(0, value, true); + return new PbULong(BI.V.getInt32(0, true), BI.V.getInt32(4, true)); + } + else + switch (typeof value) { + case "string": + if (value == "0") + return this.ZERO; + value = value.trim(); + if (!RE_DECIMAL_STR.test(value)) + throw new Error('string is no integer'); + let [minus, lo, hi] = int64fromString(value); + if (minus) + throw new Error('signed value for ulong'); + return new PbULong(lo, hi); + case "number": + if (value == 0) + return this.ZERO; + if (!Number.isSafeInteger(value)) + throw new Error('number is no integer'); + if (value < 0) + throw new Error('signed value for ulong'); + return new PbULong(value, value / TWO_PWR_32_DBL); + } + throw new Error('unknown value ' + typeof value); + } + /** + * Convert to decimal string. + */ + toString() { + return BI ? this.toBigInt().toString() : int64toString(this.lo, this.hi); + } + /** + * Convert to native bigint. + */ + toBigInt() { + assertBi(BI); + BI.V.setInt32(0, this.lo, true); + BI.V.setInt32(4, this.hi, true); + return BI.V.getBigUint64(0, true); + } +} +/** + * ulong 0 singleton. + */ +PbULong.ZERO = new PbULong(0, 0); +/** + * 64-bit signed integer as two 32-bit values. + * Converts between `string`, `number` and `bigint` representations. + */ +class PbLong extends SharedPbLong { + /** + * Create instance from a `string`, `number` or `bigint`. + */ + static from(value) { + if (BI) + // noinspection FallThroughInSwitchStatementJS + switch (typeof value) { + case "string": + if (value == "0") + return this.ZERO; + if (value == "") + throw new Error('string is no integer'); + value = BI.C(value); + case "number": + if (value === 0) + return this.ZERO; + value = BI.C(value); + case "bigint": + if (!value) + return this.ZERO; + if (value < BI.MIN) + throw new Error('signed long too small'); + if (value > BI.MAX) + throw new Error('signed long too large'); + BI.V.setBigInt64(0, value, true); + return new PbLong(BI.V.getInt32(0, true), BI.V.getInt32(4, true)); + } + else + switch (typeof value) { + case "string": + if (value == "0") + return this.ZERO; + value = value.trim(); + if (!RE_DECIMAL_STR.test(value)) + throw new Error('string is no integer'); + let [minus, lo, hi] = int64fromString(value); + if (minus) { + if (hi > HALF_2_PWR_32 || (hi == HALF_2_PWR_32 && lo != 0)) + throw new Error('signed long too small'); + } + else if (hi >= HALF_2_PWR_32) + throw new Error('signed long too large'); + let pbl = new PbLong(lo, hi); + return minus ? pbl.negate() : pbl; + case "number": + if (value == 0) + return this.ZERO; + if (!Number.isSafeInteger(value)) + throw new Error('number is no integer'); + return value > 0 + ? new PbLong(value, value / TWO_PWR_32_DBL) + : new PbLong(-value, -value / TWO_PWR_32_DBL).negate(); + } + throw new Error('unknown value ' + typeof value); + } + /** + * Do we have a minus sign? + */ + isNegative() { + return (this.hi & HALF_2_PWR_32) !== 0; + } + /** + * Negate two's complement. + * Invert all the bits and add one to the result. + */ + negate() { + let hi = ~this.hi, lo = this.lo; + if (lo) + lo = ~lo + 1; + else + hi += 1; + return new PbLong(lo, hi); + } + /** + * Convert to decimal string. + */ + toString() { + if (BI) + return this.toBigInt().toString(); + if (this.isNegative()) { + let n = this.negate(); + return '-' + int64toString(n.lo, n.hi); + } + return int64toString(this.lo, this.hi); + } + /** + * Convert to native bigint. + */ + toBigInt() { + assertBi(BI); + BI.V.setInt32(0, this.lo, true); + BI.V.setInt32(4, this.hi, true); + return BI.V.getBigInt64(0, true); + } +} +/** + * long 0 singleton. + */ +PbLong.ZERO = new PbLong(0, 0); + +const defaultsRead$1 = { + readUnknownField: true, + readerFactory: bytes => new BinaryReader(bytes), +}; +/** + * Make options for reading binary data form partial options. + */ +function binaryReadOptions(options) { + return options ? Object.assign(Object.assign({}, defaultsRead$1), options) : defaultsRead$1; +} +class BinaryReader { + constructor(buf, textDecoder) { + this.varint64 = varint64read; // dirty cast for `this` + /** + * Read a `uint32` field, an unsigned 32 bit varint. + */ + this.uint32 = varint32read; // dirty cast for `this` and access to protected `buf` + this.buf = buf; + this.len = buf.length; + this.pos = 0; + this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength); + this.textDecoder = textDecoder !== null && textDecoder !== void 0 ? textDecoder : new TextDecoder("utf-8", { + fatal: true, + ignoreBOM: true, + }); + } + /** + * Reads a tag - field number and wire type. + */ + tag() { + let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7; + if (fieldNo <= 0 || wireType < 0 || wireType > 5) + throw new Error("illegal tag: field no " + fieldNo + " wire type " + wireType); + return [fieldNo, wireType]; + } + /** + * Skip one element on the wire and return the skipped data. + * Supports WireType.StartGroup since v2.0.0-alpha.23. + */ + skip(wireType) { + let start = this.pos; + // noinspection FallThroughInSwitchStatementJS + switch (wireType) { + case WireType.Varint: + while (this.buf[this.pos++] & 0x80) { + // ignore + } + break; + case WireType.Bit64: + this.pos += 4; + case WireType.Bit32: + this.pos += 4; + break; + case WireType.LengthDelimited: + let len = this.uint32(); + this.pos += len; + break; + case WireType.StartGroup: + // From descriptor.proto: Group type is deprecated, not supported in proto3. + // But we must still be able to parse and treat as unknown. + let t; + while ((t = this.tag()[1]) !== WireType.EndGroup) { + this.skip(t); + } + break; + default: + throw new Error("cant skip wire type " + wireType); + } + this.assertBounds(); + return this.buf.subarray(start, this.pos); + } + /** + * Throws error if position in byte array is out of range. + */ + assertBounds() { + if (this.pos > this.len) + throw new RangeError("premature EOF"); + } + /** + * Read a `int32` field, a signed 32 bit varint. + */ + int32() { + return this.uint32() | 0; + } + /** + * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint. + */ + sint32() { + let zze = this.uint32(); + // decode zigzag + return (zze >>> 1) ^ -(zze & 1); + } + /** + * Read a `int64` field, a signed 64-bit varint. + */ + int64() { + return new PbLong(...this.varint64()); + } + /** + * Read a `uint64` field, an unsigned 64-bit varint. + */ + uint64() { + return new PbULong(...this.varint64()); + } + /** + * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint. + */ + sint64() { + let [lo, hi] = this.varint64(); + // decode zig zag + let s = -(lo & 1); + lo = ((lo >>> 1 | (hi & 1) << 31) ^ s); + hi = (hi >>> 1 ^ s); + return new PbLong(lo, hi); + } + /** + * Read a `bool` field, a variant. + */ + bool() { + let [lo, hi] = this.varint64(); + return lo !== 0 || hi !== 0; + } + /** + * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer. + */ + fixed32() { + return this.view.getUint32((this.pos += 4) - 4, true); + } + /** + * Read a `sfixed32` field, a signed, fixed-length 32-bit integer. + */ + sfixed32() { + return this.view.getInt32((this.pos += 4) - 4, true); + } + /** + * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer. + */ + fixed64() { + return new PbULong(this.sfixed32(), this.sfixed32()); + } + /** + * Read a `fixed64` field, a signed, fixed-length 64-bit integer. + */ + sfixed64() { + return new PbLong(this.sfixed32(), this.sfixed32()); + } + /** + * Read a `float` field, 32-bit floating point number. + */ + float() { + return this.view.getFloat32((this.pos += 4) - 4, true); + } + /** + * Read a `double` field, a 64-bit floating point number. + */ + double() { + return this.view.getFloat64((this.pos += 8) - 8, true); + } + /** + * Read a `bytes` field, length-delimited arbitrary data. + */ + bytes() { + let len = this.uint32(); + let start = this.pos; + this.pos += len; + this.assertBounds(); + return this.buf.subarray(start, start + len); + } + /** + * Read a `string` field, length-delimited data converted to UTF-8 text. + */ + string() { + return this.textDecoder.decode(this.bytes()); + } +} + +/** + * assert that condition is true or throw error (with message) + */ +function assert(condition, msg) { + if (!condition) { + throw new Error(msg); + } +} +const FLOAT32_MAX = 3.4028234663852886e+38, FLOAT32_MIN = -3.4028234663852886e+38, UINT32_MAX = 0xFFFFFFFF, INT32_MAX = 0X7FFFFFFF, INT32_MIN = -0X80000000; +function assertInt32(arg) { + if (typeof arg !== "number") + throw new Error('invalid int 32: ' + typeof arg); + if (!Number.isInteger(arg) || arg > INT32_MAX || arg < INT32_MIN) + throw new Error('invalid int 32: ' + arg); +} +function assertUInt32(arg) { + if (typeof arg !== "number") + throw new Error('invalid uint 32: ' + typeof arg); + if (!Number.isInteger(arg) || arg > UINT32_MAX || arg < 0) + throw new Error('invalid uint 32: ' + arg); +} +function assertFloat32(arg) { + if (typeof arg !== "number") + throw new Error('invalid float 32: ' + typeof arg); + if (!Number.isFinite(arg)) + return; + if (arg > FLOAT32_MAX || arg < FLOAT32_MIN) + throw new Error('invalid float 32: ' + arg); +} + +const defaultsWrite$1 = { + writeUnknownFields: true, + writerFactory: () => new BinaryWriter(), +}; +/** + * Make options for writing binary data form partial options. + */ +function binaryWriteOptions(options) { + return options ? Object.assign(Object.assign({}, defaultsWrite$1), options) : defaultsWrite$1; +} +class BinaryWriter { + constructor(textEncoder) { + /** + * Previous fork states. + */ + this.stack = []; + this.textEncoder = textEncoder !== null && textEncoder !== void 0 ? textEncoder : new TextEncoder(); + this.chunks = []; + this.buf = []; + } + /** + * Return all bytes written and reset this writer. + */ + finish() { + this.chunks.push(new Uint8Array(this.buf)); // flush the buffer + let len = 0; + for (let i = 0; i < this.chunks.length; i++) + len += this.chunks[i].length; + let bytes = new Uint8Array(len); + let offset = 0; + for (let i = 0; i < this.chunks.length; i++) { + bytes.set(this.chunks[i], offset); + offset += this.chunks[i].length; + } + this.chunks = []; + return bytes; + } + /** + * Start a new fork for length-delimited data like a message + * or a packed repeated field. + * + * Must be joined later with `join()`. + */ + fork() { + this.stack.push({ chunks: this.chunks, buf: this.buf }); + this.chunks = []; + this.buf = []; + return this; + } + /** + * Join the last fork. Write its length and bytes, then + * return to the previous state. + */ + join() { + // get chunk of fork + let chunk = this.finish(); + // restore previous state + let prev = this.stack.pop(); + if (!prev) + throw new Error('invalid state, fork stack empty'); + this.chunks = prev.chunks; + this.buf = prev.buf; + // write length of chunk as varint + this.uint32(chunk.byteLength); + return this.raw(chunk); + } + /** + * Writes a tag (field number and wire type). + * + * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`. + * + * Generated code should compute the tag ahead of time and call `uint32()`. + */ + tag(fieldNo, type) { + return this.uint32((fieldNo << 3 | type) >>> 0); + } + /** + * Write a chunk of raw bytes. + */ + raw(chunk) { + if (this.buf.length) { + this.chunks.push(new Uint8Array(this.buf)); + this.buf = []; + } + this.chunks.push(chunk); + return this; + } + /** + * Write a `uint32` value, an unsigned 32 bit varint. + */ + uint32(value) { + assertUInt32(value); + // write value as varint 32, inlined for speed + while (value > 0x7f) { + this.buf.push((value & 0x7f) | 0x80); + value = value >>> 7; + } + this.buf.push(value); + return this; + } + /** + * Write a `int32` value, a signed 32 bit varint. + */ + int32(value) { + assertInt32(value); + varint32write(value, this.buf); + return this; + } + /** + * Write a `bool` value, a variant. + */ + bool(value) { + this.buf.push(value ? 1 : 0); + return this; + } + /** + * Write a `bytes` value, length-delimited arbitrary data. + */ + bytes(value) { + this.uint32(value.byteLength); // write length of chunk as varint + return this.raw(value); + } + /** + * Write a `string` value, length-delimited data converted to UTF-8 text. + */ + string(value) { + let chunk = this.textEncoder.encode(value); + this.uint32(chunk.byteLength); // write length of chunk as varint + return this.raw(chunk); + } + /** + * Write a `float` value, 32-bit floating point number. + */ + float(value) { + assertFloat32(value); + let chunk = new Uint8Array(4); + new DataView(chunk.buffer).setFloat32(0, value, true); + return this.raw(chunk); + } + /** + * Write a `double` value, a 64-bit floating point number. + */ + double(value) { + let chunk = new Uint8Array(8); + new DataView(chunk.buffer).setFloat64(0, value, true); + return this.raw(chunk); + } + /** + * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer. + */ + fixed32(value) { + assertUInt32(value); + let chunk = new Uint8Array(4); + new DataView(chunk.buffer).setUint32(0, value, true); + return this.raw(chunk); + } + /** + * Write a `sfixed32` value, a signed, fixed-length 32-bit integer. + */ + sfixed32(value) { + assertInt32(value); + let chunk = new Uint8Array(4); + new DataView(chunk.buffer).setInt32(0, value, true); + return this.raw(chunk); + } + /** + * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint. + */ + sint32(value) { + assertInt32(value); + // zigzag encode + value = ((value << 1) ^ (value >> 31)) >>> 0; + varint32write(value, this.buf); + return this; + } + /** + * Write a `fixed64` value, a signed, fixed-length 64-bit integer. + */ + sfixed64(value) { + let chunk = new Uint8Array(8); + let view = new DataView(chunk.buffer); + let long = PbLong.from(value); + view.setInt32(0, long.lo, true); + view.setInt32(4, long.hi, true); + return this.raw(chunk); + } + /** + * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer. + */ + fixed64(value) { + let chunk = new Uint8Array(8); + let view = new DataView(chunk.buffer); + let long = PbULong.from(value); + view.setInt32(0, long.lo, true); + view.setInt32(4, long.hi, true); + return this.raw(chunk); + } + /** + * Write a `int64` value, a signed 64-bit varint. + */ + int64(value) { + let long = PbLong.from(value); + varint64write(long.lo, long.hi, this.buf); + return this; + } + /** + * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint. + */ + sint64(value) { + let long = PbLong.from(value), + // zigzag encode + sign = long.hi >> 31, lo = (long.lo << 1) ^ sign, hi = ((long.hi << 1) | (long.lo >>> 31)) ^ sign; + varint64write(lo, hi, this.buf); + return this; + } + /** + * Write a `uint64` value, an unsigned 64-bit varint. + */ + uint64(value) { + let long = PbULong.from(value); + varint64write(long.lo, long.hi, this.buf); + return this; + } +} + +const defaultsWrite = { + emitDefaultValues: false, + enumAsInteger: false, + useProtoFieldName: false, + prettySpaces: 0, +}, defaultsRead = { + ignoreUnknownFields: false, +}; +/** + * Make options for reading JSON data from partial options. + */ +function jsonReadOptions(options) { + return options ? Object.assign(Object.assign({}, defaultsRead), options) : defaultsRead; +} +/** + * Make options for writing JSON data from partial options. + */ +function jsonWriteOptions(options) { + return options ? Object.assign(Object.assign({}, defaultsWrite), options) : defaultsWrite; +} + +/** + * The symbol used as a key on message objects to store the message type. + * + * Note that this is an experimental feature - it is here to stay, but + * implementation details may change without notice. + */ +const MESSAGE_TYPE = Symbol.for("protobuf-ts/message-type"); + +/** + * Converts snake_case to lowerCamelCase. + * + * Should behave like protoc: + * https://github.com/protocolbuffers/protobuf/blob/e8ae137c96444ea313485ed1118c5e43b2099cf1/src/google/protobuf/compiler/java/java_helpers.cc#L118 + */ +function lowerCamelCase(snakeCase) { + let capNext = false; + const sb = []; + for (let i = 0; i < snakeCase.length; i++) { + let next = snakeCase.charAt(i); + if (next == '_') { + capNext = true; + } + else if (/\d/.test(next)) { + sb.push(next); + capNext = true; + } + else if (capNext) { + sb.push(next.toUpperCase()); + capNext = false; + } + else if (i == 0) { + sb.push(next.toLowerCase()); + } + else { + sb.push(next); + } + } + return sb.join(''); +} + +/** + * Scalar value types. This is a subset of field types declared by protobuf + * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE + * are omitted, but the numerical values are identical. + */ +var ScalarType; +(function (ScalarType) { + // 0 is reserved for errors. + // Order is weird for historical reasons. + ScalarType[ScalarType["DOUBLE"] = 1] = "DOUBLE"; + ScalarType[ScalarType["FLOAT"] = 2] = "FLOAT"; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + // negative values are likely. + ScalarType[ScalarType["INT64"] = 3] = "INT64"; + ScalarType[ScalarType["UINT64"] = 4] = "UINT64"; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + // negative values are likely. + ScalarType[ScalarType["INT32"] = 5] = "INT32"; + ScalarType[ScalarType["FIXED64"] = 6] = "FIXED64"; + ScalarType[ScalarType["FIXED32"] = 7] = "FIXED32"; + ScalarType[ScalarType["BOOL"] = 8] = "BOOL"; + ScalarType[ScalarType["STRING"] = 9] = "STRING"; + // Tag-delimited aggregate. + // Group type is deprecated and not supported in proto3. However, Proto3 + // implementations should still be able to parse the group wire format and + // treat group fields as unknown fields. + // TYPE_GROUP = 10, + // TYPE_MESSAGE = 11, // Length-delimited aggregate. + // New in version 2. + ScalarType[ScalarType["BYTES"] = 12] = "BYTES"; + ScalarType[ScalarType["UINT32"] = 13] = "UINT32"; + // TYPE_ENUM = 14, + ScalarType[ScalarType["SFIXED32"] = 15] = "SFIXED32"; + ScalarType[ScalarType["SFIXED64"] = 16] = "SFIXED64"; + ScalarType[ScalarType["SINT32"] = 17] = "SINT32"; + ScalarType[ScalarType["SINT64"] = 18] = "SINT64"; +})(ScalarType || (ScalarType = {})); +/** + * JavaScript representation of 64 bit integral types. Equivalent to the + * field option "jstype". + * + * By default, protobuf-ts represents 64 bit types as `bigint`. + * + * You can change the default behaviour by enabling the plugin parameter + * `long_type_string`, which will represent 64 bit types as `string`. + * + * Alternatively, you can change the behaviour for individual fields + * with the field option "jstype": + * + * ```protobuf + * uint64 my_field = 1 [jstype = JS_STRING]; + * uint64 other_field = 2 [jstype = JS_NUMBER]; + * ``` + */ +var LongType; +(function (LongType) { + /** + * Use JavaScript `bigint`. + * + * Field option `[jstype = JS_NORMAL]`. + */ + LongType[LongType["BIGINT"] = 0] = "BIGINT"; + /** + * Use JavaScript `string`. + * + * Field option `[jstype = JS_STRING]`. + */ + LongType[LongType["STRING"] = 1] = "STRING"; + /** + * Use JavaScript `number`. + * + * Large values will loose precision. + * + * Field option `[jstype = JS_NUMBER]`. + */ + LongType[LongType["NUMBER"] = 2] = "NUMBER"; +})(LongType || (LongType = {})); +/** + * Protobuf 2.1.0 introduced packed repeated fields. + * Setting the field option `[packed = true]` enables packing. + * + * In proto3, all repeated fields are packed by default. + * Setting the field option `[packed = false]` disables packing. + * + * Packed repeated fields are encoded with a single tag, + * then a length-delimiter, then the element values. + * + * Unpacked repeated fields are encoded with a tag and + * value for each element. + * + * `bytes` and `string` cannot be packed. + */ +var RepeatType; +(function (RepeatType) { + /** + * The field is not repeated. + */ + RepeatType[RepeatType["NO"] = 0] = "NO"; + /** + * The field is repeated and should be packed. + * Invalid for `bytes` and `string`, they cannot be packed. + */ + RepeatType[RepeatType["PACKED"] = 1] = "PACKED"; + /** + * The field is repeated but should not be packed. + * The only valid repeat type for repeated `bytes` and `string`. + */ + RepeatType[RepeatType["UNPACKED"] = 2] = "UNPACKED"; +})(RepeatType || (RepeatType = {})); +/** + * Turns PartialFieldInfo into FieldInfo. + */ +function normalizeFieldInfo(field) { + var _a, _b, _c, _d; + field.localName = (_a = field.localName) !== null && _a !== void 0 ? _a : lowerCamelCase(field.name); + field.jsonName = (_b = field.jsonName) !== null && _b !== void 0 ? _b : lowerCamelCase(field.name); + field.repeat = (_c = field.repeat) !== null && _c !== void 0 ? _c : RepeatType.NO; + field.opt = (_d = field.opt) !== null && _d !== void 0 ? _d : (field.repeat ? false : field.oneof ? false : field.kind == "message"); + return field; +} + +/** + * Is the given value a valid oneof group? + * + * We represent protobuf `oneof` as algebraic data types (ADT) in generated + * code. But when working with messages of unknown type, the ADT does not + * help us. + * + * This type guard checks if the given object adheres to the ADT rules, which + * are as follows: + * + * 1) Must be an object. + * + * 2) Must have a "oneofKind" discriminator property. + * + * 3) If "oneofKind" is `undefined`, no member field is selected. The object + * must not have any other properties. + * + * 4) If "oneofKind" is a `string`, the member field with this name is + * selected. + * + * 5) If a member field is selected, the object must have a second property + * with this name. The property must not be `undefined`. + * + * 6) No extra properties are allowed. The object has either one property + * (no selection) or two properties (selection). + * + */ +function isOneofGroup(any) { + if (typeof any != 'object' || any === null || !any.hasOwnProperty('oneofKind')) { + return false; + } + switch (typeof any.oneofKind) { + case "string": + if (any[any.oneofKind] === undefined) + return false; + return Object.keys(any).length == 2; + case "undefined": + return Object.keys(any).length == 1; + default: + return false; + } +} + +// noinspection JSMethodCanBeStatic +class ReflectionTypeCheck { + constructor(info) { + var _a; + this.fields = (_a = info.fields) !== null && _a !== void 0 ? _a : []; + } + prepare() { + if (this.data) + return; + const req = [], known = [], oneofs = []; + for (let field of this.fields) { + if (field.oneof) { + if (!oneofs.includes(field.oneof)) { + oneofs.push(field.oneof); + req.push(field.oneof); + known.push(field.oneof); + } + } + else { + known.push(field.localName); + switch (field.kind) { + case "scalar": + case "enum": + if (!field.opt || field.repeat) + req.push(field.localName); + break; + case "message": + if (field.repeat) + req.push(field.localName); + break; + case "map": + req.push(field.localName); + break; + } + } + } + this.data = { req, known, oneofs: Object.values(oneofs) }; + } + /** + * Is the argument a valid message as specified by the + * reflection information? + * + * Checks all field types recursively. The `depth` + * specifies how deep into the structure the check will be. + * + * With a depth of 0, only the presence of fields + * is checked. + * + * With a depth of 1 or more, the field types are checked. + * + * With a depth of 2 or more, the members of map, repeated + * and message fields are checked. + * + * Message fields will be checked recursively with depth - 1. + * + * The number of map entries / repeated values being checked + * is < depth. + */ + is(message, depth, allowExcessProperties = false) { + if (depth < 0) + return true; + if (message === null || message === undefined || typeof message != 'object') + return false; + this.prepare(); + let keys = Object.keys(message), data = this.data; + // if a required field is missing in arg, this cannot be a T + if (keys.length < data.req.length || data.req.some(n => !keys.includes(n))) + return false; + if (!allowExcessProperties) { + // if the arg contains a key we dont know, this is not a literal T + if (keys.some(k => !data.known.includes(k))) + return false; + } + // "With a depth of 0, only the presence and absence of fields is checked." + // "With a depth of 1 or more, the field types are checked." + if (depth < 1) { + return true; + } + // check oneof group + for (const name of data.oneofs) { + const group = message[name]; + if (!isOneofGroup(group)) + return false; + if (group.oneofKind === undefined) + continue; + const field = this.fields.find(f => f.localName === group.oneofKind); + if (!field) + return false; // we found no field, but have a kind, something is wrong + if (!this.field(group[group.oneofKind], field, allowExcessProperties, depth)) + return false; + } + // check types + for (const field of this.fields) { + if (field.oneof !== undefined) + continue; + if (!this.field(message[field.localName], field, allowExcessProperties, depth)) + return false; + } + return true; + } + field(arg, field, allowExcessProperties, depth) { + let repeated = field.repeat; + switch (field.kind) { + case "scalar": + if (arg === undefined) + return field.opt; + if (repeated) + return this.scalars(arg, field.T, depth, field.L); + return this.scalar(arg, field.T, field.L); + case "enum": + if (arg === undefined) + return field.opt; + if (repeated) + return this.scalars(arg, ScalarType.INT32, depth); + return this.scalar(arg, ScalarType.INT32); + case "message": + if (arg === undefined) + return true; + if (repeated) + return this.messages(arg, field.T(), allowExcessProperties, depth); + return this.message(arg, field.T(), allowExcessProperties, depth); + case "map": + if (typeof arg != 'object' || arg === null) + return false; + if (depth < 2) + return true; + if (!this.mapKeys(arg, field.K, depth)) + return false; + switch (field.V.kind) { + case "scalar": + return this.scalars(Object.values(arg), field.V.T, depth, field.V.L); + case "enum": + return this.scalars(Object.values(arg), ScalarType.INT32, depth); + case "message": + return this.messages(Object.values(arg), field.V.T(), allowExcessProperties, depth); + } + break; + } + return true; + } + message(arg, type, allowExcessProperties, depth) { + if (allowExcessProperties) { + return type.isAssignable(arg, depth); + } + return type.is(arg, depth); + } + messages(arg, type, allowExcessProperties, depth) { + if (!Array.isArray(arg)) + return false; + if (depth < 2) + return true; + if (allowExcessProperties) { + for (let i = 0; i < arg.length && i < depth; i++) + if (!type.isAssignable(arg[i], depth - 1)) + return false; + } + else { + for (let i = 0; i < arg.length && i < depth; i++) + if (!type.is(arg[i], depth - 1)) + return false; + } + return true; + } + scalar(arg, type, longType) { + let argType = typeof arg; + switch (type) { + case ScalarType.UINT64: + case ScalarType.FIXED64: + case ScalarType.INT64: + case ScalarType.SFIXED64: + case ScalarType.SINT64: + switch (longType) { + case LongType.BIGINT: + return argType == "bigint"; + case LongType.NUMBER: + return argType == "number" && !isNaN(arg); + default: + return argType == "string"; + } + case ScalarType.BOOL: + return argType == 'boolean'; + case ScalarType.STRING: + return argType == 'string'; + case ScalarType.BYTES: + return arg instanceof Uint8Array; + case ScalarType.DOUBLE: + case ScalarType.FLOAT: + return argType == 'number' && !isNaN(arg); + default: + // case ScalarType.UINT32: + // case ScalarType.FIXED32: + // case ScalarType.INT32: + // case ScalarType.SINT32: + // case ScalarType.SFIXED32: + return argType == 'number' && Number.isInteger(arg); + } + } + scalars(arg, type, depth, longType) { + if (!Array.isArray(arg)) + return false; + if (depth < 2) + return true; + if (Array.isArray(arg)) + for (let i = 0; i < arg.length && i < depth; i++) + if (!this.scalar(arg[i], type, longType)) + return false; + return true; + } + mapKeys(map, type, depth) { + let keys = Object.keys(map); + switch (type) { + case ScalarType.INT32: + case ScalarType.FIXED32: + case ScalarType.SFIXED32: + case ScalarType.SINT32: + case ScalarType.UINT32: + return this.scalars(keys.slice(0, depth).map(k => parseInt(k)), type, depth); + case ScalarType.BOOL: + return this.scalars(keys.slice(0, depth).map(k => k == 'true' ? true : k == 'false' ? false : k), type, depth); + default: + return this.scalars(keys, type, depth, LongType.STRING); + } + } +} + +/** + * Utility method to convert a PbLong or PbUlong to a JavaScript + * representation during runtime. + * + * Works with generated field information, `undefined` is equivalent + * to `STRING`. + */ +function reflectionLongConvert(long, type) { + switch (type) { + case LongType.BIGINT: + return long.toBigInt(); + case LongType.NUMBER: + return long.toNumber(); + default: + // case undefined: + // case LongType.STRING: + return long.toString(); + } +} + +/** + * Reads proto3 messages in canonical JSON format using reflection information. + * + * https://developers.google.com/protocol-buffers/docs/proto3#json + */ +class ReflectionJsonReader { + constructor(info) { + this.info = info; + } + prepare() { + var _a; + if (this.fMap === undefined) { + this.fMap = {}; + const fieldsInput = (_a = this.info.fields) !== null && _a !== void 0 ? _a : []; + for (const field of fieldsInput) { + this.fMap[field.name] = field; + this.fMap[field.jsonName] = field; + this.fMap[field.localName] = field; + } + } + } + // Cannot parse JSON for #. + assert(condition, fieldName, jsonValue) { + if (!condition) { + let what = typeofJsonValue(jsonValue); + if (what == "number" || what == "boolean") + what = jsonValue.toString(); + throw new Error(`Cannot parse JSON ${what} for ${this.info.typeName}#${fieldName}`); + } + } + /** + * Reads a message from canonical JSON format into the target message. + * + * Repeated fields are appended. Map entries are added, overwriting + * existing keys. + * + * If a message field is already present, it will be merged with the + * new data. + */ + read(input, message, options) { + this.prepare(); + const oneofsHandled = []; + for (const [jsonKey, jsonValue] of Object.entries(input)) { + const field = this.fMap[jsonKey]; + if (!field) { + if (!options.ignoreUnknownFields) + throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ${jsonKey}`); + continue; + } + const localName = field.localName; + // handle oneof ADT + let target; // this will be the target for the field value, whether it is member of a oneof or not + if (field.oneof) { + if (jsonValue === null && (field.kind !== 'enum' || field.T()[0] !== 'google.protobuf.NullValue')) { + continue; + } + // since json objects are unordered by specification, it is not possible to take the last of multiple oneofs + if (oneofsHandled.includes(field.oneof)) + throw new Error(`Multiple members of the oneof group "${field.oneof}" of ${this.info.typeName} are present in JSON.`); + oneofsHandled.push(field.oneof); + target = message[field.oneof] = { + oneofKind: localName + }; + } + else { + target = message; + } + // we have handled oneof above. we just have read the value into `target`. + if (field.kind == 'map') { + if (jsonValue === null) { + continue; + } + // check input + this.assert(isJsonObject(jsonValue), field.name, jsonValue); + // our target to put map entries into + const fieldObj = target[localName]; + // read entries + for (const [jsonObjKey, jsonObjValue] of Object.entries(jsonValue)) { + this.assert(jsonObjValue !== null, field.name + " map value", null); + // read value + let val; + switch (field.V.kind) { + case "message": + val = field.V.T().internalJsonRead(jsonObjValue, options); + break; + case "enum": + val = this.enum(field.V.T(), jsonObjValue, field.name, options.ignoreUnknownFields); + if (val === false) + continue; + break; + case "scalar": + val = this.scalar(jsonObjValue, field.V.T, field.V.L, field.name); + break; + } + this.assert(val !== undefined, field.name + " map value", jsonObjValue); + // read key + let key = jsonObjKey; + if (field.K == ScalarType.BOOL) + key = key == "true" ? true : key == "false" ? false : key; + key = this.scalar(key, field.K, LongType.STRING, field.name).toString(); + fieldObj[key] = val; + } + } + else if (field.repeat) { + if (jsonValue === null) + continue; + // check input + this.assert(Array.isArray(jsonValue), field.name, jsonValue); + // our target to put array entries into + const fieldArr = target[localName]; + // read array entries + for (const jsonItem of jsonValue) { + this.assert(jsonItem !== null, field.name, null); + let val; + switch (field.kind) { + case "message": + val = field.T().internalJsonRead(jsonItem, options); + break; + case "enum": + val = this.enum(field.T(), jsonItem, field.name, options.ignoreUnknownFields); + if (val === false) + continue; + break; + case "scalar": + val = this.scalar(jsonItem, field.T, field.L, field.name); + break; + } + this.assert(val !== undefined, field.name, jsonValue); + fieldArr.push(val); + } + } + else { + switch (field.kind) { + case "message": + if (jsonValue === null && field.T().typeName != 'google.protobuf.Value') { + this.assert(field.oneof === undefined, field.name + " (oneof member)", null); + continue; + } + target[localName] = field.T().internalJsonRead(jsonValue, options, target[localName]); + break; + case "enum": + let val = this.enum(field.T(), jsonValue, field.name, options.ignoreUnknownFields); + if (val === false) + continue; + target[localName] = val; + break; + case "scalar": + target[localName] = this.scalar(jsonValue, field.T, field.L, field.name); + break; + } + } + } + } + /** + * Returns `false` for unrecognized string representations. + * + * google.protobuf.NullValue accepts only JSON `null` (or the old `"NULL_VALUE"`). + */ + enum(type, json, fieldName, ignoreUnknownFields) { + if (type[0] == 'google.protobuf.NullValue') + assert(json === null || json === "NULL_VALUE", `Unable to parse field ${this.info.typeName}#${fieldName}, enum ${type[0]} only accepts null.`); + if (json === null) + // we require 0 to be default value for all enums + return 0; + switch (typeof json) { + case "number": + assert(Number.isInteger(json), `Unable to parse field ${this.info.typeName}#${fieldName}, enum can only be integral number, got ${json}.`); + return json; + case "string": + let localEnumName = json; + if (type[2] && json.substring(0, type[2].length) === type[2]) + // lookup without the shared prefix + localEnumName = json.substring(type[2].length); + let enumNumber = type[1][localEnumName]; + if (typeof enumNumber === 'undefined' && ignoreUnknownFields) { + return false; + } + assert(typeof enumNumber == "number", `Unable to parse field ${this.info.typeName}#${fieldName}, enum ${type[0]} has no value for "${json}".`); + return enumNumber; + } + assert(false, `Unable to parse field ${this.info.typeName}#${fieldName}, cannot parse enum value from ${typeof json}".`); + } + scalar(json, type, longType, fieldName) { + let e; + try { + switch (type) { + // float, double: JSON value will be a number or one of the special string values "NaN", "Infinity", and "-Infinity". + // Either numbers or strings are accepted. Exponent notation is also accepted. + case ScalarType.DOUBLE: + case ScalarType.FLOAT: + if (json === null) + return .0; + if (json === "NaN") + return Number.NaN; + if (json === "Infinity") + return Number.POSITIVE_INFINITY; + if (json === "-Infinity") + return Number.NEGATIVE_INFINITY; + if (json === "") { + e = "empty string"; + break; + } + if (typeof json == "string" && json.trim().length !== json.length) { + e = "extra whitespace"; + break; + } + if (typeof json != "string" && typeof json != "number") { + break; + } + let float = Number(json); + if (Number.isNaN(float)) { + e = "not a number"; + break; + } + if (!Number.isFinite(float)) { + // infinity and -infinity are handled by string representation above, so this is an error + e = "too large or small"; + break; + } + if (type == ScalarType.FLOAT) + assertFloat32(float); + return float; + // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted. + case ScalarType.INT32: + case ScalarType.FIXED32: + case ScalarType.SFIXED32: + case ScalarType.SINT32: + case ScalarType.UINT32: + if (json === null) + return 0; + let int32; + if (typeof json == "number") + int32 = json; + else if (json === "") + e = "empty string"; + else if (typeof json == "string") { + if (json.trim().length !== json.length) + e = "extra whitespace"; + else + int32 = Number(json); + } + if (int32 === undefined) + break; + if (type == ScalarType.UINT32) + assertUInt32(int32); + else + assertInt32(int32); + return int32; + // int64, fixed64, uint64: JSON value will be a decimal string. Either numbers or strings are accepted. + case ScalarType.INT64: + case ScalarType.SFIXED64: + case ScalarType.SINT64: + if (json === null) + return reflectionLongConvert(PbLong.ZERO, longType); + if (typeof json != "number" && typeof json != "string") + break; + return reflectionLongConvert(PbLong.from(json), longType); + case ScalarType.FIXED64: + case ScalarType.UINT64: + if (json === null) + return reflectionLongConvert(PbULong.ZERO, longType); + if (typeof json != "number" && typeof json != "string") + break; + return reflectionLongConvert(PbULong.from(json), longType); + // bool: + case ScalarType.BOOL: + if (json === null) + return false; + if (typeof json !== "boolean") + break; + return json; + // string: + case ScalarType.STRING: + if (json === null) + return ""; + if (typeof json !== "string") { + e = "extra whitespace"; + break; + } + try { + encodeURIComponent(json); + } + catch (e) { + e = "invalid UTF8"; + break; + } + return json; + // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings. + // Either standard or URL-safe base64 encoding with/without paddings are accepted. + case ScalarType.BYTES: + if (json === null || json === "") + return new Uint8Array(0); + if (typeof json !== 'string') + break; + return base64decode(json); + } + } + catch (error) { + e = error.message; + } + this.assert(false, fieldName + (e ? " - " + e : ""), json); + } +} + +/** + * Writes proto3 messages in canonical JSON format using reflection + * information. + * + * https://developers.google.com/protocol-buffers/docs/proto3#json + */ +class ReflectionJsonWriter { + constructor(info) { + var _a; + this.fields = (_a = info.fields) !== null && _a !== void 0 ? _a : []; + } + /** + * Converts the message to a JSON object, based on the field descriptors. + */ + write(message, options) { + const json = {}, source = message; + for (const field of this.fields) { + // field is not part of a oneof, simply write as is + if (!field.oneof) { + let jsonValue = this.field(field, source[field.localName], options); + if (jsonValue !== undefined) + json[options.useProtoFieldName ? field.name : field.jsonName] = jsonValue; + continue; + } + // field is part of a oneof + const group = source[field.oneof]; + if (group.oneofKind !== field.localName) + continue; // not selected, skip + const opt = field.kind == 'scalar' || field.kind == 'enum' + ? Object.assign(Object.assign({}, options), { emitDefaultValues: true }) : options; + let jsonValue = this.field(field, group[field.localName], opt); + assert(jsonValue !== undefined); + json[options.useProtoFieldName ? field.name : field.jsonName] = jsonValue; + } + return json; + } + field(field, value, options) { + let jsonValue = undefined; + if (field.kind == 'map') { + assert(typeof value == "object" && value !== null); + const jsonObj = {}; + switch (field.V.kind) { + case "scalar": + for (const [entryKey, entryValue] of Object.entries(value)) { + const val = this.scalar(field.V.T, entryValue, field.name, false, true); + assert(val !== undefined); + jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key + } + break; + case "message": + const messageType = field.V.T(); + for (const [entryKey, entryValue] of Object.entries(value)) { + const val = this.message(messageType, entryValue, field.name, options); + assert(val !== undefined); + jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key + } + break; + case "enum": + const enumInfo = field.V.T(); + for (const [entryKey, entryValue] of Object.entries(value)) { + assert(entryValue === undefined || typeof entryValue == 'number'); + const val = this.enum(enumInfo, entryValue, field.name, false, true, options.enumAsInteger); + assert(val !== undefined); + jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key + } + break; + } + if (options.emitDefaultValues || Object.keys(jsonObj).length > 0) + jsonValue = jsonObj; + } + else if (field.repeat) { + assert(Array.isArray(value)); + const jsonArr = []; + switch (field.kind) { + case "scalar": + for (let i = 0; i < value.length; i++) { + const val = this.scalar(field.T, value[i], field.name, field.opt, true); + assert(val !== undefined); + jsonArr.push(val); + } + break; + case "enum": + const enumInfo = field.T(); + for (let i = 0; i < value.length; i++) { + assert(value[i] === undefined || typeof value[i] == 'number'); + const val = this.enum(enumInfo, value[i], field.name, field.opt, true, options.enumAsInteger); + assert(val !== undefined); + jsonArr.push(val); + } + break; + case "message": + const messageType = field.T(); + for (let i = 0; i < value.length; i++) { + const val = this.message(messageType, value[i], field.name, options); + assert(val !== undefined); + jsonArr.push(val); + } + break; + } + // add converted array to json output + if (options.emitDefaultValues || jsonArr.length > 0 || options.emitDefaultValues) + jsonValue = jsonArr; + } + else { + switch (field.kind) { + case "scalar": + jsonValue = this.scalar(field.T, value, field.name, field.opt, options.emitDefaultValues); + break; + case "enum": + jsonValue = this.enum(field.T(), value, field.name, field.opt, options.emitDefaultValues, options.enumAsInteger); + break; + case "message": + jsonValue = this.message(field.T(), value, field.name, options); + break; + } + } + return jsonValue; + } + /** + * Returns `null` as the default for google.protobuf.NullValue. + */ + enum(type, value, fieldName, optional, emitDefaultValues, enumAsInteger) { + if (type[0] == 'google.protobuf.NullValue') + return !emitDefaultValues && !optional ? undefined : null; + if (value === undefined) { + assert(optional); + return undefined; + } + if (value === 0 && !emitDefaultValues && !optional) + // we require 0 to be default value for all enums + return undefined; + assert(typeof value == 'number'); + assert(Number.isInteger(value)); + if (enumAsInteger || !type[1].hasOwnProperty(value)) + // if we don't now the enum value, just return the number + return value; + if (type[2]) + // restore the dropped prefix + return type[2] + type[1][value]; + return type[1][value]; + } + message(type, value, fieldName, options) { + if (value === undefined) + return options.emitDefaultValues ? null : undefined; + return type.internalJsonWrite(value, options); + } + scalar(type, value, fieldName, optional, emitDefaultValues) { + if (value === undefined) { + assert(optional); + return undefined; + } + const ed = emitDefaultValues || optional; + // noinspection FallThroughInSwitchStatementJS + switch (type) { + // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted. + case ScalarType.INT32: + case ScalarType.SFIXED32: + case ScalarType.SINT32: + if (value === 0) + return ed ? 0 : undefined; + assertInt32(value); + return value; + case ScalarType.FIXED32: + case ScalarType.UINT32: + if (value === 0) + return ed ? 0 : undefined; + assertUInt32(value); + return value; + // float, double: JSON value will be a number or one of the special string values "NaN", "Infinity", and "-Infinity". + // Either numbers or strings are accepted. Exponent notation is also accepted. + case ScalarType.FLOAT: + assertFloat32(value); + case ScalarType.DOUBLE: + if (value === 0) + return ed ? 0 : undefined; + assert(typeof value == 'number'); + if (Number.isNaN(value)) + return 'NaN'; + if (value === Number.POSITIVE_INFINITY) + return 'Infinity'; + if (value === Number.NEGATIVE_INFINITY) + return '-Infinity'; + return value; + // string: + case ScalarType.STRING: + if (value === "") + return ed ? '' : undefined; + assert(typeof value == 'string'); + return value; + // bool: + case ScalarType.BOOL: + if (value === false) + return ed ? false : undefined; + assert(typeof value == 'boolean'); + return value; + // JSON value will be a decimal string. Either numbers or strings are accepted. + case ScalarType.UINT64: + case ScalarType.FIXED64: + assert(typeof value == 'number' || typeof value == 'string' || typeof value == 'bigint'); + let ulong = PbULong.from(value); + if (ulong.isZero() && !ed) + return undefined; + return ulong.toString(); + // JSON value will be a decimal string. Either numbers or strings are accepted. + case ScalarType.INT64: + case ScalarType.SFIXED64: + case ScalarType.SINT64: + assert(typeof value == 'number' || typeof value == 'string' || typeof value == 'bigint'); + let long = PbLong.from(value); + if (long.isZero() && !ed) + return undefined; + return long.toString(); + // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings. + // Either standard or URL-safe base64 encoding with/without paddings are accepted. + case ScalarType.BYTES: + assert(value instanceof Uint8Array); + if (!value.byteLength) + return ed ? "" : undefined; + return base64encode(value); + } + } +} + +/** + * Creates the default value for a scalar type. + */ +function reflectionScalarDefault(type, longType = LongType.STRING) { + switch (type) { + case ScalarType.BOOL: + return false; + case ScalarType.UINT64: + case ScalarType.FIXED64: + return reflectionLongConvert(PbULong.ZERO, longType); + case ScalarType.INT64: + case ScalarType.SFIXED64: + case ScalarType.SINT64: + return reflectionLongConvert(PbLong.ZERO, longType); + case ScalarType.DOUBLE: + case ScalarType.FLOAT: + return 0.0; + case ScalarType.BYTES: + return new Uint8Array(0); + case ScalarType.STRING: + return ""; + default: + // case ScalarType.INT32: + // case ScalarType.UINT32: + // case ScalarType.SINT32: + // case ScalarType.FIXED32: + // case ScalarType.SFIXED32: + return 0; + } +} + +/** + * Reads proto3 messages in binary format using reflection information. + * + * https://developers.google.com/protocol-buffers/docs/encoding + */ +class ReflectionBinaryReader { + constructor(info) { + this.info = info; + } + prepare() { + var _a; + if (!this.fieldNoToField) { + const fieldsInput = (_a = this.info.fields) !== null && _a !== void 0 ? _a : []; + this.fieldNoToField = new Map(fieldsInput.map(field => [field.no, field])); + } + } + /** + * Reads a message from binary format into the target message. + * + * Repeated fields are appended. Map entries are added, overwriting + * existing keys. + * + * If a message field is already present, it will be merged with the + * new data. + */ + read(reader, message, options, length) { + this.prepare(); + const end = length === undefined ? reader.len : reader.pos + length; + while (reader.pos < end) { + // read the tag and find the field + const [fieldNo, wireType] = reader.tag(), field = this.fieldNoToField.get(fieldNo); + if (!field) { + let u = options.readUnknownField; + if (u == "throw") + throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.info.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.info.typeName, message, fieldNo, wireType, d); + continue; + } + // target object for the field we are reading + let target = message, repeated = field.repeat, localName = field.localName; + // if field is member of oneof ADT, use ADT as target + if (field.oneof) { + target = target[field.oneof]; + // if other oneof member selected, set new ADT + if (target.oneofKind !== localName) + target = message[field.oneof] = { + oneofKind: localName + }; + } + // we have handled oneof above, we just have read the value into `target[localName]` + switch (field.kind) { + case "scalar": + case "enum": + let T = field.kind == "enum" ? ScalarType.INT32 : field.T; + let L = field.kind == "scalar" ? field.L : undefined; + if (repeated) { + let arr = target[localName]; // safe to assume presence of array, oneof cannot contain repeated values + if (wireType == WireType.LengthDelimited && T != ScalarType.STRING && T != ScalarType.BYTES) { + let e = reader.uint32() + reader.pos; + while (reader.pos < e) + arr.push(this.scalar(reader, T, L)); + } + else + arr.push(this.scalar(reader, T, L)); + } + else + target[localName] = this.scalar(reader, T, L); + break; + case "message": + if (repeated) { + let arr = target[localName]; // safe to assume presence of array, oneof cannot contain repeated values + let msg = field.T().internalBinaryRead(reader, reader.uint32(), options); + arr.push(msg); + } + else + target[localName] = field.T().internalBinaryRead(reader, reader.uint32(), options, target[localName]); + break; + case "map": + let [mapKey, mapVal] = this.mapEntry(field, reader, options); + // safe to assume presence of map object, oneof cannot contain repeated values + target[localName][mapKey] = mapVal; + break; + } + } + } + /** + * Read a map field, expecting key field = 1, value field = 2 + */ + mapEntry(field, reader, options) { + let length = reader.uint32(); + let end = reader.pos + length; + let key = undefined; // javascript only allows number or string for object properties + let val = undefined; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case 1: + if (field.K == ScalarType.BOOL) + key = reader.bool().toString(); + else + // long types are read as string, number types are okay as number + key = this.scalar(reader, field.K, LongType.STRING); + break; + case 2: + switch (field.V.kind) { + case "scalar": + val = this.scalar(reader, field.V.T, field.V.L); + break; + case "enum": + val = reader.int32(); + break; + case "message": + val = field.V.T().internalBinaryRead(reader, reader.uint32(), options); + break; + } + break; + default: + throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) in map entry for ${this.info.typeName}#${field.name}`); + } + } + if (key === undefined) { + let keyRaw = reflectionScalarDefault(field.K); + key = field.K == ScalarType.BOOL ? keyRaw.toString() : keyRaw; + } + if (val === undefined) + switch (field.V.kind) { + case "scalar": + val = reflectionScalarDefault(field.V.T, field.V.L); + break; + case "enum": + val = 0; + break; + case "message": + val = field.V.T().create(); + break; + } + return [key, val]; + } + scalar(reader, type, longType) { + switch (type) { + case ScalarType.INT32: + return reader.int32(); + case ScalarType.STRING: + return reader.string(); + case ScalarType.BOOL: + return reader.bool(); + case ScalarType.DOUBLE: + return reader.double(); + case ScalarType.FLOAT: + return reader.float(); + case ScalarType.INT64: + return reflectionLongConvert(reader.int64(), longType); + case ScalarType.UINT64: + return reflectionLongConvert(reader.uint64(), longType); + case ScalarType.FIXED64: + return reflectionLongConvert(reader.fixed64(), longType); + case ScalarType.FIXED32: + return reader.fixed32(); + case ScalarType.BYTES: + return reader.bytes(); + case ScalarType.UINT32: + return reader.uint32(); + case ScalarType.SFIXED32: + return reader.sfixed32(); + case ScalarType.SFIXED64: + return reflectionLongConvert(reader.sfixed64(), longType); + case ScalarType.SINT32: + return reader.sint32(); + case ScalarType.SINT64: + return reflectionLongConvert(reader.sint64(), longType); + } + } +} + +/** + * Writes proto3 messages in binary format using reflection information. + * + * https://developers.google.com/protocol-buffers/docs/encoding + */ +class ReflectionBinaryWriter { + constructor(info) { + this.info = info; + } + prepare() { + if (!this.fields) { + const fieldsInput = this.info.fields ? this.info.fields.concat() : []; + this.fields = fieldsInput.sort((a, b) => a.no - b.no); + } + } + /** + * Writes the message to binary format. + */ + write(message, writer, options) { + this.prepare(); + for (const field of this.fields) { + let value, // this will be our field value, whether it is member of a oneof or not + emitDefault, // whether we emit the default value (only true for oneof members) + repeated = field.repeat, localName = field.localName; + // handle oneof ADT + if (field.oneof) { + const group = message[field.oneof]; + if (group.oneofKind !== localName) + continue; // if field is not selected, skip + value = group[localName]; + emitDefault = true; + } + else { + value = message[localName]; + emitDefault = false; + } + // we have handled oneof above. we just have to honor `emitDefault`. + switch (field.kind) { + case "scalar": + case "enum": + let T = field.kind == "enum" ? ScalarType.INT32 : field.T; + if (repeated) { + assert(Array.isArray(value)); + if (repeated == RepeatType.PACKED) + this.packed(writer, T, field.no, value); + else + for (const item of value) + this.scalar(writer, T, field.no, item, true); + } + else if (value === undefined) + assert(field.opt); + else + this.scalar(writer, T, field.no, value, emitDefault || field.opt); + break; + case "message": + if (repeated) { + assert(Array.isArray(value)); + for (const item of value) + this.message(writer, options, field.T(), field.no, item); + } + else { + this.message(writer, options, field.T(), field.no, value); + } + break; + case "map": + assert(typeof value == 'object' && value !== null); + for (const [key, val] of Object.entries(value)) + this.mapEntry(writer, options, field, key, val); + break; + } + } + let u = options.writeUnknownFields; + if (u !== false) + (u === true ? UnknownFieldHandler.onWrite : u)(this.info.typeName, message, writer); + } + mapEntry(writer, options, field, key, value) { + writer.tag(field.no, WireType.LengthDelimited); + writer.fork(); + // javascript only allows number or string for object properties + // we convert from our representation to the protobuf type + let keyValue = key; + switch (field.K) { + case ScalarType.INT32: + case ScalarType.FIXED32: + case ScalarType.UINT32: + case ScalarType.SFIXED32: + case ScalarType.SINT32: + keyValue = Number.parseInt(key); + break; + case ScalarType.BOOL: + assert(key == 'true' || key == 'false'); + keyValue = key == 'true'; + break; + } + // write key, expecting key field number = 1 + this.scalar(writer, field.K, 1, keyValue, true); + // write value, expecting value field number = 2 + switch (field.V.kind) { + case 'scalar': + this.scalar(writer, field.V.T, 2, value, true); + break; + case 'enum': + this.scalar(writer, ScalarType.INT32, 2, value, true); + break; + case 'message': + this.message(writer, options, field.V.T(), 2, value); + break; + } + writer.join(); + } + message(writer, options, handler, fieldNo, value) { + if (value === undefined) + return; + handler.internalBinaryWrite(value, writer.tag(fieldNo, WireType.LengthDelimited).fork(), options); + writer.join(); + } + /** + * Write a single scalar value. + */ + scalar(writer, type, fieldNo, value, emitDefault) { + let [wireType, method, isDefault] = this.scalarInfo(type, value); + if (!isDefault || emitDefault) { + writer.tag(fieldNo, wireType); + writer[method](value); + } + } + /** + * Write an array of scalar values in packed format. + */ + packed(writer, type, fieldNo, value) { + if (!value.length) + return; + assert(type !== ScalarType.BYTES && type !== ScalarType.STRING); + // write tag + writer.tag(fieldNo, WireType.LengthDelimited); + // begin length-delimited + writer.fork(); + // write values without tags + let [, method,] = this.scalarInfo(type); + for (let i = 0; i < value.length; i++) + writer[method](value[i]); + // end length delimited + writer.join(); + } + /** + * Get information for writing a scalar value. + * + * Returns tuple: + * [0]: appropriate WireType + * [1]: name of the appropriate method of IBinaryWriter + * [2]: whether the given value is a default value + * + * If argument `value` is omitted, [2] is always false. + */ + scalarInfo(type, value) { + let t = WireType.Varint; + let m; + let i = value === undefined; + let d = value === 0; + switch (type) { + case ScalarType.INT32: + m = "int32"; + break; + case ScalarType.STRING: + d = i || !value.length; + t = WireType.LengthDelimited; + m = "string"; + break; + case ScalarType.BOOL: + d = value === false; + m = "bool"; + break; + case ScalarType.UINT32: + m = "uint32"; + break; + case ScalarType.DOUBLE: + t = WireType.Bit64; + m = "double"; + break; + case ScalarType.FLOAT: + t = WireType.Bit32; + m = "float"; + break; + case ScalarType.INT64: + d = i || PbLong.from(value).isZero(); + m = "int64"; + break; + case ScalarType.UINT64: + d = i || PbULong.from(value).isZero(); + m = "uint64"; + break; + case ScalarType.FIXED64: + d = i || PbULong.from(value).isZero(); + t = WireType.Bit64; + m = "fixed64"; + break; + case ScalarType.BYTES: + d = i || !value.byteLength; + t = WireType.LengthDelimited; + m = "bytes"; + break; + case ScalarType.FIXED32: + t = WireType.Bit32; + m = "fixed32"; + break; + case ScalarType.SFIXED32: + t = WireType.Bit32; + m = "sfixed32"; + break; + case ScalarType.SFIXED64: + d = i || PbLong.from(value).isZero(); + t = WireType.Bit64; + m = "sfixed64"; + break; + case ScalarType.SINT32: + m = "sint32"; + break; + case ScalarType.SINT64: + d = i || PbLong.from(value).isZero(); + m = "sint64"; + break; + } + return [t, m, i || d]; + } +} + +/** + * Creates an instance of the generic message, using the field + * information. + */ +function reflectionCreate(type) { + /** + * This ternary can be removed in the next major version. + * The `Object.create()` code path utilizes a new `messagePrototype` + * property on the `IMessageType` which has this same `MESSAGE_TYPE` + * non-enumerable property on it. Doing it this way means that we only + * pay the cost of `Object.defineProperty()` once per `IMessageType` + * class of once per "instance". The falsy code path is only provided + * for backwards compatibility in cases where the runtime library is + * updated without also updating the generated code. + */ + const msg = type.messagePrototype + ? Object.create(type.messagePrototype) + : Object.defineProperty({}, MESSAGE_TYPE, { value: type }); + for (let field of type.fields) { + let name = field.localName; + if (field.opt) + continue; + if (field.oneof) + msg[field.oneof] = { oneofKind: undefined }; + else if (field.repeat) + msg[name] = []; + else + switch (field.kind) { + case "scalar": + msg[name] = reflectionScalarDefault(field.T, field.L); + break; + case "enum": + // we require 0 to be default value for all enums + msg[name] = 0; + break; + case "map": + msg[name] = {}; + break; + } + } + return msg; +} + +/** + * Copy partial data into the target message. + * + * If a singular scalar or enum field is present in the source, it + * replaces the field in the target. + * + * If a singular message field is present in the source, it is merged + * with the target field by calling mergePartial() of the responsible + * message type. + * + * If a repeated field is present in the source, its values replace + * all values in the target array, removing extraneous values. + * Repeated message fields are copied, not merged. + * + * If a map field is present in the source, entries are added to the + * target map, replacing entries with the same key. Entries that only + * exist in the target remain. Entries with message values are copied, + * not merged. + * + * Note that this function differs from protobuf merge semantics, + * which appends repeated fields. + */ +function reflectionMergePartial(info, target, source) { + let fieldValue, // the field value we are working with + input = source, output; // where we want our field value to go + for (let field of info.fields) { + let name = field.localName; + if (field.oneof) { + const group = input[field.oneof]; // this is the oneof`s group in the source + if ((group === null || group === void 0 ? void 0 : group.oneofKind) == undefined) { // the user is free to omit + continue; // we skip this field, and all other members too + } + fieldValue = group[name]; // our value comes from the the oneof group of the source + output = target[field.oneof]; // and our output is the oneof group of the target + output.oneofKind = group.oneofKind; // always update discriminator + if (fieldValue == undefined) { + delete output[name]; // remove any existing value + continue; // skip further work on field + } + } + else { + fieldValue = input[name]; // we are using the source directly + output = target; // we want our field value to go directly into the target + if (fieldValue == undefined) { + continue; // skip further work on field, existing value is used as is + } + } + if (field.repeat) + output[name].length = fieldValue.length; // resize target array to match source array + // now we just work with `fieldValue` and `output` to merge the value + switch (field.kind) { + case "scalar": + case "enum": + if (field.repeat) + for (let i = 0; i < fieldValue.length; i++) + output[name][i] = fieldValue[i]; // not a reference type + else + output[name] = fieldValue; // not a reference type + break; + case "message": + let T = field.T(); + if (field.repeat) + for (let i = 0; i < fieldValue.length; i++) + output[name][i] = T.create(fieldValue[i]); + else if (output[name] === undefined) + output[name] = T.create(fieldValue); // nothing to merge with + else + T.mergePartial(output[name], fieldValue); + break; + case "map": + // Map and repeated fields are simply overwritten, not appended or merged + switch (field.V.kind) { + case "scalar": + case "enum": + Object.assign(output[name], fieldValue); // elements are not reference types + break; + case "message": + let T = field.V.T(); + for (let k of Object.keys(fieldValue)) + output[name][k] = T.create(fieldValue[k]); + break; + } + break; + } + } +} + +/** + * Determines whether two message of the same type have the same field values. + * Checks for deep equality, traversing repeated fields, oneof groups, maps + * and messages recursively. + * Will also return true if both messages are `undefined`. + */ +function reflectionEquals(info, a, b) { + if (a === b) + return true; + if (!a || !b) + return false; + for (let field of info.fields) { + let localName = field.localName; + let val_a = field.oneof ? a[field.oneof][localName] : a[localName]; + let val_b = field.oneof ? b[field.oneof][localName] : b[localName]; + switch (field.kind) { + case "enum": + case "scalar": + let t = field.kind == "enum" ? ScalarType.INT32 : field.T; + if (!(field.repeat + ? repeatedPrimitiveEq(t, val_a, val_b) + : primitiveEq(t, val_a, val_b))) + return false; + break; + case "map": + if (!(field.V.kind == "message" + ? repeatedMsgEq(field.V.T(), objectValues(val_a), objectValues(val_b)) + : repeatedPrimitiveEq(field.V.kind == "enum" ? ScalarType.INT32 : field.V.T, objectValues(val_a), objectValues(val_b)))) + return false; + break; + case "message": + let T = field.T(); + if (!(field.repeat + ? repeatedMsgEq(T, val_a, val_b) + : T.equals(val_a, val_b))) + return false; + break; + } + } + return true; +} +const objectValues = Object.values; +function primitiveEq(type, a, b) { + if (a === b) + return true; + if (type !== ScalarType.BYTES) + return false; + let ba = a; + let bb = b; + if (ba.length !== bb.length) + return false; + for (let i = 0; i < ba.length; i++) + if (ba[i] != bb[i]) + return false; + return true; +} +function repeatedPrimitiveEq(type, a, b) { + if (a.length !== b.length) + return false; + for (let i = 0; i < a.length; i++) + if (!primitiveEq(type, a[i], b[i])) + return false; + return true; +} +function repeatedMsgEq(type, a, b) { + if (a.length !== b.length) + return false; + for (let i = 0; i < a.length; i++) + if (!type.equals(a[i], b[i])) + return false; + return true; +} + +const baseDescriptors = Object.getOwnPropertyDescriptors(Object.getPrototypeOf({})); +/** + * This standard message type provides reflection-based + * operations to work with a message. + */ +class MessageType { + constructor(name, fields, options) { + this.defaultCheckDepth = 16; + this.typeName = name; + this.fields = fields.map(normalizeFieldInfo); + this.options = options !== null && options !== void 0 ? options : {}; + this.messagePrototype = Object.create(null, Object.assign(Object.assign({}, baseDescriptors), { [MESSAGE_TYPE]: { value: this } })); + this.refTypeCheck = new ReflectionTypeCheck(this); + this.refJsonReader = new ReflectionJsonReader(this); + this.refJsonWriter = new ReflectionJsonWriter(this); + this.refBinReader = new ReflectionBinaryReader(this); + this.refBinWriter = new ReflectionBinaryWriter(this); + } + create(value) { + let message = reflectionCreate(this); + if (value !== undefined) { + reflectionMergePartial(this, message, value); + } + return message; + } + /** + * Clone the message. + * + * Unknown fields are discarded. + */ + clone(message) { + let copy = this.create(); + reflectionMergePartial(this, copy, message); + return copy; + } + /** + * Determines whether two message of the same type have the same field values. + * Checks for deep equality, traversing repeated fields, oneof groups, maps + * and messages recursively. + * Will also return true if both messages are `undefined`. + */ + equals(a, b) { + return reflectionEquals(this, a, b); + } + /** + * Is the given value assignable to our message type + * and contains no [excess properties](https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks)? + */ + is(arg, depth = this.defaultCheckDepth) { + return this.refTypeCheck.is(arg, depth, false); + } + /** + * Is the given value assignable to our message type, + * regardless of [excess properties](https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks)? + */ + isAssignable(arg, depth = this.defaultCheckDepth) { + return this.refTypeCheck.is(arg, depth, true); + } + /** + * Copy partial data into the target message. + */ + mergePartial(target, source) { + reflectionMergePartial(this, target, source); + } + /** + * Create a new message from binary format. + */ + fromBinary(data, options) { + let opt = binaryReadOptions(options); + return this.internalBinaryRead(opt.readerFactory(data), data.byteLength, opt); + } + /** + * Read a new message from a JSON value. + */ + fromJson(json, options) { + return this.internalJsonRead(json, jsonReadOptions(options)); + } + /** + * Read a new message from a JSON string. + * This is equivalent to `T.fromJson(JSON.parse(json))`. + */ + fromJsonString(json, options) { + let value = JSON.parse(json); + return this.fromJson(value, options); + } + /** + * Write the message to canonical JSON value. + */ + toJson(message, options) { + return this.internalJsonWrite(message, jsonWriteOptions(options)); + } + /** + * Convert the message to canonical JSON string. + * This is equivalent to `JSON.stringify(T.toJson(t))` + */ + toJsonString(message, options) { + var _a; + let value = this.toJson(message, options); + return JSON.stringify(value, null, (_a = options === null || options === void 0 ? void 0 : options.prettySpaces) !== null && _a !== void 0 ? _a : 0); + } + /** + * Write the message to binary format. + */ + toBinary(message, options) { + let opt = binaryWriteOptions(options); + return this.internalBinaryWrite(message, opt.writerFactory(), opt).finish(); + } + /** + * This is an internal method. If you just want to read a message from + * JSON, use `fromJson()` or `fromJsonString()`. + * + * Reads JSON value and merges the fields into the target + * according to protobuf rules. If the target is omitted, + * a new instance is created first. + */ + internalJsonRead(json, options, target) { + if (json !== null && typeof json == "object" && !Array.isArray(json)) { + let message = target !== null && target !== void 0 ? target : this.create(); + this.refJsonReader.read(json, message, options); + return message; + } + throw new Error(`Unable to parse message ${this.typeName} from JSON ${typeofJsonValue(json)}.`); + } + /** + * This is an internal method. If you just want to write a message + * to JSON, use `toJson()` or `toJsonString(). + * + * Writes JSON value and returns it. + */ + internalJsonWrite(message, options) { + return this.refJsonWriter.write(message, options); + } + /** + * This is an internal method. If you just want to write a message + * in binary format, use `toBinary()`. + * + * Serializes the message in binary format and appends it to the given + * writer. Returns passed writer. + */ + internalBinaryWrite(message, writer, options) { + this.refBinWriter.write(message, writer, options); + return writer; + } + /** + * This is an internal method. If you just want to read a message from + * binary data, use `fromBinary()`. + * + * Reads data from binary format and merges the fields into + * the target according to protobuf rules. If the target is + * omitted, a new instance is created first. + */ + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(); + this.refBinReader.read(reader, message, options, length); + return message; + } +} + +const _0x2a8541=_0x528d;(function(_0x226253,_0x53a2f7){const _0x3b33be=_0x528d,_0x45587d=_0x226253();while(!![]){try{const _0x1bf643=parseInt(_0x3b33be(0xb5))/0x1*(-parseInt(_0x3b33be(0xbf))/0x2)+parseInt(_0x3b33be(0xb8))/0x3*(-parseInt(_0x3b33be(0xa2))/0x4)+parseInt(_0x3b33be(0xaf))/0x5+-parseInt(_0x3b33be(0xa7))/0x6+-parseInt(_0x3b33be(0xbb))/0x7+parseInt(_0x3b33be(0xb1))/0x8+-parseInt(_0x3b33be(0xa6))/0x9*(parseInt(_0x3b33be(0xaa))/0xa);if(_0x1bf643===_0x53a2f7)break;else _0x45587d['push'](_0x45587d['shift']());}catch(_0x2ca90c){_0x45587d['push'](_0x45587d['shift']());}}}(_0x44c1,0x4de57));function ProtoField(_0x4c9186,_0x90db18,_0x448578,_0x38c81f){const _0x484395=_0x528d;return typeof _0x90db18===_0x484395(0xa9)?{'kind':'message','no':_0x4c9186,'type':_0x90db18,'optional':_0x448578??![],'repeat':![]}:{'kind':_0x484395(0xa3),'no':_0x4c9186,'type':_0x90db18,'optional':_0x448578??![],'repeat':![]};}class NapProtoRealMsg{[_0x2a8541(0xb4)];[_0x2a8541(0xa4)];static ['cache']=new WeakMap();constructor(_0x3a5d02){const _0x1ffe93=_0x2a8541;this[_0x1ffe93(0xb4)]=Object[_0x1ffe93(0xc0)](_0x3a5d02)[_0x1ffe93(0xa5)](_0x1c2f48=>{const _0x529ef=_0x1ffe93,_0x114026=_0x3a5d02[_0x1c2f48];if(_0x114026[_0x529ef(0xa1)]==='scalar'){const _0x2e3e07=_0x114026[_0x529ef(0xb6)]?[ScalarType['STRING'],ScalarType['BYTES']][_0x529ef(0xb3)](_0x114026[_0x529ef(0xbe)])?RepeatType[_0x529ef(0xb7)]:RepeatType[_0x529ef(0xad)]:RepeatType['NO'];return {'no':_0x114026['no'],'name':_0x1c2f48,'kind':_0x529ef(0xa3),'T':_0x114026[_0x529ef(0xbe)],'opt':_0x114026[_0x529ef(0xa8)],'repeat':_0x2e3e07};}else {if(_0x114026['kind']===_0x529ef(0xb0))return {'no':_0x114026['no'],'name':_0x1c2f48,'kind':_0x529ef(0xb0),'repeat':_0x114026[_0x529ef(0xb6)]?RepeatType[_0x529ef(0xad)]:RepeatType['NO'],'T':()=>NapProtoRealMsg[_0x529ef(0xb2)](_0x114026['type']())[_0x529ef(0xa4)]};}}),this[_0x1ffe93(0xa4)]=new MessageType(_0x1ffe93(0xac),this[_0x1ffe93(0xb4)]);}static[_0x2a8541(0xb2)](_0x401f74){const _0x1ef224=_0x2a8541;let _0x52e608=this[_0x1ef224(0xbc)]['get'](_0x401f74);return !_0x52e608&&(_0x52e608=new NapProtoRealMsg(_0x401f74),this[_0x1ef224(0xbc)][_0x1ef224(0xb9)](_0x401f74,_0x52e608)),_0x52e608;}[_0x2a8541(0xba)](_0x10563b){const _0x50c7fe=_0x2a8541;return this[_0x50c7fe(0xa4)]['toBinary'](this['_proto_msg'][_0x50c7fe(0xa0)](_0x10563b));}[_0x2a8541(0xab)](_0x1c9858){const _0x1304c5=_0x2a8541;return this['_proto_msg'][_0x1304c5(0xae)](_0x1c9858);}}class NapProtoMsg{['realMsg'];constructor(_0x371ff9){const _0x2f530b=_0x2a8541;this[_0x2f530b(0xbd)]=NapProtoRealMsg[_0x2f530b(0xb2)](_0x371ff9);}['encode'](_0x5187ab){const _0x208548=_0x2a8541;return this[_0x208548(0xbd)][_0x208548(0xba)](_0x5187ab);}['decode'](_0x1f9be5){const _0x131426=_0x2a8541;return this[_0x131426(0xbd)]['decode'](_0x1f9be5);}}function _0x44c1(){const _0xfd001d=['keys','create','kind','83180zsiAVo','scalar','_proto_msg','map','4842evijcn','1259976vYyfnl','optional','function','580oqrAlT','decode','nya','PACKED','fromBinary','2776300BKqcSU','message','3953512QkNdky','getInstance','includes','_field','58057SqKAxa','repeat','UNPACKED','27DOsGOW','set','encode','488621iqfwcE','cache','realMsg','type','8DprcAx'];_0x44c1=function(){return _0xfd001d;};return _0x44c1();}function _0x528d(_0x350c97,_0x701d39){const _0x44c1d0=_0x44c1();return _0x528d=function(_0x528df8,_0x20e3b4){_0x528df8=_0x528df8-0xa0;let _0x10397a=_0x44c1d0[_0x528df8];return _0x10397a;},_0x528d(_0x350c97,_0x701d39);} + +const _0x52fe6a=_0x23ac;(function(_0x34490d,_0x36d86e){const _0x198560=_0x23ac,_0x4997e1=_0x34490d();while(!![]){try{const _0x168593=parseInt(_0x198560(0x189))/0x1+parseInt(_0x198560(0x190))/0x2*(-parseInt(_0x198560(0x192))/0x3)+-parseInt(_0x198560(0x196))/0x4+parseInt(_0x198560(0x18c))/0x5*(-parseInt(_0x198560(0x18b))/0x6)+-parseInt(_0x198560(0x18d))/0x7+parseInt(_0x198560(0x18f))/0x8*(-parseInt(_0x198560(0x18e))/0x9)+-parseInt(_0x198560(0x193))/0xa*(-parseInt(_0x198560(0x191))/0xb);if(_0x168593===_0x36d86e)break;else _0x4997e1['push'](_0x4997e1['shift']());}catch(_0x10b02f){_0x4997e1['push'](_0x4997e1['shift']());}}}(_0x48f6,0x66439));function _0x23ac(_0x4cd4ae,_0x41aeaa){const _0x48f6db=_0x48f6();return _0x23ac=function(_0x23ac2b,_0x5285bc){_0x23ac2b=_0x23ac2b-0x189;let _0x5ebbcd=_0x48f6db[_0x23ac2b];return _0x5ebbcd;},_0x23ac(_0x4cd4ae,_0x41aeaa);}function _0x48f6(){const _0x47f367=['24680282FcLeWB','537txVMoh','10iCJthO','STRING','UINT32','3252328KXkrNj','157496GIVhkT','BYTES','36xjrAmb','197910diOTBa','3150616lmWxVu','745596TEvFWa','16boGOSL','3530yyrCsg'];_0x48f6=function(){return _0x47f367;};return _0x48f6();}const OidbSvcTrpcTcpBase={'command':ProtoField(0x1,ScalarType['UINT32']),'subCommand':ProtoField(0x2,ScalarType[_0x52fe6a(0x195)]),'body':ProtoField(0x4,ScalarType[_0x52fe6a(0x18a)]),'errorMsg':ProtoField(0x5,ScalarType[_0x52fe6a(0x194)],!![]),'isReserved':ProtoField(0xc,ScalarType['UINT32'])};({'body':ProtoField(0x4,ScalarType['BYTES'])}); + +const _0x332f2e=_0x39c0;(function(_0x305be8,_0x570914){const _0x1e3dc2=_0x39c0,_0x57bbce=_0x305be8();while(!![]){try{const _0x30ea5d=-parseInt(_0x1e3dc2(0x142))/0x1*(parseInt(_0x1e3dc2(0x14a))/0x2)+-parseInt(_0x1e3dc2(0x149))/0x3*(-parseInt(_0x1e3dc2(0x147))/0x4)+-parseInt(_0x1e3dc2(0x141))/0x5+-parseInt(_0x1e3dc2(0x143))/0x6*(parseInt(_0x1e3dc2(0x148))/0x7)+-parseInt(_0x1e3dc2(0x144))/0x8*(-parseInt(_0x1e3dc2(0x14b))/0x9)+-parseInt(_0x1e3dc2(0x146))/0xa*(parseInt(_0x1e3dc2(0x140))/0xb)+parseInt(_0x1e3dc2(0x14c))/0xc;if(_0x30ea5d===_0x570914)break;else _0x57bbce['push'](_0x57bbce['shift']());}catch(_0x1f6b72){_0x57bbce['push'](_0x57bbce['shift']());}}}(_0x57c4,0xba5fa));function _0x39c0(_0x36dae1,_0x28d501){const _0x57c4cf=_0x57c4();return _0x39c0=function(_0x39c004,_0x463fae){_0x39c004=_0x39c004-0x140;let _0xc3b1e6=_0x57c4cf[_0x39c004];return _0xc3b1e6;},_0x39c0(_0x36dae1,_0x28d501);}const OidbSvcTrpcTcp0XED3_1={'uin':ProtoField(0x1,ScalarType['UINT32']),'groupUin':ProtoField(0x2,ScalarType[_0x332f2e(0x145)]),'friendUin':ProtoField(0x5,ScalarType[_0x332f2e(0x145)]),'ext':ProtoField(0x6,ScalarType[_0x332f2e(0x145)],!![])};function _0x57c4(){const _0x2d9821=['6339460xeWCBz','776859gLQCAn','1182SZBRFx','89832WBvSKx','UINT32','200jnyWrl','644IzwQQk','11865QqGIeO','23721VemlVH','2axwUOf','1125EfEcKM','5900400DKWepi','14465QBXMYk'];_0x57c4=function(){return _0x2d9821;};return _0x57c4();} + +const _0x2f7ecf=_0x2473;(function(_0x3d4d19,_0x273cce){const _0x33d6a5=_0x2473,_0x674719=_0x3d4d19();while(!![]){try{const _0x10d23d=-parseInt(_0x33d6a5(0x85))/0x1+-parseInt(_0x33d6a5(0x87))/0x2+-parseInt(_0x33d6a5(0x8e))/0x3+parseInt(_0x33d6a5(0x8b))/0x4*(-parseInt(_0x33d6a5(0x8d))/0x5)+-parseInt(_0x33d6a5(0x86))/0x6+-parseInt(_0x33d6a5(0x8c))/0x7*(parseInt(_0x33d6a5(0x88))/0x8)+parseInt(_0x33d6a5(0x84))/0x9*(parseInt(_0x33d6a5(0x8f))/0xa);if(_0x10d23d===_0x273cce)break;else _0x674719['push'](_0x674719['shift']());}catch(_0x53dd59){_0x674719['push'](_0x674719['shift']());}}}(_0x5c9c,0x19712));function _0x2473(_0x1c74e2,_0x4b9d87){const _0x5c9ca7=_0x5c9c();return _0x2473=function(_0x247342,_0x2705a7){_0x247342=_0x247342-0x84;let _0x1ffc28=_0x5c9ca7[_0x247342];return _0x1ffc28;},_0x2473(_0x1c74e2,_0x4b9d87);}const OidbSvcTrpcTcp0X8FC_2_Body={'targetUid':ProtoField(0x1,ScalarType['STRING']),'specialTitle':ProtoField(0x5,ScalarType[_0x2f7ecf(0x89)]),'expiredTime':ProtoField(0x6,ScalarType['SINT32']),'uinName':ProtoField(0x7,ScalarType['STRING']),'targetName':ProtoField(0x8,ScalarType[_0x2f7ecf(0x89)])};function _0x5c9c(){const _0xe2b4d0=['347592xgmfzP','84674NTQxTi','120JTHBbn','STRING','BYTES','376ljtcch','34930ZzHjrJ','7335wTqYiA','154842eZeiNx','30lhBDFb','1424223irbCrS','5900tJZCXw'];_0x5c9c=function(){return _0xe2b4d0;};return _0x5c9c();}const OidbSvcTrpcTcp0X8FC_2={'groupUin':ProtoField(0x1,ScalarType['UINT32']),'body':ProtoField(0x3,ScalarType[_0x2f7ecf(0x8a)])}; + +const _0xc1142e=_0x5aa8;function _0x36b7(){const _0xd82626=['2236vqnKJJ','3522BZZteT','3378ZQXylY','18391476EcUsSU','1ThyQzP','4352085soNbtL','STRING','6977710aAcPUX','18112140jDAVkg','11xYvJSf','21189vAGLqS','581458EsyohQ','8SfaMFv'];_0x36b7=function(){return _0xd82626;};return _0x36b7();}function _0x5aa8(_0x4d98fc,_0x47dab3){const _0x36b709=_0x36b7();return _0x5aa8=function(_0x5aa8d8,_0x4d65f7){_0x5aa8d8=_0x5aa8d8-0x9a;let _0x3df1b2=_0x36b709[_0x5aa8d8];return _0x3df1b2;},_0x5aa8(_0x4d98fc,_0x47dab3);}(function(_0x577f64,_0x5430ed){const _0x405b42=_0x5aa8,_0x28e4dd=_0x577f64();while(!![]){try{const _0x4d504e=parseInt(_0x405b42(0xa4))/0x1*(-parseInt(_0x405b42(0x9e))/0x2)+parseInt(_0x405b42(0xa2))/0x3*(parseInt(_0x405b42(0xa0))/0x4)+-parseInt(_0x405b42(0x9a))/0x5+-parseInt(_0x405b42(0xa1))/0x6*(-parseInt(_0x405b42(0x9d))/0x7)+-parseInt(_0x405b42(0x9f))/0x8*(-parseInt(_0x405b42(0xa5))/0x9)+parseInt(_0x405b42(0x9b))/0xa*(-parseInt(_0x405b42(0x9c))/0xb)+parseInt(_0x405b42(0xa3))/0xc;if(_0x4d504e===_0x5430ed)break;else _0x28e4dd['push'](_0x28e4dd['shift']());}catch(_0x47f2da){_0x28e4dd['push'](_0x28e4dd['shift']());}}}(_0x36b7,0xe1d3a));const OidbSvcTrpcTcp0XEB7_Body={'uin':ProtoField(0x1,ScalarType[_0xc1142e(0xa6)]),'groupUin':ProtoField(0x2,ScalarType[_0xc1142e(0xa6)]),'version':ProtoField(0x3,ScalarType[_0xc1142e(0xa6)])};const OidbSvcTrpcTcp0XEB7={'body':ProtoField(0x2,()=>OidbSvcTrpcTcp0XEB7_Body)}; + +const _0x39e037=_0x3a92;(function(_0x26c328,_0x238676){const _0x52c32f=_0x3a92,_0x45a1c7=_0x26c328();while(!![]){try{const _0x493678=parseInt(_0x52c32f(0x117))/0x1+-parseInt(_0x52c32f(0x116))/0x2+parseInt(_0x52c32f(0x10a))/0x3+parseInt(_0x52c32f(0x11d))/0x4+-parseInt(_0x52c32f(0x119))/0x5+-parseInt(_0x52c32f(0x10c))/0x6*(parseInt(_0x52c32f(0x112))/0x7)+-parseInt(_0x52c32f(0x10d))/0x8*(-parseInt(_0x52c32f(0x11a))/0x9);if(_0x493678===_0x238676)break;else _0x45a1c7['push'](_0x45a1c7['shift']());}catch(_0xb7d0e0){_0x45a1c7['push'](_0x45a1c7['shift']());}}}(_0x471d,0x71877));function _0x471d(){const _0x19407a=['531238YwWKRV','packetPacket','4590065KuroMx','9gxmHYE','packSetSpecialTittlePacket','from','991104GfcPpy','9.0.90','364557jIGWIc','packGroupSignReq','1434Fpidww','7369528bCamVh','client','OidbSvcTrpcTcp.0x','toUpperCase','hex','5747jIuyux','toString','encode','packOidbPacket','484954aMeKPT'];_0x471d=function(){return _0x19407a;};return _0x471d();}function _0x3a92(_0x45bfdb,_0x5b7654){const _0x471de4=_0x471d();return _0x3a92=function(_0x3a922f,_0x2b55a3){_0x3a922f=_0x3a922f-0x10a;let _0x439509=_0x471de4[_0x3a922f];return _0x439509;},_0x3a92(_0x45bfdb,_0x5b7654);}class PacketPacker{[_0x39e037(0x10e)];constructor(_0x23e876){const _0x1204f6=_0x39e037;this[_0x1204f6(0x10e)]=_0x23e876;}[_0x39e037(0x118)](_0x5633d4){const _0x3ea36e=_0x39e037;return Buffer[_0x3ea36e(0x11c)](_0x5633d4)[_0x3ea36e(0x113)](_0x3ea36e(0x111));}[_0x39e037(0x115)](_0xe9677b,_0xed9105,_0x4a583a,_0x10a678=!![],_0x520f8c=![]){const _0x3887d5=_0x39e037,_0x1bf2f1=new NapProtoMsg(OidbSvcTrpcTcpBase)[_0x3887d5(0x114)]({'command':_0xe9677b,'subCommand':_0xed9105,'body':_0x4a583a,'isReserved':_0x10a678?0x1:0x0});return {'cmd':_0x3887d5(0x10f)+_0xe9677b[_0x3887d5(0x113)](0x10)[_0x3887d5(0x110)]()+'_'+_0xed9105,'data':this[_0x3887d5(0x118)](_0x1bf2f1)};}['packPokePacket'](_0x160665,_0x505665){const _0x3f80c6=_0x39e037,_0x37f3d2=new NapProtoMsg(OidbSvcTrpcTcp0XED3_1)[_0x3f80c6(0x114)]({'uin':_0x160665,'groupUin':_0x505665,'friendUin':_0x505665??_0x160665,'ext':0x0});return this[_0x3f80c6(0x115)](0xed3,0x1,_0x37f3d2);}[_0x39e037(0x11b)](_0x30c69d,_0x271e09,_0x5d45b4){const _0x5b67f8=_0x39e037,_0x2fd368=new NapProtoMsg(OidbSvcTrpcTcp0X8FC_2_Body)[_0x5b67f8(0x114)]({'targetUid':_0x271e09,'specialTitle':_0x5d45b4,'expiredTime':-0x1,'uinName':_0x5d45b4}),_0x1600da=new NapProtoMsg(OidbSvcTrpcTcp0X8FC_2)[_0x5b67f8(0x114)]({'groupUin':+_0x30c69d,'body':_0x2fd368});return this['packOidbPacket'](0x8fc,0x2,_0x1600da,![],![]);}[_0x39e037(0x10b)](_0xb87d67,_0x5d95c1){const _0x2c7c4e=_0x39e037;return this[_0x2c7c4e(0x115)](0xeb7,0x1,new NapProtoMsg(OidbSvcTrpcTcp0XEB7)[_0x2c7c4e(0x114)]({'body':{'uin':_0xb87d67,'groupUin':_0x5d95c1,'version':_0x2c7c4e(0x11e)}}),![],![]);}} + +function _0xaf77(){const _0x1b0086=['1396566fvjGoS','client','error','score',',请检查配置文件!','14110qjRsSJ','12RlvvjC','packer','555lskxeU','3TJzBwT','frida','log','map','[Core]\x20[Packet]\x20未知的PacketBackend\x20','3713880kHIVim','11061611gUnGHO','1096734HbAHCX','[NTQQPacketApi]\x20client\x20初始化','constructor','auto','[Core]\x20[Packet]\x20无可用的后端,NapCat.Packet将不会加载!','judgeClient','name','21FtoRlH','check','[Core]\x20[Packet]\x20使用指定的\x20NativePacketClient\x20作为后端','230219WKmqzS','[Core]\x20[Packet]\x20使用指定的\x20FridaPacketClient\x20作为后端','filter','2439rAfbkw','newClient','sort','wrapperSession','11348eOqKSV','native'];_0xaf77=function(){return _0x1b0086;};return _0xaf77();}function _0x20e4(_0x596c91,_0x52d90a){const _0xaf7718=_0xaf77();return _0x20e4=function(_0x20e485,_0x2170bf){_0x20e485=_0x20e485-0x1a8;let _0x564f21=_0xaf7718[_0x20e485];return _0x564f21;},_0x20e4(_0x596c91,_0x52d90a);}const _0x4e8b38=_0x20e4;(function(_0x2ae657,_0x25e651){const _0x157fb8=_0x20e4,_0x471934=_0x2ae657();while(!![]){try{const _0x3a15a4=-parseInt(_0x157fb8(0x1b4))/0x1+-parseInt(_0x157fb8(0x1bd))/0x2*(-parseInt(_0x157fb8(0x1c6))/0x3)+-parseInt(_0x157fb8(0x1bb))/0x4*(-parseInt(_0x157fb8(0x1c5))/0x5)+-parseInt(_0x157fb8(0x1aa))/0x6*(parseInt(_0x157fb8(0x1b1))/0x7)+-parseInt(_0x157fb8(0x1a8))/0x8+-parseInt(_0x157fb8(0x1b7))/0x9*(parseInt(_0x157fb8(0x1c2))/0xa)+-parseInt(_0x157fb8(0x1a9))/0xb*(-parseInt(_0x157fb8(0x1c3))/0xc);if(_0x3a15a4===_0x25e651)break;else _0x471934['push'](_0x471934['shift']());}catch(_0x3964c){_0x471934['push'](_0x471934['shift']());}}}(_0xaf77,0x60175));const clientPriority={0xa:_0x4a056c=>new NativePacketClient(_0x4a056c),0x1:_0x463ee6=>new WSPacketClient(_0x463ee6)};class PacketSession{[_0x4e8b38(0x1be)];[_0x4e8b38(0x1c4)];[_0x4e8b38(0x1ba)];constructor(_0x3b049c){const _0xb74016=_0x4e8b38;this[_0xb74016(0x1ba)]=_0x3b049c,this[_0xb74016(0x1be)]=this[_0xb74016(0x1b8)](),this[_0xb74016(0x1c4)]=new PacketPacker(this[_0xb74016(0x1be)]);}[_0x4e8b38(0x1b8)](){const _0x32f233=_0x4e8b38;let _0x12c3cd=_0x32f233(0x1bc),_0xbacb6b;switch(_0x12c3cd){case'native':console[_0x32f233(0x1c8)](_0x32f233(0x1b3)),_0xbacb6b=new NativePacketClient(this['wrapperSession']),console[_0x32f233(0x1c8)](_0x32f233(0x1ab),_0xbacb6b);break;case _0x32f233(0x1c7):console['log'](_0x32f233(0x1b5)),_0xbacb6b=new WSPacketClient(this['wrapperSession']);break;case _0x32f233(0x1ad):case void 0x0:_0xbacb6b=this[_0x32f233(0x1af)]();break;default:console[_0x32f233(0x1bf)](_0x32f233(0x1ca)+_0x12c3cd+_0x32f233(0x1c1)),_0xbacb6b=null;}if(!(_0xbacb6b&&_0xbacb6b[_0x32f233(0x1b2)]()))throw new Error('[Core]\x20[Packet]\x20无可用的后端,NapCat.Packet将不会加载!');return _0xbacb6b;}['judgeClient'](){const _0x52e441=_0x4e8b38,_0x388005=Object['entries'](clientPriority)[_0x52e441(0x1c9)](([_0x350713,_0x5d9687])=>{const _0x5c9de9=_0x52e441,_0x14042e=_0x5d9687(this[_0x5c9de9(0x1ba)]),_0x2731fd=+_0x350713*+_0x14042e[_0x5c9de9(0x1b2)]();return {'client':_0x14042e,'score':_0x2731fd};})[_0x52e441(0x1b6)](({score:_0x143766})=>_0x143766>0x0)[_0x52e441(0x1b9)]((_0x32be26,_0xa8e36d)=>_0xa8e36d[_0x52e441(0x1c0)]-_0x32be26['score']),_0x2e4798=_0x388005[0x0]?.[_0x52e441(0x1be)];if(!_0x2e4798)throw new Error(_0x52e441(0x1ae));return console[_0x52e441(0x1c8)]('[Core]\x20[Packet]\x20自动选择\x20'+_0x2e4798[_0x52e441(0x1ac)][_0x52e441(0x1b0)]+'\x20作为后端'),_0x2e4798;}} + +const _0x391e5e = { + "3.2.12-28418-x64": { + recv: "A0723E0", + send: "A06EAE0" +}, + "9.9.15-28418-x64": { + recv: "37A9004", + send: "37A4BD0" +}, + "6.9.56-28418-x64": { + send: "4471360", + recv: "4473BCC" +}, + "6.9.56-28418-arm64": { + send: "3FBDBF8", + recv: "3FC0410" +}, + "9.9.15-28498-x64": { + recv: "37A9004", + send: "37A4BD0" +}, + "9.9.16-28788-x64": { + send: "38076D0", + recv: "380BB04" +}, + "3.2.13-28788-x64": { + send: "A0CEC20", + recv: "A0D2520" +}, + "3.2.13-28788-arm64": { + send: "6E91018", + recv: "6E94850" +}, + "9.9.16-28971-x64": { + send: "38079F0", + recv: "380BE24" +}, + "3.2.13-28971-x64": { + send: "A0CEF60", + recv: "A0D2860" +}, + "3.2.12-28971-arm64": { + send: "6E91318", + recv: "6E94B50" +}, + "6.9.58-28971-x64": { + send: "449ACA0", + recv: "449D50C" +}, + "6.9.58-28971-arm64": { + send: "3FE0DB0", + recv: "3FE35C8" +}, + "9.9.16-29271-x64": { + send: "3833510", + recv: "3837944" +}, + "3.2.13-29271-x64": { + send: "A11E680", + recv: "A121F80" +}, + "3.2.13-29271-arm64": { + send: "6ECA098", + recv: "6ECD8D0" +}, + "9.9.16-29456-x64": { + send: "3835CD0", + recv: "383A104" +}, + "3.2.13-29456-x64": { + send: "A11E820", + recv: "A122120" +}, + "3.2.13-29456-arm64": { + send: "6ECA130", + recv: "6ECD968" +}, + "6.9.59-29456-x64": { + send: "44C57A0", + recv: "44C800C" +}, + "6.9.59-29456-arm64": { + send: "4005FE8", + recv: "4008800" +} +}; + +const _0x57d360=_0x5e35;(function(_0x491e9f,_0x33ecd5){const _0x17606f=_0x5e35,_0x58eece=_0x491e9f();while(!![]){try{const _0x32c57f=parseInt(_0x17606f(0x1de))/0x1*(-parseInt(_0x17606f(0x1df))/0x2)+-parseInt(_0x17606f(0x1c1))/0x3+-parseInt(_0x17606f(0x1d6))/0x4*(-parseInt(_0x17606f(0x1c7))/0x5)+-parseInt(_0x17606f(0x1c4))/0x6*(parseInt(_0x17606f(0x1e0))/0x7)+-parseInt(_0x17606f(0x1cc))/0x8*(-parseInt(_0x17606f(0x1bc))/0x9)+-parseInt(_0x17606f(0x1d9))/0xa+parseInt(_0x17606f(0x1dc))/0xb;if(_0x32c57f===_0x33ecd5)break;else _0x58eece['push'](_0x58eece['shift']());}catch(_0x25aa29){_0x58eece['push'](_0x58eece['shift']());}}}(_0x22ff,0xeac0b));function getQQVersionConfigPath(_0xb98b5=''){const _0x2bc714=_0x5e35;let _0xae3f6a;if(_0x2cc836['platform']()===_0x2bc714(0x1c3))_0xae3f6a=_0x2fc670[_0x2bc714(0x1cb)](_0x2fc670['dirname'](_0xb98b5),'versions',_0x2bc714(0x1d5));else {if(_0x2cc836[_0x2bc714(0x1c8)]()===_0x2bc714(0x1d7)){const _0x25d84b=_0x2cc836[_0x2bc714(0x1cf)](),_0x51fb6d=_0x2fc670[_0x2bc714(0x1d1)](_0x25d84b,'./Library/Application\x20Support/QQ');_0xae3f6a=_0x2fc670[_0x2bc714(0x1d1)](_0x51fb6d,_0x2bc714(0x1d0));}else {const _0x3ba0d0=_0x2cc836[_0x2bc714(0x1cf)](),_0x45fde1=_0x2fc670[_0x2bc714(0x1d1)](_0x3ba0d0,_0x2bc714(0x1d8));_0xae3f6a=_0x2fc670['resolve'](_0x45fde1,_0x2bc714(0x1d0));}}if(typeof _0xae3f6a!==_0x2bc714(0x1c6))return void 0x0;!_0x5a9d71[_0x2bc714(0x1c9)](_0xae3f6a)&&(_0xae3f6a=_0x2fc670[_0x2bc714(0x1cb)](_0x2fc670[_0x2bc714(0x1da)](_0xb98b5),_0x2bc714(0x1d2)));if(!_0x5a9d71['existsSync'](_0xae3f6a))return void 0x0;return _0xae3f6a;}function getDefaultQQVersionConfigInfo(){const _0x2c4116=_0x5e35;if(_0x2cc836[_0x2c4116(0x1c8)]()==='linux')return {'baseVersion':_0x2c4116(0x1ce),'curVersion':_0x2c4116(0x1ce),'prevVersion':'','onErrorVersions':[],'buildId':'27254'};if(_0x2cc836['platform']()===_0x2c4116(0x1d7))return {'baseVersion':'6.9.53.28060','curVersion':_0x2c4116(0x1c0),'prevVersion':'','onErrorVersions':[],'buildId':'28060'};return {'baseVersion':_0x2c4116(0x1db),'curVersion':_0x2c4116(0x1db),'prevVersion':'','onErrorVersions':[],'buildId':_0x2c4116(0x1b4)};}function getQQPackageInfoPath(_0x3ff630='',_0x3b4bd2){const _0x3cf202=_0x5e35;let _0x1c2f43;if(_0x2cc836[_0x3cf202(0x1c8)]()===_0x3cf202(0x1d7))_0x1c2f43=_0x2fc670[_0x3cf202(0x1cb)](_0x2fc670[_0x3cf202(0x1da)](_0x3ff630),'..',_0x3cf202(0x1b6),'app',_0x3cf202(0x1d4));else _0x2cc836[_0x3cf202(0x1c8)]()===_0x3cf202(0x1be)?_0x1c2f43=_0x2fc670[_0x3cf202(0x1cb)](_0x2fc670[_0x3cf202(0x1da)](_0x3ff630),_0x3cf202(0x1bf)):_0x1c2f43=_0x2fc670[_0x3cf202(0x1cb)](_0x2fc670[_0x3cf202(0x1da)](_0x3ff630),_0x3cf202(0x1ba)+_0x3b4bd2+'/resources/app/package.json');return !_0x5a9d71[_0x3cf202(0x1c9)](_0x1c2f43)&&(_0x1c2f43=_0x2fc670[_0x3cf202(0x1cb)](_0x2fc670[_0x3cf202(0x1da)](_0x3ff630),_0x3cf202(0x1b9)+_0x3b4bd2+_0x3cf202(0x1c2))),_0x1c2f43;}class QQBasicInfoWrapper{[_0x57d360(0x1cd)];[_0x57d360(0x1dd)];[_0x57d360(0x1bd)];[_0x57d360(0x1ca)];[_0x57d360(0x1b8)];[_0x57d360(0x1b5)];constructor(){const _0x3b41f2=_0x57d360;this[_0x3b41f2(0x1cd)]=process[_0x3b41f2(0x1bb)],this[_0x3b41f2(0x1bd)]=getQQVersionConfigPath(this[_0x3b41f2(0x1cd)]),this[_0x3b41f2(0x1ca)]=!!this[_0x3b41f2(0x1bd)],this['QQVersionConfig']=this[_0x3b41f2(0x1ca)]?JSON['parse'](_0x5a9d71[_0x3b41f2(0x1d3)](this[_0x3b41f2(0x1bd)])[_0x3b41f2(0x1e2)]()):getDefaultQQVersionConfigInfo(),this[_0x3b41f2(0x1dd)]=getQQPackageInfoPath(this['QQMainPath'],this[_0x3b41f2(0x1b8)]?.[_0x3b41f2(0x1c5)]),this[_0x3b41f2(0x1b5)]=JSON['parse'](_0x5a9d71[_0x3b41f2(0x1d3)](this[_0x3b41f2(0x1dd)])[_0x3b41f2(0x1e2)]());}[_0x57d360(0x1b7)](){const _0x34f291=_0x57d360,_0x5c31d9=this[_0x34f291(0x1ca)]?this['QQVersionConfig']?.[_0x34f291(0x1c5)]:this[_0x34f291(0x1b5)]?.['version'];if(!_0x5c31d9)throw new Error(_0x34f291(0x1e1));return _0x5c31d9;}}function _0x5e35(_0x3c1d15,_0x211536){const _0x22ff9c=_0x22ff();return _0x5e35=function(_0x5e35f7,_0xfe043){_0x5e35f7=_0x5e35f7-0x1b4;let _0x5132ae=_0x22ff9c[_0x5e35f7];return _0x5132ae;},_0x5e35(_0x3c1d15,_0x211536);}function _0x22ff(){const _0x4a19dc=['11854920jmIJOj','dirname','9.9.15-28131','31392691iYOsid','QQPackageInfoPath','4069ANqtdS','446MDjbPK','7jvlQTr','QQ版本获取失败','toString','28131','QQPackageInfo','Resources','getFullQQVersion','QQVersionConfig','./resources/app/versions/','./versions/','execPath','81aBlLuB','QQVersionConfigPath','linux','./resources/app/package.json','6.9.53.28060','1996746DlHmOK','/package.json','win32','1782282dreHtq','curVersion','string','2454145MdLTuA','platform','existsSync','isQuickUpdate','join','597640FAGJYd','QQMainPath','3.2.12.28060','homedir','./versions/config.json','resolve','./resources/app/versions/config.json','readFileSync','package.json','config.json','4stzgjk','darwin','./.config/QQ'];_0x22ff=function(){return _0x4a19dc;};return _0x22ff();} + +const _0x9f4fb=_0x1e82;(function(_0x333529,_0x52fca){const _0x2d7cfb=_0x1e82,_0x2dc69d=_0x333529();while(!![]){try{const _0xa48d05=-parseInt(_0x2d7cfb(0x13a))/0x1*(-parseInt(_0x2d7cfb(0x130))/0x2)+-parseInt(_0x2d7cfb(0x12f))/0x3+parseInt(_0x2d7cfb(0x132))/0x4*(parseInt(_0x2d7cfb(0x141))/0x5)+-parseInt(_0x2d7cfb(0x13b))/0x6+-parseInt(_0x2d7cfb(0x135))/0x7+parseInt(_0x2d7cfb(0x13c))/0x8+-parseInt(_0x2d7cfb(0x139))/0x9*(-parseInt(_0x2d7cfb(0x13f))/0xa);if(_0xa48d05===_0x52fca)break;else _0x2dc69d['push'](_0x2dc69d['shift']());}catch(_0x129f0e){_0x2dc69d['push'](_0x2dc69d['shift']());}}}(_0x1d4e,0x31f03));let Process=require('process'),wrapperSession=null;function _0x1e82(_0x3d65a6,_0x6125c2){const _0x1d4eb8=_0x1d4e();return _0x1e82=function(_0x1e82f3,_0x5aef02){_0x1e82f3=_0x1e82f3-0x12f;let _0x3a68ae=_0x1d4eb8[_0x1e82f3];return _0x3a68ae;},_0x1e82(_0x3d65a6,_0x6125c2);}function _0x1d4e(){const _0x4545ba=['2kmnyxl','exports','935988WxNRIu','NodeIQQNTWrapperSession','dlopen','957334mAxIsb','create','RTLD_LAZY','NodeIQQNTWrapperSession\x20created:','9549VYpsGQ','42865UZYnOt','1477332KfmzeB','973424biEwrl','toString','random','3670pgcTBf','dlopenOri','5xVmhjN','601188eFNPPo'];_0x1d4e=function(){return _0x4545ba;};return _0x1d4e();}const dlopenOriName=_0x9f4fb(0x140)+Math[_0x9f4fb(0x13e)]()[_0x9f4fb(0x13d)](0x24)['substring'](0x7);Process[dlopenOriName]=Process[_0x9f4fb(0x134)],Process['dlopen']=function(_0x170cdc,_0x4a6bdf,_0x3c57cb=_0x2cc836['constants'][_0x9f4fb(0x134)][_0x9f4fb(0x137)]){const _0x204cf8=_0x9f4fb;let _0x55fda6=this[dlopenOriName](_0x170cdc,_0x4a6bdf,_0x3c57cb),_0x112989=_0x170cdc[_0x204cf8(0x131)];return _0x170cdc[_0x204cf8(0x131)]=new Proxy({},{'get':function(_0x1a97ab,_0x5a4f2f,_0x34ba03){if(_0x5a4f2f==='NodeIQQNTWrapperSession')return new Proxy(()=>{},{'get'(_0x26ff97,_0x16ebc2,_0x34f08c){if(_0x16ebc2==='create')return new Proxy(()=>{},{'apply'(_0x3d02dc,_0x296552,_0x55b709){const _0x2cfc6e=_0x1e82;return wrapperSession=_0x112989[_0x2cfc6e(0x133)][_0x2cfc6e(0x136)](..._0x55b709),console['log'](_0x2cfc6e(0x138),wrapperSession),Process[_0x2cfc6e(0x134)]=Process[dlopenOriName],wrapperSession;}});}});return _0x112989[_0x5a4f2f];}}),_0x55fda6;};async function initWrapperSession(){if(wrapperSession)return wrapperSession;return new Promise((_0x4a3fac,_0x34a3e4)=>{let _0x9fb78=setInterval(()=>{wrapperSession&&(clearInterval(_0x9fb78),_0x4a3fac(wrapperSession));},0x64);});} + +const _0x3cd3f1=_0x5b41;(function(_0x4f8714,_0xfe81ea){const _0x40bda7=_0x5b41,_0x920b7c=_0x4f8714();while(!![]){try{const _0x307aaf=parseInt(_0x40bda7(0xde))/0x1*(-parseInt(_0x40bda7(0xee))/0x2)+parseInt(_0x40bda7(0xe6))/0x3+-parseInt(_0x40bda7(0xf3))/0x4+-parseInt(_0x40bda7(0xe2))/0x5+parseInt(_0x40bda7(0xfe))/0x6+parseInt(_0x40bda7(0xfd))/0x7*(parseInt(_0x40bda7(0xff))/0x8)+parseInt(_0x40bda7(0xe9))/0x9;if(_0x307aaf===_0xfe81ea)break;else _0x920b7c['push'](_0x920b7c['shift']());}catch(_0x711c29){_0x920b7c['push'](_0x920b7c['shift']());}}}(_0x147f,0x3a1d6));function _0x5b41(_0x4edc2c,_0x4e00ec){const _0x147f3=_0x147f();return _0x5b41=function(_0x5b41b6,_0x177106){_0x5b41b6=_0x5b41b6-0xdb;let _0x29e353=_0x147f3[_0x5b41b6];return _0x29e353;},_0x5b41(_0x4edc2c,_0x4e00ec);}function _0x147f(){const _0xe0fbf4=['catch','error','sendGroupSignPacket','163401kNYpLU','1282254WRLjaD','56VtxYIl','client','then','sendPokePacket','sendSetSpecialTittlePacket','packetSession','11Yptxry','packer','send','sendPacket','641265KsgPQB','packPokePacket','[NTQQPacketApi]\x20PacketServer\x20Offset\x20table\x20not\x20found\x20for\x20QQVersion:\x20','[NTQQPacketApi]\x20InitSendPacket:\x20','455628hVUpIi','当前\x20QQ\x20版本不支持','log','4626684seUEtF','bind','arch','InitSendPacket','logger','49940dhnwbT','connect','sendOidbPacket','available','checkQQVersion','1608404fGuesM','wrapperSession','qqVersion','getFullQQVersion','pid','packGroupSignReq','data'];_0x147f=function(){return _0xe0fbf4;};return _0x147f();}class NTQQPacketApi{['qqVersion'];[_0x3cd3f1(0xdd)];[_0x3cd3f1(0xed)]=console;[_0x3cd3f1(0xf4)];constructor(_0x8fc3ac){const _0x7d3399=_0x3cd3f1;this[_0x7d3399(0xf4)]=_0x8fc3ac,this[_0x7d3399(0xdd)]=void 0x0,this['InitSendPacket'](new QQBasicInfoWrapper()[_0x7d3399(0xf6)]())[_0x7d3399(0x101)]()[_0x7d3399(0xfa)](console[_0x7d3399(0xfb)]);}get[_0x3cd3f1(0xf1)](){const _0x1861a1=_0x3cd3f1;return this[_0x1861a1(0xdd)]?.[_0x1861a1(0x100)][_0x1861a1(0xf1)]??![];}['checkQQVersion'](){const _0x33b211=_0x3cd3f1,_0x1b3bdc=_0x391e5e,_0x1bf552=_0x1b3bdc[this['qqVersion']+'-'+_0x2378fb[_0x33b211(0xeb)]()];if(!_0x1bf552)throw new Error(_0x33b211(0xe7));}async[_0x3cd3f1(0xec)](_0x42389c){const _0x57b7e2=_0x3cd3f1;this[_0x57b7e2(0xed)]['log'](_0x57b7e2(0xe5),_0x42389c,_0x2378fb[_0x57b7e2(0xeb)]()),this[_0x57b7e2(0xf5)]=_0x42389c;const _0x2ef395=_0x391e5e,_0x4614b3=_0x2ef395[_0x42389c+'-'+_0x2378fb[_0x57b7e2(0xeb)]()];if(!_0x4614b3)return this[_0x57b7e2(0xed)]['log'](_0x57b7e2(0xe4),_0x42389c+'-'+_0x2378fb[_0x57b7e2(0xeb)]()),![];try{this[_0x57b7e2(0xdd)]=new PacketSession(this[_0x57b7e2(0xf4)]),this[_0x57b7e2(0xed)][_0x57b7e2(0xe8)]('[NTQQPacketApi]\x20PacketSession\x20created:\x20',this['packetSession']);}catch(_0x42e80d){return this[_0x57b7e2(0xed)][_0x57b7e2(0xe8)]('[NTQQPacketApi]\x20PacketSession\x20create\x20failed:\x20',_0x42e80d),![];}const _0x4ca443=()=>{const _0x5889bd=_0x57b7e2;this[_0x5889bd(0xdd)]&&this['packetSession'][_0x5889bd(0x100)]&&this[_0x5889bd(0xdd)][_0x5889bd(0x100)]['init'](process[_0x5889bd(0xf7)],_0x4614b3['recv'],_0x4614b3[_0x5889bd(0xe0)])[_0x5889bd(0x101)]()['catch'](this['logger']['error'][_0x5889bd(0xea)](this['logger']));};return await this[_0x57b7e2(0xdd)][_0x57b7e2(0x100)][_0x57b7e2(0xef)](_0x4ca443),!![];}async[_0x3cd3f1(0xe1)](_0x38c0a1,_0x20cbf2,_0x428eea=![]){const _0x136210=_0x3cd3f1;return this[_0x136210(0xf2)](),this[_0x136210(0xdd)][_0x136210(0x100)][_0x136210(0xe1)](_0x38c0a1,_0x20cbf2,_0x428eea);}async[_0x3cd3f1(0xf0)](_0x1d462f,_0x5218b0=![]){const _0x164809=_0x3cd3f1;return this[_0x164809(0xe1)](_0x1d462f['cmd'],_0x1d462f[_0x164809(0xf9)],_0x5218b0);}async[_0x3cd3f1(0xdb)](_0x45c844,_0x5bf0f5){const _0x5daddc=_0x3cd3f1,_0x21429b=this['packetSession']?.['packer'][_0x5daddc(0xe3)](_0x45c844,_0x5bf0f5);await this[_0x5daddc(0xf0)](_0x21429b,![]);}async[_0x3cd3f1(0xfc)](_0x1aeadb,_0x266129){const _0x41d5a6=_0x3cd3f1,_0x1fd408=this[_0x41d5a6(0xdd)]?.[_0x41d5a6(0xdf)][_0x41d5a6(0xf8)](_0x1aeadb,_0x266129);await this['sendOidbPacket'](_0x1fd408,!![]);}async[_0x3cd3f1(0xdc)](_0xeda5c5,_0x5d42f2,_0x2c976d){const _0xc2eec6=_0x3cd3f1,_0x35fea6=this[_0xc2eec6(0xdd)]?.['packer']['packSetSpecialTittlePacket'](_0xeda5c5,_0x5d42f2,_0x2c976d);await this['sendOidbPacket'](_0x35fea6,!![]);}} + +export { NTQQPacketApi, initWrapperSession }; From 5c5105ce88c2a0c64f75531dbe84e3953769dd1c Mon Sep 17 00:00:00 2001 From: linyuchen Date: Wed, 13 Nov 2024 19:33:29 +0800 Subject: [PATCH 7/7] chore: version 4.2.0 --- manifest.json | 2 +- src/version.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index 2add6a2..db4ebe7 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "LLOneBot", "slug": "LLOneBot", "description": "实现 OneBot 11 和 Satori 协议,用于 QQ 机器人开发", - "version": "4.1.5", + "version": "4.2.0", "icon": "./icon.webp", "authors": [ { diff --git a/src/version.ts b/src/version.ts index 355f74a..e646a57 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const version = '4.1.5' +export const version = '4.2.0'

    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 z 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 z⪚|#43p5XkJiHg6HdkHK<(UjMg(45#fvCq+ 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