@spacebarchat/pion-webrtc 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"IpcClient.d.ts","sourceRoot":"","sources":["../src/IpcClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAInE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD,qBAAa,SAAS;IACpB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,GAAG,CAAwB;gBAEvB,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB;IAcjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB/B,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,aAAa;IA0CR,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBzE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAc1D,OAAO,CAAC,gBAAgB;IAQjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS9B"}
1
+ {"version":3,"file":"IpcClient.d.ts","sourceRoot":"","sources":["../src/IpcClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAInE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD,qBAAa,SAAS;IACpB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,GAAG,CAAwB;IAEnC,YAAY,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EASvD;IAIM,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAkC9B;IAED,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,aAAa;IA0CR,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAiB/E;IAIM,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAYzD;IAED,OAAO,CAAC,gBAAgB;IAQjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ5B;CACF"}
package/dist/IpcClient.js CHANGED
@@ -17,7 +17,7 @@ export class IpcClient {
17
17
  this.socketPath = `/tmp/${pipeName}.sock`;
18
18
  }
19
19
  }
20
- // todo: reconnect logic
20
+ // todo: reconnect logic
21
21
  connect() {
22
22
  return new Promise((resolve, reject) => {
23
23
  console.log(`connecting to IPC at ${this.socketPath}...`);
@@ -31,9 +31,21 @@ export class IpcClient {
31
31
  console.error('IPC socket error:', err.message);
32
32
  reject(err);
33
33
  });
34
- this.socket.on('close', () => {
34
+ this.socket.on('close', async (hadError) => {
35
35
  console.log('IPC connection closed');
36
36
  this.rejectAllPending(new Error('IPC connection closed'));
37
+ while (!hadError) {
38
+ await new Promise((res) => setTimeout(res, 1000));
39
+ try {
40
+ // clear event handlers so the old socket can get collected
41
+ this.socket?.eventNames().forEach(name => this.socket?.removeAllListeners(name));
42
+ await this.connect();
43
+ return;
44
+ }
45
+ catch (e) {
46
+ console.error("[IPC] Unable to connect to socket:", e);
47
+ }
48
+ }
37
49
  });
38
50
  });
39
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IpcClient.js","sourceRoot":"","sources":["../src/IpcClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IpcClient.js","sourceRoot":"","sources":["../src/IpcClient.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,12 @@ export declare class PionSignalingDelegate implements SignalingDelegate {
6
6
  private _ip;
7
7
  private _port;
8
8
  private _rooms;
9
+ private _sfuProcess?;
10
+ private _isStopping;
9
11
  ipc: IpcClient;
10
12
  constructor();
11
13
  start(public_ip: string, portMin: number, portMax: number): Promise<void>;
14
+ private startSfu;
12
15
  join(roomId: string, userId: string, ws: any, type: "guild-voice" | "dm-voice" | "stream"): Promise<WebRtcClient<any>>;
13
16
  onOffer(client: WebRtcClient<any>, sdpOffer: string, codecs: Codec[]): Promise<{
14
17
  sdp: string;
@@ -1 +1 @@
1
- {"version":3,"file":"PionSignalingDelegate.d.ts","sourceRoot":"","sources":["../src/PionSignalingDelegate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,qBAAsB,YAAW,iBAAiB;IAC3D,OAAO,CAAC,GAAG,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAqC;IAC5C,GAAG,EAAE,SAAS,CAAC;;IAMN,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/E,IAAI,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,GAAG,EACP,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,GACzC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAuCb,OAAO,CACtB,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,KAAK,EAAE,GACb,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAC,CAAC;IA4J3C,aAAa,GAAI,QAAQ,YAAY,CAAC,GAAG,CAAC,UAGhD;IAEM,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAQtE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAUnE,UAAU,CAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,GACzC,IAAI;IAIJ,IAAI,EAAE,IAAI,MAAM,CAElB;IACD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAElC;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAOlC"}
1
+ {"version":3,"file":"PionSignalingDelegate.d.ts","sourceRoot":"","sources":["../src/PionSignalingDelegate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,qBAAsB,YAAW,iBAAiB;IAC9D,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,WAAW,CAAC,CAAiC;IACrD,OAAO,CAAC,WAAW,CAAS;IACrB,GAAG,EAAE,SAAS,CAAC;IAEtB,cAEC;IAEY,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrF;YAEa,QAAQ;IA0Bf,IAAI,CACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,GAAG,EACP,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,GAC1C,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAqC5B;IAEY,OAAO,CAClB,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,KAAK,EAAE,GACd,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC,CAiKtD;IAEM,aAAa,WAAY,YAAY,CAAC,GAAG,CAAC,UAG/C;IAEK,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpC;IAEM,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAMzE;IAEM,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAQzE;IAEM,UAAU,CACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,GAC1C,IAAI,CAEN;IAED,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAElC;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAQjC;CACD"}
@@ -1,3 +1,5 @@
1
+ import { spawn } from "node:child_process";
2
+ import { once } from "node:events";
1
3
  import { VoiceRoom } from "./VoiceRoom.js";
2
4
  import { PionWebRtcClient } from "./PionWebRtcClient.js";
3
5
  import { CodecInfo, MediaInfo, SDPInfo } from "semantic-sdp";
@@ -6,14 +8,38 @@ export class PionSignalingDelegate {
6
8
  _ip;
7
9
  _port;
8
10
  _rooms = new Map();
11
+ _sfuProcess;
12
+ _isStopping = false;
9
13
  ipc;
10
14
  constructor() {
11
- this.ipc = new IpcClient('sfu-ipc', this);
15
+ this.ipc = new IpcClient("sfu-ipc", this);
12
16
  }
13
17
  async start(public_ip, portMin, portMax) {
14
18
  this._port = portMin;
15
19
  this._ip = public_ip;
20
+ if (!await this.startSfu())
21
+ await this.ipc.connect();
22
+ }
23
+ async startSfu() {
24
+ if (!process.env.PION_SFU_BIN) {
25
+ console.warn(`PION_SFU_BIN environment variable not set, skipping integrated SFU startup - voice will not work if running at least an SFU instance at ${this._ip}:${this._port}!`);
26
+ return false;
27
+ }
28
+ this._sfuProcess = spawn(process.env.PION_SFU_BIN, ["-port", this._port.toString(), "-ip", this._ip]);
29
+ this._sfuProcess.stdout.on("data", (data) => {
30
+ console.log(`[Pion SFU] ${data}`);
31
+ });
32
+ this._sfuProcess.stderr.on("data", (data) => {
33
+ console.error(`[Pion SFU] ${data}`);
34
+ });
16
35
  await this.ipc.connect();
36
+ once(this._sfuProcess, "close").then(([code]) => {
37
+ console.log(`Pion SFU exited with code: ${code} - restarting...`);
38
+ this.ipc.close(); // clean up state, since the SFU won't have any
39
+ if (!this._isStopping)
40
+ this.startSfu();
41
+ });
42
+ return true;
17
43
  }
18
44
  join(roomId, userId, ws, type) {
19
45
  // if this is guild-voice or dm-voice, make sure user isn't already in a room of those types
@@ -109,9 +135,13 @@ export class PionSignalingDelegate {
109
135
  }
110
136
  }
111
137
  offer.medias = [audioMedia, videoMedia];
112
- const finalOffer = offer.toString().replace(' NaN ', ' 3984 ').replace(':actpass', ':active');
138
+ const finalOffer = offer.toString().replace(" NaN ", " 3984 ").replace(":actpass", ":active");
113
139
  console.log(finalOffer);
114
- const res = await this.ipc.request({ type: "offer", clientId: client.uniqueId, sdp: finalOffer });
140
+ const res = await this.ipc.request({
141
+ type: "offer",
142
+ clientId: client.uniqueId,
143
+ sdp: finalOffer,
144
+ });
115
145
  if (!res.sdp)
116
146
  return Promise.reject();
117
147
  const answerSdp = SDPInfo.parse(res.sdp);
@@ -125,7 +155,10 @@ export class PionSignalingDelegate {
125
155
  `a=ice-ufrag:${answerSdp.ice.getUfrag()}\n` +
126
156
  `a=ice-pwd:${answerSdp.ice.getPwd()}\n` +
127
157
  `a=fingerprint:${fingerprint}\n` +
128
- `a=candidate:1 1 ${candidate.getTransport()} ${candidate.getFoundation()} ${candidate.getAddress()} ${candidate.getPort()} typ host\n`;
158
+ // https://datatracker.ietf.org/doc/html/rfc5245#section-15.1
159
+ // is component ID a valid property? was previoiusly hardcoded as 1
160
+ // do we even want to send a priority? prev hardcoded as 1
161
+ `a=candidate:${candidate.getFoundation()} ${candidate.getComponentId()} ${candidate.getTransport()} ${candidate.getPriority()} ${candidate.getAddress()} ${candidate.getPort()} typ host\n`;
129
162
  return Promise.resolve({ sdp: answer, selectedVideoCodec: videoCodec.codec.toUpperCase() });
130
163
  }
131
164
  onClientClose = (client) => {
@@ -163,10 +196,12 @@ export class PionSignalingDelegate {
163
196
  return this._rooms;
164
197
  }
165
198
  async stop() {
199
+ this._isStopping = true;
166
200
  for (const room of this._rooms.values()) {
167
201
  await room.stop();
168
202
  }
169
203
  await this.ipc.close();
204
+ this._sfuProcess?.kill();
170
205
  return Promise.resolve();
171
206
  }
172
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PionSignalingDelegate.js","sourceRoot":"","sources":["../src/PionSignalingDelegate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PionSignalingDelegate.js","sourceRoot":"","sources":["../src/PionSignalingDelegate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PionWebRtcClient.d.ts","sourceRoot":"","sources":["../src/PionWebRtcClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAe,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEtG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,qBAAa,gBAAiB,YAAW,YAAY,CAAC,GAAG,CAAC;IACtD,SAAS,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IAEb,IAAI,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAGxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,GAAG,EACd,IAAI,EAAE,SAAS;IAcN,iBAAiB,CAAC,KAAK,EAAE,KAAK;IAI9B,sBAAsB,IAAI,KAAK;IAI/B,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK;IAIrD,gBAAgB,IAAI,OAAO;IAI3B,gBAAgB,IAAI,OAAO;IAIlC,YAAY,CAAE,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAalE,mBAAmB,CAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI;IAc7C,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB/E,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI;IAqBpE,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO;CAMzE"}
1
+ {"version":3,"file":"PionWebRtcClient.d.ts","sourceRoot":"","sources":["../src/PionWebRtcClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAe,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEtG,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,qBAAa,gBAAiB,YAAW,YAAY,CAAC,GAAG,CAAC;IACtD,SAAS,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IAEb,IAAI,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEtB,YACF,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,GAAG,EACd,IAAI,EAAE,SAAS,EAYf;IAES,iBAAiB,CAAC,KAAK,EAAE,KAAK,QAEpC;IAEM,sBAAsB,IAAI,KAAK,CAErC;IAEM,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAE3D;IAEM,gBAAgB,IAAI,OAAO,CAEjC;IAEM,gBAAgB,IAAI,OAAO,CAEjC;IAED,YAAY,CAAE,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAWpE;IAEE,mBAAmB,CAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAYrD;IAEQ,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBjF;IAEE,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAmBtE;IAEE,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAKvE;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceRoom.d.ts","sourceRoot":"","sources":["../src/VoiceRoom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,KAAK,CAAwC;gBAGjD,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,EAC3C,GAAG,EAAE,qBAAqB;IAQ9B,YAAY,GAAI,QAAQ,gBAAgB,UAGtC;IAEF,aAAa,GAAI,QAAQ,gBAAgB,UAcxC;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC,IAAI,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAE3C;IAED,iBAAiB,GAAI,IAAI,MAAM,kCAE7B;IAEF,mBAAmB,GAAI,IAAI,MAAM,kCAEhC;IAED,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,aAAa,GAAG,UAAU,GAAG,QAAQ,CAEhD;IAED,IAAI,GAAG,IAAI,qBAAqB,CAE/B;CACJ"}
1
+ {"version":3,"file":"VoiceRoom.d.ts","sourceRoot":"","sources":["../src/VoiceRoom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,KAAK,CAAwC;IAErD,YACI,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,EAC3C,GAAG,EAAE,qBAAqB,EAM7B;IAED,YAAY,WAAY,gBAAgB,UAGtC;IAEF,aAAa,WAAY,gBAAgB,UAcxC;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAQjC;IAED,IAAI,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAE3C;IAED,iBAAiB,OAAQ,MAAM,kCAE7B;IAEF,mBAAmB,OAAQ,MAAM,kCAEhC;IAED,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,aAAa,GAAG,UAAU,GAAG,QAAQ,CAEhD;IAED,IAAI,GAAG,IAAI,qBAAqB,CAE/B;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;eAEpD,qBAAqB"}
package/package.json CHANGED
@@ -1,27 +1,28 @@
1
1
  {
2
2
  "name": "@spacebarchat/pion-webrtc",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "A WebRTC server implementation compatible with Spacebar using Pion for webrtc",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "type": "module",
8
8
  "files": [
9
9
  "dist",
10
- "src"
10
+ "src",
11
+ "!dist/.tsbuildinfo"
11
12
  ],
12
13
  "publishConfig": {
13
14
  "access": "public"
14
15
  },
15
16
  "scripts": {
16
- "build": "tsc"
17
+ "build": "tsc -b -v"
17
18
  },
18
19
  "dependencies": {
19
20
  "semantic-sdp": "^3.31.1"
20
21
  },
21
22
  "devDependencies": {
22
23
  "@spacebarchat/spacebar-webrtc-types": "^1.0.1",
23
- "@types/node": "^20.17.1",
24
- "typescript": "^5.6.3"
24
+ "@types/node": "^26.6.5",
25
+ "typescript": "^7.0.2"
25
26
  },
26
27
  "peerDependencies": {
27
28
  "@spacebarchat/spacebar-webrtc-types": "^1.0.1"
package/src/IpcClient.ts CHANGED
@@ -33,7 +33,6 @@ export class IpcClient {
33
33
  private sfu: PionSignalingDelegate;
34
34
 
35
35
  constructor(pipeName: string, sfu: PionSignalingDelegate) {
36
-
37
36
  this.sfu = sfu;
38
37
 
39
38
  // cross-platform check
@@ -44,8 +43,8 @@ export class IpcClient {
44
43
  }
45
44
  }
46
45
 
47
- // todo: reconnect logic
48
-
46
+ // todo: reconnect logic
47
+
49
48
  public connect(): Promise<void> {
50
49
  return new Promise((resolve, reject) => {
51
50
  console.log(`connecting to IPC at ${this.socketPath}...`);
@@ -63,9 +62,21 @@ export class IpcClient {
63
62
  reject(err);
64
63
  });
65
64
 
66
- this.socket.on('close', () => {
65
+ this.socket.on('close', async (hadError) => {
67
66
  console.log('IPC connection closed');
68
67
  this.rejectAllPending(new Error('IPC connection closed'));
68
+
69
+ while(!hadError) {
70
+ await new Promise((res) => setTimeout(res, 1000));
71
+ try {
72
+ // clear event handlers so the old socket can get collected
73
+ this.socket?.eventNames().forEach(name => this.socket?.removeAllListeners(name));
74
+ await this.connect();
75
+ return;
76
+ } catch (e) {
77
+ console.error("[IPC] Unable to connect to socket:", e);
78
+ }
79
+ }
69
80
  });
70
81
  });
71
82
  }
@@ -93,16 +104,16 @@ export class IpcClient {
93
104
  // check if it's a response to a request we made
94
105
  if (message.type === 'response' && message.id) {
95
106
  const pending = this.pendingRequests.get(message.id);
96
-
107
+
97
108
  if (pending) {
98
109
  clearTimeout(pending.timeout);
99
-
110
+
100
111
  if (message.error) {
101
112
  pending.reject(new Error(message.error));
102
113
  } else {
103
114
  pending.resolve(message.payload);
104
115
  }
105
-
116
+
106
117
  this.pendingRequests.delete(message.id);
107
118
  }
108
119
  } else {
@@ -1,3 +1,5 @@
1
+ import { spawn, ChildProcessWithoutNullStreams } from "node:child_process";
2
+ import { once } from "node:events";
1
3
  import { Codec, SignalingDelegate, WebRtcClient } from "@spacebarchat/spacebar-webrtc-types";
2
4
  import { VoiceRoom } from "./VoiceRoom.js";
3
5
  import { PionWebRtcClient } from "./PionWebRtcClient.js";
@@ -5,34 +7,63 @@ import { CodecInfo, MediaInfo, SDPInfo } from "semantic-sdp";
5
7
  import { IpcClient } from "./IpcClient.js";
6
8
 
7
9
  export class PionSignalingDelegate implements SignalingDelegate {
8
- private _ip: string;
10
+ private _ip: string;
9
11
  private _port: number;
10
12
  private _rooms: Map<string, VoiceRoom> = new Map();
13
+ private _sfuProcess?: ChildProcessWithoutNullStreams;
14
+ private _isStopping = false;
11
15
  public ipc: IpcClient;
12
16
 
13
17
  constructor() {
14
- this.ipc = new IpcClient('sfu-ipc', this)
18
+ this.ipc = new IpcClient("sfu-ipc", this);
15
19
  }
16
20
 
17
- public async start(public_ip: string, portMin: number, portMax: number): Promise<void> {
21
+ public async start(public_ip: string, portMin: number, portMax: number): Promise<void> {
18
22
  this._port = portMin;
19
23
  this._ip = public_ip;
24
+ if(!await this.startSfu())
25
+ await this.ipc.connect();
26
+ }
27
+
28
+ private async startSfu() {
29
+ if (!process.env.PION_SFU_BIN) {
30
+ console.warn(`PION_SFU_BIN environment variable not set, skipping integrated SFU startup - voice will not work if running at least an SFU instance at ${this._ip}:${this._port}!`);
31
+ return false;
32
+ }
33
+ this._sfuProcess = spawn(process.env.PION_SFU_BIN, [ "-port", this._port.toString(), "-ip", this._ip ]);
34
+
35
+ this._sfuProcess!.stdout.on("data", (data) => {
36
+ console.log(`[Pion SFU] ${data}`);
37
+ });
38
+
39
+ this._sfuProcess!.stderr.on("data", (data) => {
40
+ console.error(`[Pion SFU] ${data}`);
41
+ });
42
+
20
43
  await this.ipc.connect();
21
- }
22
44
 
23
- public join(
24
- roomId: string,
25
- userId: string,
26
- ws: any,
27
- type: "guild-voice" | "dm-voice" | "stream",
45
+ once(this._sfuProcess!, "close").then(([ code ]) => {
46
+ console.log(`Pion SFU exited with code: ${code} - restarting...`);
47
+ this.ipc.close(); // clean up state, since the SFU won't have any
48
+ if (!this._isStopping) this.startSfu();
49
+ });
50
+
51
+ return true;
52
+ }
53
+
54
+ public join(
55
+ roomId: string,
56
+ userId: string,
57
+ ws: any,
58
+ type: "guild-voice" | "dm-voice" | "stream",
28
59
  ): Promise<WebRtcClient<any>> {
29
- // if this is guild-voice or dm-voice, make sure user isn't already in a room of those types
60
+ // if this is guild-voice or dm-voice, make sure user isn't already in a room of those types
30
61
  // user can be in many simultanous go live stream rooms though (can be in a voice channel and watching a stream for example, or watching multiple streams)
31
- const rooms = type === "stream" ? [] : this.rooms
32
- .values()
33
- .filter((room) =>
34
- room.type === "dm-voice" || room.type === "guild-voice",
35
- );
62
+ const rooms = type==="stream" ? []:this.rooms
63
+ .values()
64
+ .filter((room) =>
65
+ room.type==="dm-voice" || room.type==="guild-voice",
66
+ );
36
67
  let existingClient;
37
68
 
38
69
  for (const room of rooms) {
@@ -59,45 +90,45 @@ export class PionSignalingDelegate implements SignalingDelegate {
59
90
 
60
91
  room?.onClientJoin(client);
61
92
 
62
- this.ipc.send({ type: "join", clientId: client.uniqueId! })
93
+ this.ipc.send({ type: "join", clientId: client.uniqueId! });
63
94
 
64
95
  return Promise.resolve(client);
65
- }
96
+ }
66
97
 
67
- public async onOffer(
68
- client: WebRtcClient<any>,
69
- sdpOffer: string,
70
- codecs: Codec[],
71
- ): Promise<{sdp: string, selectedVideoCodec: string}> {
72
- const room = this._rooms.get(client.voiceRoomId);
98
+ public async onOffer(
99
+ client: WebRtcClient<any>,
100
+ sdpOffer: string,
101
+ codecs: Codec[],
102
+ ): Promise<{ sdp: string, selectedVideoCodec: string }> {
103
+ const room = this._rooms.get(client.voiceRoomId);
73
104
 
74
105
  if (!room) {
75
106
  console.error(
76
- "error, client sent an offer but has not authenticated",
107
+ "error, client sent an offer but has not authenticated",
77
108
  );
78
109
  Promise.reject();
79
110
  }
80
111
 
81
- const offer = sdpOffer.startsWith("v=0") ? SDPInfo.parse(sdpOffer) : SDPInfo.parse("m=audio\n" + sdpOffer);
112
+ const offer = sdpOffer.startsWith("v=0") ? SDPInfo.parse(sdpOffer):SDPInfo.parse("m=audio\n" + sdpOffer);
82
113
 
83
114
  const rtpHeaders = new Map(offer.medias[0].extensions);
84
115
 
85
116
  const getIdForHeader = (
86
- rtpHeaders: Map<number, string>,
87
- headerUri: string,
117
+ rtpHeaders: Map<number, string>,
118
+ headerUri: string,
88
119
  ) => {
89
- for (const [key, value] of rtpHeaders) {
90
- if (value == headerUri) return key;
120
+ for (const [ key, value ] of rtpHeaders) {
121
+ if (value==headerUri) return key;
91
122
  }
92
123
  return -1;
93
124
  };
94
125
 
95
- const isChromium = codecs.find((val) => val.name == "opus")?.payload_type === 111;
126
+ const isChromium = codecs.find((val) => val.name=="opus")?.payload_type===111;
96
127
 
97
128
  const audioMedia = new MediaInfo("0", "audio");
98
129
  const audioCodec = new CodecInfo(
99
- "opus",
100
- codecs.find((val) => val.name == "opus")?.payload_type ?? 111,
130
+ "opus",
131
+ codecs.find((val) => val.name=="opus")?.payload_type ?? 111,
101
132
  );
102
133
  audioCodec.addParam("minptime", "10");
103
134
  audioCodec.addParam("usedtx", "1");
@@ -106,27 +137,27 @@ export class PionSignalingDelegate implements SignalingDelegate {
106
137
  audioMedia.addCodec(audioCodec);
107
138
 
108
139
  const audioLevelExtensionId = getIdForHeader(
109
- rtpHeaders,
110
- "urn:ietf:params:rtp-hdrext:ssrc-audio-level",
111
- )
140
+ rtpHeaders,
141
+ "urn:ietf:params:rtp-hdrext:ssrc-audio-level",
142
+ );
112
143
 
113
- if(audioLevelExtensionId > -1) {
144
+ if (audioLevelExtensionId > -1) {
114
145
  audioMedia.addExtension(
115
- audioLevelExtensionId,
116
- "urn:ietf:params:rtp-hdrext:ssrc-audio-level",
146
+ audioLevelExtensionId,
147
+ "urn:ietf:params:rtp-hdrext:ssrc-audio-level",
117
148
  );
118
149
  }
119
150
 
120
151
  if (isChromium) {
121
152
  // if this is chromium, apply this header
122
153
  const transportWideCcHeaderId = getIdForHeader(
123
- rtpHeaders,
124
- "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01",
125
- )
126
- if(transportWideCcHeaderId > -1) {
127
- audioMedia.addExtension(
128
- transportWideCcHeaderId,
154
+ rtpHeaders,
129
155
  "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01",
156
+ );
157
+ if (transportWideCcHeaderId > -1) {
158
+ audioMedia.addExtension(
159
+ transportWideCcHeaderId,
160
+ "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01",
130
161
  );
131
162
  }
132
163
  }
@@ -134,77 +165,81 @@ export class PionSignalingDelegate implements SignalingDelegate {
134
165
  const videoMedia = new MediaInfo("1", "video");
135
166
 
136
167
  const videoCodec = new CodecInfo(
137
- "H264",
138
- codecs.find((val) => val.name == "H264")?.payload_type ?? 102,
168
+ "H264",
169
+ codecs.find((val) => val.name=="H264")?.payload_type ?? 102,
139
170
  );
140
171
  videoCodec.setRTX(
141
- codecs.find((val) => val.name == "H264")?.rtx_payload_type ?? 103,
172
+ codecs.find((val) => val.name=="H264")?.rtx_payload_type ?? 103,
142
173
  );
143
174
  videoCodec.addParam("level-asymmetry-allowed", "1");
144
175
  videoCodec.addParam("packetization-mode", "1");
145
176
  videoCodec.addParam("profile-level-id", "42e01f");
146
177
  videoCodec.addParam("x-google-max-bitrate", "2500");
147
178
  videoMedia.addCodec(videoCodec);
148
-
179
+
149
180
  const absSendTimeHeaderId = getIdForHeader(
150
- rtpHeaders,
151
- "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time",
152
- )
153
- if(absSendTimeHeaderId > -1) {
154
- videoMedia.addExtension(
155
- absSendTimeHeaderId,
181
+ rtpHeaders,
156
182
  "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time",
183
+ );
184
+ if (absSendTimeHeaderId > -1) {
185
+ videoMedia.addExtension(
186
+ absSendTimeHeaderId,
187
+ "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time",
157
188
  );
158
189
  }
159
- const toffsetHeaderId = getIdForHeader(rtpHeaders, "urn:ietf:params:rtp-hdrext:toffset")
160
- if(toffsetHeaderId > -1) {
190
+ const toffsetHeaderId = getIdForHeader(rtpHeaders, "urn:ietf:params:rtp-hdrext:toffset");
191
+ if (toffsetHeaderId > -1) {
161
192
  videoMedia.addExtension(
162
- toffsetHeaderId,
163
- "urn:ietf:params:rtp-hdrext:toffset",
193
+ toffsetHeaderId,
194
+ "urn:ietf:params:rtp-hdrext:toffset",
164
195
  );
165
196
  }
166
197
  const playoutDelayHeaderId = getIdForHeader(
167
- rtpHeaders,
168
- "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay",
169
- )
170
- if(playoutDelayHeaderId > -1) {
171
- videoMedia.addExtension(
172
- playoutDelayHeaderId,
198
+ rtpHeaders,
173
199
  "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay",
200
+ );
201
+ if (playoutDelayHeaderId > -1) {
202
+ videoMedia.addExtension(
203
+ playoutDelayHeaderId,
204
+ "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay",
174
205
  );
175
206
  }
176
207
  const transportWideCcHeaderId = getIdForHeader(
177
208
  rtpHeaders,
178
209
  "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01",
179
- )
180
- if(transportWideCcHeaderId > -1) {
181
- videoMedia.addExtension(
210
+ );
211
+ if (transportWideCcHeaderId > -1) {
212
+ videoMedia.addExtension(
182
213
  transportWideCcHeaderId,
183
214
  "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01",
184
- );
185
- }
215
+ );
216
+ }
186
217
 
187
218
  if (isChromium) {
188
219
  // if this is chromium, apply this header
189
- const videoOrientationHeaderId = getIdForHeader(rtpHeaders, "urn:3gpp:video-orientation")
190
- if(videoOrientationHeaderId > -1) {
220
+ const videoOrientationHeaderId = getIdForHeader(rtpHeaders, "urn:3gpp:video-orientation");
221
+ if (videoOrientationHeaderId > -1) {
191
222
  videoMedia.addExtension(
192
- videoOrientationHeaderId,
193
- "urn:3gpp:video-orientation",
223
+ videoOrientationHeaderId,
224
+ "urn:3gpp:video-orientation",
194
225
  );
195
226
  }
196
227
  }
197
228
 
198
- offer.medias = [audioMedia, videoMedia];
199
-
200
- const finalOffer = offer.toString().replace(' NaN ', ' 3984 ').replace(':actpass', ':active')
229
+ offer.medias = [ audioMedia, videoMedia ];
230
+
231
+ const finalOffer = offer.toString().replace(" NaN ", " 3984 ").replace(":actpass", ":active");
201
232
 
202
- console.log(finalOffer)
203
- const res = await this.ipc.request({type: "offer", clientId: (client as PionWebRtcClient).uniqueId!, sdp: finalOffer})
233
+ console.log(finalOffer);
234
+ const res = await this.ipc.request({
235
+ type: "offer",
236
+ clientId: (client as PionWebRtcClient).uniqueId!,
237
+ sdp: finalOffer,
238
+ });
204
239
 
205
- if(!res.sdp) return Promise.reject();
240
+ if (!res.sdp) return Promise.reject();
206
241
 
207
- const answerSdp = SDPInfo.parse(res.sdp)
242
+ const answerSdp = SDPInfo.parse(res.sdp);
208
243
 
209
244
  //console.log(res.sdp)
210
245
 
@@ -212,28 +247,31 @@ export class PionSignalingDelegate implements SignalingDelegate {
212
247
  const fingerprint = answerSdp.dtls.getHash() + " " + answerSdp.dtls.getFingerprint();
213
248
 
214
249
  const answer =
215
- `m=audio ${this.port} ICE/SDP\n` +
216
- `a=fingerprint:${fingerprint}\n` +
217
- `c=IN IP4 ${this.ip}\n` +
218
- `a=rtcp:${this.port}\n` +
219
- `a=ice-ufrag:${answerSdp.ice.getUfrag()}\n` +
220
- `a=ice-pwd:${answerSdp.ice.getPwd()}\n` +
221
- `a=fingerprint:${fingerprint}\n` +
222
- `a=candidate:1 1 ${candidate.getTransport()} ${candidate.getFoundation()} ${candidate.getAddress()} ${candidate.getPort()} typ host\n`;
223
-
224
- return Promise.resolve({sdp: answer, selectedVideoCodec: videoCodec.codec.toUpperCase()});
225
- }
226
-
227
- public onClientClose = (client: WebRtcClient<any>) => {
250
+ `m=audio ${this.port} ICE/SDP\n` +
251
+ `a=fingerprint:${fingerprint}\n` +
252
+ `c=IN IP4 ${this.ip}\n` +
253
+ `a=rtcp:${this.port}\n` +
254
+ `a=ice-ufrag:${answerSdp.ice.getUfrag()}\n` +
255
+ `a=ice-pwd:${answerSdp.ice.getPwd()}\n` +
256
+ `a=fingerprint:${fingerprint}\n` +
257
+ // https://datatracker.ietf.org/doc/html/rfc5245#section-15.1
258
+ // is component ID a valid property? was previoiusly hardcoded as 1
259
+ // do we even want to send a priority? prev hardcoded as 1
260
+ `a=candidate:${candidate.getFoundation()} ${candidate.getComponentId()} ${candidate.getTransport()} ${candidate.getPriority()} ${candidate.getAddress()} ${candidate.getPort()} typ host\n`;
261
+
262
+ return Promise.resolve({ sdp: answer, selectedVideoCodec: videoCodec.codec.toUpperCase() });
263
+ }
264
+
265
+ public onClientClose = (client: WebRtcClient<any>) => {
228
266
  this._rooms.get(client.voiceRoomId)?.onClientLeave(client);
229
- this.ipc.send({ type: "leave", clientId: (client as PionWebRtcClient).uniqueId! })
230
- }
267
+ this.ipc.send({ type: "leave", clientId: (client as PionWebRtcClient).uniqueId! });
268
+ };
231
269
 
232
- public updateSDP(offer: string): void {
270
+ public updateSDP(offer: string): void {
233
271
  throw new Error("Method not implemented.");
234
272
  }
235
273
 
236
- public getClientsForRtcServer(rtcServerId: string): Set<WebRtcClient<any>> {
274
+ public getClientsForRtcServer(rtcServerId: string): Set<WebRtcClient<any>> {
237
275
  if (!this._rooms.has(rtcServerId)) {
238
276
  return new Set();
239
277
  }
@@ -252,15 +290,16 @@ export class PionSignalingDelegate implements SignalingDelegate {
252
290
  }
253
291
 
254
292
  public createRoom(
255
- rtcServerId: string,
256
- type: "guild-voice" | "dm-voice" | "stream",
293
+ rtcServerId: string,
294
+ type: "guild-voice" | "dm-voice" | "stream",
257
295
  ): void {
258
296
  this._rooms.set(rtcServerId, new VoiceRoom(rtcServerId, type, this));
259
297
  }
260
298
 
261
- get ip(): string {
299
+ get ip(): string {
262
300
  return this._ip;
263
301
  }
302
+
264
303
  get port(): number {
265
304
  return this._port;
266
305
  }
@@ -270,10 +309,12 @@ export class PionSignalingDelegate implements SignalingDelegate {
270
309
  }
271
310
 
272
311
  public async stop(): Promise<void> {
312
+ this._isStopping = true;
273
313
  for (const room of this._rooms.values()) {
274
314
  await room.stop();
275
315
  }
276
316
  await this.ipc.close();
317
+ this._sfuProcess?.kill();
277
318
  return Promise.resolve();
278
319
  }
279
320
  }
@@ -1 +0,0 @@
1
- {"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.es2024.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2024.collection.d.ts","../node_modules/typescript/lib/lib.es2024.object.d.ts","../node_modules/typescript/lib/lib.es2024.promise.d.ts","../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2024.string.d.ts","../node_modules/typescript/lib/lib.esnext.array.d.ts","../node_modules/typescript/lib/lib.esnext.collection.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.promise.d.ts","../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/typescript/lib/lib.esnext.error.d.ts","../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@spacebarchat/spacebar-webrtc-types/index.d.ts","../src/PionWebRtcClient.ts","../src/VoiceRoom.ts","../node_modules/semantic-sdp/dist/SourceGroupInfo.d.ts","../node_modules/semantic-sdp/dist/RTCPFeedbackInfo.d.ts","../node_modules/semantic-sdp/dist/CodecInfo.d.ts","../node_modules/semantic-sdp/dist/TrackEncodingInfo.d.ts","../node_modules/semantic-sdp/dist/TrackInfo.d.ts","../node_modules/semantic-sdp/dist/StreamInfo.d.ts","../node_modules/semantic-sdp/dist/DirectionWay.d.ts","../node_modules/semantic-sdp/dist/RIDInfo.d.ts","../node_modules/semantic-sdp/dist/SimulcastStreamInfo.d.ts","../node_modules/semantic-sdp/dist/SimulcastInfo.d.ts","../node_modules/semantic-sdp/dist/DataChannelInfo.d.ts","../node_modules/semantic-sdp/dist/Direction.d.ts","../node_modules/semantic-sdp/dist/MediaInfo.d.ts","../node_modules/semantic-sdp/dist/CandidateInfo.d.ts","../node_modules/semantic-sdp/dist/ICEInfo.d.ts","../node_modules/semantic-sdp/dist/Setup.d.ts","../node_modules/semantic-sdp/dist/DTLSInfo.d.ts","../node_modules/semantic-sdp/dist/CryptoInfo.d.ts","../node_modules/semantic-sdp/dist/SDPInfo.d.ts","../node_modules/semantic-sdp/dist/SourceInfo.d.ts","../node_modules/semantic-sdp/dist/index.d.ts","../src/PionSignalingDelegate.ts","../src/IpcClient.ts","../src/index.ts","../node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts"],"fileIdsList":[[113,155,167],[113,152,155],[113,154,155],[155],[113,155,160,189],[113,155,156,161,167,168,175,186,197],[113,155,156,157,167,175],[113,155],[108,109,110,113,155],[113,155,158,198],[113,155,159,160,168,176],[113,155,160,186,194],[113,155,161,163,167,175],[113,154,155,162],[113,155,163,164],[113,155,165,167],[113,154,155,167],[113,155,167,168,169,186,197],[113,155,167,168,169,182,186,189],[113,150,155],[113,155,163,167,170,175,186,197],[113,155,167,168,170,171,175,186,194,197],[113,155,170,172,186,194,197],[111,112,113,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203],[113,155,167,173],[113,155,174,197,202],[113,155,163,167,175,186],[113,155,176],[113,155,177],[113,154,155,178],[113,152,153,154,155,156,157,158,159,160,161,162,163,164,165,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203],[113,155,180],[113,155,181],[113,155,167,182,183],[113,155,182,184,198,200],[113,155,167,186,187,189],[113,155,188,189],[113,155,186,187],[113,155,189],[113,155,190],[113,152,155,186,191],[113,155,167,192,193],[113,155,192,193],[113,155,160,175,186,194],[113,155,195],[113,155,175,196],[113,155,170,181,197],[113,155,160,198],[113,155,186,199],[113,155,174,200],[113,155,201],[113,155,167,169,178,186,189,197,200,202],[113,155,186,203],[104,113,155],[85,104,113,155],[99,104,113,155],[86,91,93,94,95,104,113,155],[90,104,113,155],[88,89,96,97,98,100,101,104,113,155],[90,92,104,113,155],[88,104,113,155],[86,104,113,155],[84,87,104,113,155],[84,85,86,87,88,89,91,92,93,94,95,96,97,98,99,100,101,102,103,113,155],[113,122,126,155,197],[113,122,155,186,197],[113,117,155],[113,119,122,155,194,197],[113,155,175,194],[113,155,204],[113,117,155,204],[113,119,122,155,175,197],[113,114,115,118,121,155,167,186,197],[113,122,129,155],[113,114,120,155],[113,122,143,144,155],[113,118,122,155,189,197,204],[113,143,155,204],[113,116,117,155,204],[113,122,155],[113,116,117,118,119,120,121,122,123,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,144,145,146,147,148,149,155],[113,122,137,155],[113,122,129,130,155],[113,120,122,130,131,155],[113,121,155],[113,114,117,122,155],[113,122,126,130,131,155],[113,126,155],[113,120,122,125,155,197],[113,114,119,122,129,155],[113,155,186],[113,117,122,143,155,202,204],[105,113,155,160,175,176],[81,82,83,104,106,113,155],[81,83,113,155,160,167],[82,105,113,155],[105,113,155]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"bebb37cd8ded8c1b0151d711c98f2160f8dbf603284caa230241dd21f7491c76","impliedFormat":1},{"version":"2a06ab6a77d63c70fbbbb3a139034fae21f1c817c080c62a111978d660a2209c","signature":"39285b1a7ee4cdfef9aacf01be5ea453217e97f2d81f8e247307a8f2d92f9f3c","impliedFormat":99},{"version":"50fade65bd7273ac8af9f3c3278f562d51743cea841d0655bc14bf291e834472","signature":"0c3fd69ce919e0799c1995a60e7a4911296924f405f43940dfb2576e895401fe","impliedFormat":99},{"version":"ab0f30abc6a08f22b7f0e64e9f89dcb2ec223a84cc1adae53f2de7d3e925e53c","impliedFormat":1},{"version":"2f4dc4aaf004d5592519cd644e7127850efacfb5e094aa37488a0e32dffa70fb","impliedFormat":1},{"version":"6aa273402008662cc2fbd3088fc5c4b50b6a754c285ccfc0e2de974dfe2fcfac","impliedFormat":1},{"version":"19cfa19e69f8c01cb1fb8f1f1301341b97b79946e70d8827b3a5db0f96455af9","impliedFormat":1},{"version":"8cdd81affe34c88906c136f38cd7d56cda6ee79bfa32a4891fc664f782973953","impliedFormat":1},{"version":"e704a123a781f8772f2cfd01eca922f3ce10c95cd4009c899978b40fa7bcb55f","impliedFormat":1},{"version":"1b945f39e90922712df8707e563730a7e7722ee02e920104cd0a8a6523148361","impliedFormat":1},{"version":"e14b1d4716e952ec75a3524db835b85465d18c3c9c1ee6e23e087297a2190838","impliedFormat":1},{"version":"1f12f3d94661123b4eccd25aed42b81f834ae2d9f0d686ed601faa46db19ebb8","impliedFormat":1},{"version":"361ca3f55e6bf5d439651c1e26fa08a9287d1b9b5093969b11215e1c7f2b7373","impliedFormat":1},{"version":"63526b1055d3c85be26b7f61efe3cf780ba25427ef6852503369f2976f30dd35","impliedFormat":1},{"version":"b414dc690527c2af9bb36d4b9cb0ab192a155841437f144021dc101b4ba81f04","impliedFormat":1},{"version":"9d52e2e21523a13e5a9656fd9c847a95512677ce200a16f605bbb8ac4cd46d6f","impliedFormat":1},{"version":"bb0e33c8ef13283e9f00fcc6f0e7af2bbaaebb8a2900c6cdfdaffae9eeeeaeb7","impliedFormat":1},{"version":"b868de165294a5c99672528fdf1ee66b81f2549c097e33d49c4d10454e26ad72","impliedFormat":1},{"version":"95a50fdfaf0ce83156078bf66c032785a216e1f49495e182b423e00d748b595c","impliedFormat":1},{"version":"e0d87f772ce1eb1c55af6e984b0ffd6042bf0882d4d8104b2dd2f5486680ab59","impliedFormat":1},{"version":"c21419bd8b2f0fe5a74513a1aac1f8d13e5ecb1f85633801d354ebe5a59cac26","impliedFormat":1},{"version":"5d562c71282c0d6c682fbe103763705ef4432eb00efd02b6350beb35a298d2ad","impliedFormat":1},{"version":"c80366fbee8cd9ea1e36ace20f7140c258bf869ae24817f5c6b5c6ba93dcaee5","impliedFormat":1},{"version":"571876c619dce518dda771de7737b2a3a08f113545fb12590f3666ea0b3bb62e","impliedFormat":1},{"version":"f555114c539d89b05ae316e4061aec3c04f9bad2585c2f1608a9b8a829f9ce7e","signature":"b26732cb968756c55ee860c8f552d8909097fa9244abe7532bded39291d52f82","impliedFormat":99},{"version":"1a330f9d49298d4de19757e824990ab6dd238b2209e82db65af5ac1993fe27a7","signature":"8fb291b96fbdd6b4b942e28d553a6233f38c9abd8a91b2336313c60f13fc4552","impliedFormat":99},{"version":"0c8bada894b27db3cee693af857225b657b9718da74b2fb11cd30f526a94446b","signature":"067b7473faa397cde64c0c892c4440ac0125a34ac8dd3d017f76cfaf8ee9fad6","impliedFormat":99},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"49a5a44f2e68241a1d2bd9ec894535797998841c09729e506a7cbfcaa40f2180","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"1ca84b44ad1d8e4576f24904d8b95dd23b94ea67e1575f89614ac90062fc67f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d586db0a09a9495ebb5dece28f54df9684bfbd6e1f568426ca153126dac4a40","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"567b7f607f400873151d7bc63a049514b53c3c00f5f56e9e95695d93b66a138e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3e58c4c18a031cbb17abec7a4ad0bd5ae9fc70c1f4ba1e7fb921ad87c504aca","impliedFormat":1},{"version":"84c1930e33d1bb12ad01bcbe11d656f9646bd21b2fb2afd96e8e10615a021aef","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4b87f767c7bc841511113c876a6b8bf1fd0cb0b718c888ad84478b372ec486b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d04e3640dd9eb67f7f1e5bd3d0bf96c784666f7aefc8ac1537af6f2d38d4c29","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"2bf469abae4cc9c0f340d4e05d9d26e37f936f9c8ca8f007a6534f109dcc77e4","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ada07543808f3b967624645a8e1ccd446f8b01ade47842acf1328aec899fed0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4c21aaa8257d7950a5b75a251d9075b6a371208fc948c9c8402f6690ef3b5b55","impliedFormat":1},{"version":"b5895e6353a5d708f55d8685c38a235c3a6d8138e374dee8ceb8ffde5aa8002a","impliedFormat":1},{"version":"54c4f21f578864961efc94e8f42bc893a53509e886370ec7dd602e0151b9266c","impliedFormat":1},{"version":"de735eca2c51dd8b860254e9fdb6d9ec19fe402dfe597c23090841ce3937cfc5","impliedFormat":1},{"version":"4ff41188773cbf465807dd2f7059c7494cbee5115608efc297383832a1150c43","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"5155da3047ef977944d791a2188ff6e6c225f6975cc1910ab7bb6838ab84cede","impliedFormat":1},{"version":"93f437e1398a4f06a984f441f7fa7a9f0535c04399619b5c22e0b87bdee182cb","impliedFormat":1},{"version":"afbe24ab0d74694372baa632ecb28bb375be53f3be53f9b07ecd7fc994907de5","impliedFormat":1},{"version":"e16d218a30f6a6810b57f7e968124eaa08c7bb366133ea34bbf01e7cd6b8c0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb8692dea24c27821f77e397272d9ed2eda0b95e4a75beb0fdda31081d15a8ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"5b6844ad931dcc1d3aca53268f4bd671428421464b1286746027aede398094f2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"0dbcebe2126d03936c70545e96a6e41007cf065be38a1ce4d32a39fcedefead4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1851a3b4db78664f83901bb9cac9e45e03a37bb5933cc5bf37e10bb7e91ab4eb","impliedFormat":1},{"version":"461e54289e6287e8494a0178ba18182acce51a02bca8dea219149bf2cf96f105","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"e31e51c55800014d926e3f74208af49cb7352803619855c89296074d1ecbb524","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"dfb96ba5177b68003deec9e773c47257da5c4c8a74053d8956389d832df72002","affectsGlobalScope":true,"impliedFormat":1},{"version":"92d3070580cf72b4bb80959b7f16ede9a3f39e6f4ef2ac87cfa4561844fdc69f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3dffd70e6375b872f0b4e152de4ae682d762c61a24881ecc5eb9f04c5caf76f","impliedFormat":1},{"version":"613deebaec53731ff6b74fe1a89f094b708033db6396b601df3e6d5ab0ec0a47","impliedFormat":1},{"version":"d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c","impliedFormat":1},{"version":"e56eb632f0281c9f8210eb8c86cc4839a427a4ffffcfd2a5e40b956050b3e042","affectsGlobalScope":true,"impliedFormat":1},{"version":"e8a979b8af001c9fc2e774e7809d233c8ca955a28756f52ee5dee88ccb0611d2","impliedFormat":1},{"version":"cac793cc47c29e26e4ac3601dcb00b4435ebed26203485790e44f2ad8b6ad847","impliedFormat":1}],"root":[82,83,[105,107]],"options":{"allowJs":true,"alwaysStrict":true,"checkJs":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":199,"noImplicitAny":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":99},"referencedMap":[[81,1],[152,2],[153,2],[154,3],[113,4],[155,5],[156,6],[157,7],[108,8],[111,9],[109,8],[110,8],[158,10],[159,11],[160,12],[161,13],[162,14],[163,15],[164,15],[166,8],[165,16],[167,17],[168,18],[169,19],[151,20],[112,8],[170,21],[171,22],[172,23],[204,24],[173,25],[174,26],[175,27],[176,28],[177,29],[178,30],[179,31],[180,32],[181,33],[182,34],[183,34],[184,35],[185,8],[186,36],[188,37],[187,38],[189,39],[190,40],[191,41],[192,42],[193,43],[194,44],[195,45],[196,46],[197,47],[198,48],[199,49],[200,50],[201,51],[202,52],[203,53],[97,54],[86,55],[101,54],[100,56],[94,54],[95,8],[90,8],[98,54],[96,57],[91,58],[85,54],[102,59],[99,8],[93,60],[92,54],[84,54],[103,54],[89,61],[87,62],[88,63],[104,64],[79,8],[80,8],[14,8],[13,8],[2,8],[15,8],[16,8],[17,8],[18,8],[19,8],[20,8],[21,8],[22,8],[3,8],[23,8],[24,8],[4,8],[25,8],[29,8],[26,8],[27,8],[28,8],[30,8],[31,8],[32,8],[5,8],[33,8],[34,8],[35,8],[36,8],[6,8],[40,8],[37,8],[38,8],[39,8],[41,8],[7,8],[42,8],[47,8],[48,8],[43,8],[44,8],[45,8],[46,8],[8,8],[52,8],[49,8],[50,8],[51,8],[53,8],[9,8],[54,8],[55,8],[56,8],[58,8],[57,8],[59,8],[60,8],[10,8],[61,8],[62,8],[63,8],[11,8],[64,8],[65,8],[66,8],[67,8],[68,8],[1,8],[69,8],[70,8],[12,8],[74,8],[72,8],[77,8],[76,8],[71,8],[75,8],[73,8],[78,8],[129,65],[139,66],[128,65],[149,67],[120,68],[119,69],[148,70],[142,71],[147,72],[122,73],[136,74],[121,75],[145,76],[117,77],[116,70],[146,78],[118,79],[123,80],[124,8],[127,80],[114,8],[150,81],[140,82],[131,83],[132,84],[134,85],[130,86],[133,87],[143,70],[125,88],[126,89],[135,90],[115,91],[138,82],[137,80],[141,8],[144,92],[106,93],[105,94],[82,95],[83,96],[107,97]],"version":"5.9.2"}