diff --git a/index.html b/index.html
index c88142fa2..aef6abe0f 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,8 @@
-
+
+
Vite App
diff --git a/package.json b/package.json
index eeba1248b..a6d708e94 100644
--- a/package.json
+++ b/package.json
@@ -2,8 +2,8 @@
"name": "web_hbb",
"version": "1.0.0",
"scripts": {
- "dev": "cp -rf node_modules/ogv/dist/* ogvjs/ && vite",
- "build": "cp node_modules/ogv/dist/* dist/ogvjs/ && tsc && vite build",
+ "dev": "curl -O https://raw.githubusercontent.com/rgov/js-theora-decoder/main/yuv-canvas-1.2.6.js; vite",
+ "build": "tsc && vite build",
"preview": "vite preview"
},
"devDependencies": {
diff --git a/src/codec.js b/src/codec.js
index 6f1381d96..213f2e8fc 100644
--- a/src/codec.js
+++ b/src/codec.js
@@ -19,13 +19,14 @@
OGVDecoderVideoAV1SIMDMTW: 'ogv-decoder-video-av1-simd-mt-wasm.js',
*/
-export function loadVp9() {
+export function loadVp9(callback) {
window.OGVLoader.loadClass(
"OGVDecoderVideoVP9W",
(videoCodecClass) => {
+ window.videoCodecClass = videoCodecClass;
videoCodecClass().then((decoder) => {
decoder.init(() => {
- onVp9Ready(decoder)
+ callback(decoder);
})
})
},
@@ -33,30 +34,16 @@ export function loadVp9() {
);
}
-export function loadOpus() {
+export function loadOpus(callback) {
window.OGVLoader.loadClass(
"OGVDecoderAudioOpusW",
(audioCodecClass) => {
audioCodecClass().then((decoder) => {
decoder.init(() => {
- onOpusReady(decoder)
+ callback(decoder);
})
})
},
{ worker: true }
);
-}
-
-async function onVp9Ready(decoder) {
- console.log("Vp9 decoder ready");
-
- /*
- decoder.processFrame(buffer, () => {
- player.drawFrame(decoder.frameBuffer)
- })
- */
-}
-
-async function onOpusReady(decoder) {
- console.log("Opus decoder ready");
}
\ No newline at end of file
diff --git a/src/connection.ts b/src/connection.ts
index ac3087190..a67fbd71a 100644
--- a/src/connection.ts
+++ b/src/connection.ts
@@ -1,16 +1,17 @@
-import Websock from './websock';
-import * as message from './message.js';
-import * as rendezvous from './rendezvous.js';
-import { loadVp9, loadOpus } from './codec';
+import Websock from "./websock";
+import * as message from "./message.js";
+import * as rendezvous from "./rendezvous.js";
+import { loadVp9, loadOpus } from "./codec";
import * as sha256 from "fast-sha256";
-import * as globals from './globals';
+import * as globals from "./globals";
const PORT = 21116;
-const HOST = 'rs-sg.rustdesk.com';
-const licenceKey = '';
-const SCHEMA = 'ws://';
+const HOST = "rs-sg.rustdesk.com";
+const licenceKey = "";
+const SCHEMA = "ws://";
type MsgboxCallback = (type: string, title: string, text: string) => void;
+type DrawCallback = (Uint8Array) => void;
export default class Connection {
_msgs: any[];
@@ -19,18 +20,30 @@ export default class Connection {
_id: string;
_hash: message.Hash | undefined;
_msgbox: MsgboxCallback | undefined;
+ _draw: DrawCallback | undefined;
_peerInfo: message.PeerInfo | undefined;
- _firstFrame: Boolean | undefined;
+ _firstFrame: Boolean | undefined;
+ _videoDecoder: any;
+ _audioDecoder: any;
constructor() {
this._msgs = [];
- this._id = '';
+ this._id = "";
this._interval = setInterval(() => {
while (this._msgs.length) {
this._ws?.sendMessage(this._msgs[0]);
this._msgs.splice(0, 1);
}
}, 1);
+ loadVp9((decoder: any) => {
+ this._videoDecoder = decoder;
+ console.log("vp9 loaded");
+ console.log(decoder);
+ });
+ loadOpus((decoder: any) => {
+ this._audioDecoder = decoder;
+ console.log("opus loaded");
+ });
}
async start(id: string) {
@@ -38,9 +51,9 @@ export default class Connection {
const ws = new Websock(uri);
this._ws = ws;
this._id = id;
- console.log(new Date() + ': Conntecting to rendezvoous server: ' + uri);
+ console.log(new Date() + ": Conntecting to rendezvoous server: " + uri);
await ws.open();
- console.log(new Date() + ': Connected to rendezvoous server');
+ console.log(new Date() + ": Connected to rendezvoous server");
const connType = rendezvous.ConnType.DEFAULT_CONN;
const natType = rendezvous.NatType.SYMMETRIC;
const punchHoleRequest = rendezvous.PunchHoleRequest.fromPartial({
@@ -52,24 +65,24 @@ export default class Connection {
ws.sendRendezvous({ punchHoleRequest });
const msg = ws.parseRendezvous(await ws.next());
ws.close();
- console.log(new Date() + ': Got relay response');
+ console.log(new Date() + ": Got relay response");
const phr = msg.punchHoleResponse;
const rr = msg.relayResponse;
if (phr) {
if (phr.failure != rendezvous.PunchHoleResponse_Failure.UNKNOWN) {
switch (phr?.failure) {
case rendezvous.PunchHoleResponse_Failure.ID_NOT_EXIST:
- this.msgbox('error', 'Error', 'ID does not exist');
+ this.msgbox("error", "Error", "ID does not exist");
break;
case rendezvous.PunchHoleResponse_Failure.OFFLINE:
- this.msgbox('error', 'Error', 'Remote desktop is offline');
+ this.msgbox("error", "Error", "Remote desktop is offline");
break;
case rendezvous.PunchHoleResponse_Failure.LICENSE_MISMATCH:
- this.msgbox('error', 'Error', 'Key mismatch');
+ this.msgbox("error", "Error", "Key mismatch");
break;
default:
if (phr?.otherFailure) {
- this.msgbox('error', 'Error', phr?.otherFailure);
+ this.msgbox("error", "Error", phr?.otherFailure);
}
}
}
@@ -87,10 +100,10 @@ export default class Connection {
uri = getDefaultUri(true);
}
const uuid = rr.uuid;
- console.log(new Date() + ': Connecting to relay server: ' + uri);
+ console.log(new Date() + ": Connecting to relay server: " + uri);
const ws = new Websock(uri);
await ws.open();
- console.log(new Date() + ': Connected to relay server');
+ console.log(new Date() + ": Connected to relay server");
this._ws = ws;
const requestRelay = rendezvous.RequestRelay.fromPartial({
licenceKey,
@@ -103,7 +116,7 @@ export default class Connection {
async secure(pk: Uint8Array | undefined) {
if (pk) {
- const RS_PK = 'OeVuKk5nlHiXp+APNn0Y3pC1Iwpwn44JGqrQCsWqmBw=';
+ const RS_PK = "OeVuKk5nlHiXp+APNn0Y3pC1Iwpwn44JGqrQCsWqmBw=";
try {
pk = await globals.verify(pk, RS_PK).catch();
if (pk?.length != 32) {
@@ -113,7 +126,10 @@ export default class Connection {
console.error(e);
pk = undefined;
}
- if (!pk) console.error('Handshake failed: invalid public key from rendezvous server');
+ if (!pk)
+ console.error(
+ "Handshake failed: invalid public key from rendezvous server"
+ );
}
if (!pk) {
// send an empty message out in case server is setting up secure and waiting for first message
@@ -138,7 +154,7 @@ export default class Connection {
return;
}
signedId = new TextDecoder().decode(signedId!);
- const tmp = signedId.split('\0');
+ const tmp = signedId.split("\0");
const id = tmp[0];
let theirPk = tmp[1];
if (id != this._id!) {
@@ -148,16 +164,21 @@ export default class Connection {
}
theirPk = globals.decodeBase64(theirPk);
if (theirPk.length != 32) {
- console.error("Handshake failed: invalid public box key length from peer");
+ console.error(
+ "Handshake failed: invalid public box key length from peer"
+ );
await this._ws?.sendMessage({});
return;
}
const [mySk, asymmetricValue] = globals.genBoxKeyPair();
const secretKey = globals.genSecretKey();
const symmetricValue = globals.seal(secretKey, theirPk, mySk);
- const publicKey = message.PublicKey.fromPartial({ asymmetricValue, symmetricValue });
+ const publicKey = message.PublicKey.fromPartial({
+ asymmetricValue,
+ symmetricValue,
+ });
await this._ws?.sendMessage({ publicKey });
- this._ws?.setSecretKey(secretKey)
+ this._ws?.setSecretKey(secretKey);
}
async msgLoop() {
@@ -175,13 +196,17 @@ export default class Connection {
} else if (msg?.loginResponse) {
const r = msg?.loginResponse;
if (r.error) {
- this.msgbox('error', 'Error', r.error);
+ this.msgbox("error", "Error", r.error);
} else if (r.peerInfo) {
this._peerInfo = r.peerInfo;
- this.msgbox('success', 'Successful', 'Connected, waiting for image...');
+ this.msgbox(
+ "success",
+ "Successful",
+ "Connected, waiting for image..."
+ );
}
} else if (msg?.videoFrame) {
- this.handleVideoFrame();
+ this.handleVideoFrame(msg?.videoFrame!);
}
}
}
@@ -194,6 +219,10 @@ export default class Connection {
this._msgbox?.(type_, title, text);
}
+ draw(frame: Uint8Array) {
+ this._draw?.(frame);
+ }
+
close() {
clearInterval(this._interval);
this._ws?.close();
@@ -203,8 +232,12 @@ export default class Connection {
this._msgbox = callback;
}
+ setDraw(callback: DrawCallback) {
+ this._draw = callback;
+ }
+
async login(password: string) {
- this.msgbox('connecting', 'Connecting...', 'Logging in...');
+ this.msgbox("connecting", "Connecting...", "Logging in...");
let salt = this._hash?.salt;
if (salt) {
let p = hash([password, salt]);
@@ -219,21 +252,34 @@ export default class Connection {
async _sendLoginMessage(password: Uint8Array | undefined = undefined) {
const loginRequest = message.LoginRequest.fromPartial({
username: this._id!,
- myId: 'web', // to-do
- myName: 'web', // to-do
+ myId: "web", // to-do
+ myName: "web", // to-do
password,
});
await this._ws?.sendMessage({ loginRequest });
}
- handleVideoFrame() {
+ handleVideoFrame(vf: message.VideoFrame) {
if (!this._firstFrame) {
- this.msgbox('', '', '');
+ this.msgbox("", "", "");
this._firstFrame = true;
}
+ if (vf.vp9s) {
+ let dec = this._videoDecoder;
+ vf.vp9s.frames.forEach((f) => {
+ dec.processFrame(f.data.buffer, (ok: any) => {
+ console.log(ok);
+ if (dec.frameBuffer) {
+ console.log(dec.frameBuffer);
+ this.draw(dec.frameBuffer);
+ }
+ });
+ });
+ }
}
}
+// @ts-ignore
async function testDelay() {
const ws = new Websock(getDefaultUri(false));
await ws.open();
@@ -241,17 +287,17 @@ async function testDelay() {
}
function getDefaultUri(isRelay: Boolean = false): string {
- const host = localStorage.getItem('host');
- return SCHEMA + (host || HOST) + ':' + (PORT + (isRelay ? 3 : 2));
+ const host = localStorage.getItem("host");
+ return SCHEMA + (host || HOST) + ":" + (PORT + (isRelay ? 3 : 2));
}
function getrUriFromRs(uri: string): string {
- if (uri.indexOf(':') > 0) {
- const tmp = uri.split(':');
+ if (uri.indexOf(":") > 0) {
+ const tmp = uri.split(":");
const port = parseInt(tmp[1]);
- uri = tmp[0] + ':' + (port + 2);
+ uri = tmp[0] + ":" + (port + 2);
} else {
- uri += ':' + (PORT + 3);
+ uri += ":" + (PORT + 3);
}
return SCHEMA + uri;
}
@@ -259,10 +305,10 @@ function getrUriFromRs(uri: string): string {
function hash(datas: (string | Uint8Array)[]): Uint8Array {
const hasher = new sha256.Hash();
datas.forEach((data) => {
- if (typeof data == 'string') {
+ if (typeof data == "string") {
data = new TextEncoder().encode(data);
}
return hasher.update(data);
});
return hasher.digest();
-}
\ No newline at end of file
+}
diff --git a/src/message.ts b/src/message.ts
index 9c0532dec..b85556fea 100644
--- a/src/message.ts
+++ b/src/message.ts
@@ -1,6 +1,6 @@
/* eslint-disable */
-import { util, configure, Writer, Reader } from "protobufjs/minimal";
-import * as Long from "long";
+import Long from "long";
+import _m0 from "protobufjs/minimal";
export const protobufPackage = "hbb";
@@ -983,7 +983,7 @@ function createBaseVP9(): VP9 {
}
export const VP9 = {
- encode(message: VP9, writer: Writer = Writer.create()): Writer {
+ encode(message: VP9, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
if (message.data.length !== 0) {
writer.uint32(10).bytes(message.data);
}
@@ -996,8 +996,8 @@ export const VP9 = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): VP9 {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): VP9 {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseVP9();
while (reader.pos < end) {
@@ -1055,15 +1055,15 @@ function createBaseVP9s(): VP9s {
}
export const VP9s = {
- encode(message: VP9s, writer: Writer = Writer.create()): Writer {
+ encode(message: VP9s, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
for (const v of message.frames) {
VP9.encode(v!, writer.uint32(10).fork()).ldelim();
}
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): VP9s {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): VP9s {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseVP9s();
while (reader.pos < end) {
@@ -1110,15 +1110,15 @@ function createBaseRGB(): RGB {
}
export const RGB = {
- encode(message: RGB, writer: Writer = Writer.create()): Writer {
+ encode(message: RGB, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
if (message.compress === true) {
writer.uint32(8).bool(message.compress);
}
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): RGB {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): RGB {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRGB();
while (reader.pos < end) {
@@ -1159,7 +1159,7 @@ function createBaseYUV(): YUV {
}
export const YUV = {
- encode(message: YUV, writer: Writer = Writer.create()): Writer {
+ encode(message: YUV, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
if (message.compress === true) {
writer.uint32(8).bool(message.compress);
}
@@ -1169,8 +1169,8 @@ export const YUV = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): YUV {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): YUV {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseYUV();
while (reader.pos < end) {
@@ -1217,7 +1217,10 @@ function createBaseVideoFrame(): VideoFrame {
}
export const VideoFrame = {
- encode(message: VideoFrame, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: VideoFrame,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.vp9s !== undefined) {
VP9s.encode(message.vp9s, writer.uint32(50).fork()).ldelim();
}
@@ -1230,8 +1233,8 @@ export const VideoFrame = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): VideoFrame {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): VideoFrame {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseVideoFrame();
while (reader.pos < end) {
@@ -1298,7 +1301,10 @@ function createBaseDisplayInfo(): DisplayInfo {
}
export const DisplayInfo = {
- encode(message: DisplayInfo, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: DisplayInfo,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.x !== 0) {
writer.uint32(8).sint32(message.x);
}
@@ -1320,8 +1326,8 @@ export const DisplayInfo = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): DisplayInfo {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): DisplayInfo {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseDisplayInfo();
while (reader.pos < end) {
@@ -1394,7 +1400,10 @@ function createBasePortForward(): PortForward {
}
export const PortForward = {
- encode(message: PortForward, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: PortForward,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.host !== "") {
writer.uint32(10).string(message.host);
}
@@ -1404,8 +1413,8 @@ export const PortForward = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): PortForward {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): PortForward {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePortForward();
while (reader.pos < end) {
@@ -1454,7 +1463,10 @@ function createBaseFileTransfer(): FileTransfer {
}
export const FileTransfer = {
- encode(message: FileTransfer, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileTransfer,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.dir !== "") {
writer.uint32(10).string(message.dir);
}
@@ -1464,8 +1476,8 @@ export const FileTransfer = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileTransfer {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileTransfer {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileTransfer();
while (reader.pos < end) {
@@ -1522,7 +1534,10 @@ function createBaseLoginRequest(): LoginRequest {
}
export const LoginRequest = {
- encode(message: LoginRequest, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: LoginRequest,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.username !== "") {
writer.uint32(10).string(message.username);
}
@@ -1553,8 +1568,8 @@ export const LoginRequest = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): LoginRequest {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): LoginRequest {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseLoginRequest();
while (reader.pos < end) {
@@ -1662,15 +1677,18 @@ function createBaseChatMessage(): ChatMessage {
}
export const ChatMessage = {
- encode(message: ChatMessage, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: ChatMessage,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.text !== "") {
writer.uint32(10).string(message.text);
}
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): ChatMessage {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): ChatMessage {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseChatMessage();
while (reader.pos < end) {
@@ -1721,7 +1739,10 @@ function createBasePeerInfo(): PeerInfo {
}
export const PeerInfo = {
- encode(message: PeerInfo, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: PeerInfo,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.username !== "") {
writer.uint32(10).string(message.username);
}
@@ -1746,8 +1767,8 @@ export const PeerInfo = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): PeerInfo {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): PeerInfo {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePeerInfo();
while (reader.pos < end) {
@@ -1836,7 +1857,10 @@ function createBaseLoginResponse(): LoginResponse {
}
export const LoginResponse = {
- encode(message: LoginResponse, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: LoginResponse,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.error !== undefined) {
writer.uint32(10).string(message.error);
}
@@ -1846,8 +1870,8 @@ export const LoginResponse = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): LoginResponse {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): LoginResponse {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseLoginResponse();
while (reader.pos < end) {
@@ -1904,7 +1928,10 @@ function createBaseMouseEvent(): MouseEvent {
}
export const MouseEvent = {
- encode(message: MouseEvent, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: MouseEvent,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.mask !== 0) {
writer.uint32(8).int32(message.mask);
}
@@ -1922,8 +1949,8 @@ export const MouseEvent = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): MouseEvent {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): MouseEvent {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseMouseEvent();
while (reader.pos < end) {
@@ -2005,7 +2032,10 @@ function createBaseKeyEvent(): KeyEvent {
}
export const KeyEvent = {
- encode(message: KeyEvent, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: KeyEvent,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.down === true) {
writer.uint32(8).bool(message.down);
}
@@ -2032,8 +2062,8 @@ export const KeyEvent = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): KeyEvent {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): KeyEvent {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseKeyEvent();
while (reader.pos < end) {
@@ -2137,7 +2167,10 @@ function createBaseCursorData(): CursorData {
}
export const CursorData = {
- encode(message: CursorData, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: CursorData,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).uint64(message.id);
}
@@ -2159,8 +2192,8 @@ export const CursorData = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): CursorData {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): CursorData {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseCursorData();
while (reader.pos < end) {
@@ -2238,7 +2271,10 @@ function createBaseCursorPosition(): CursorPosition {
}
export const CursorPosition = {
- encode(message: CursorPosition, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: CursorPosition,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.x !== 0) {
writer.uint32(8).sint32(message.x);
}
@@ -2248,8 +2284,8 @@ export const CursorPosition = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): CursorPosition {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): CursorPosition {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseCursorPosition();
while (reader.pos < end) {
@@ -2298,7 +2334,7 @@ function createBaseHash(): Hash {
}
export const Hash = {
- encode(message: Hash, writer: Writer = Writer.create()): Writer {
+ encode(message: Hash, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
if (message.salt !== "") {
writer.uint32(10).string(message.salt);
}
@@ -2308,8 +2344,8 @@ export const Hash = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): Hash {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): Hash {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseHash();
while (reader.pos < end) {
@@ -2356,7 +2392,10 @@ function createBaseClipboard(): Clipboard {
}
export const Clipboard = {
- encode(message: Clipboard, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: Clipboard,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.compress === true) {
writer.uint32(8).bool(message.compress);
}
@@ -2366,8 +2405,8 @@ export const Clipboard = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): Clipboard {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): Clipboard {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseClipboard();
while (reader.pos < end) {
@@ -2421,7 +2460,10 @@ function createBaseFileEntry(): FileEntry {
}
export const FileEntry = {
- encode(message: FileEntry, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileEntry,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.entryType !== 0) {
writer.uint32(8).int32(message.entryType);
}
@@ -2440,8 +2482,8 @@ export const FileEntry = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileEntry {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileEntry {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileEntry();
while (reader.pos < end) {
@@ -2514,7 +2556,10 @@ function createBaseFileDirectory(): FileDirectory {
}
export const FileDirectory = {
- encode(message: FileDirectory, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileDirectory,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
@@ -2527,8 +2572,8 @@ export const FileDirectory = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileDirectory {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileDirectory {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileDirectory();
while (reader.pos < end) {
@@ -2592,7 +2637,10 @@ function createBaseReadDir(): ReadDir {
}
export const ReadDir = {
- encode(message: ReadDir, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: ReadDir,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.path !== "") {
writer.uint32(10).string(message.path);
}
@@ -2602,8 +2650,8 @@ export const ReadDir = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): ReadDir {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): ReadDir {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseReadDir();
while (reader.pos < end) {
@@ -2653,7 +2701,10 @@ function createBaseReadAllFiles(): ReadAllFiles {
}
export const ReadAllFiles = {
- encode(message: ReadAllFiles, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: ReadAllFiles,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
@@ -2666,8 +2717,8 @@ export const ReadAllFiles = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): ReadAllFiles {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): ReadAllFiles {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseReadAllFiles();
while (reader.pos < end) {
@@ -2734,7 +2785,10 @@ function createBaseFileAction(): FileAction {
}
export const FileAction = {
- encode(message: FileAction, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileAction,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.readDir !== undefined) {
ReadDir.encode(message.readDir, writer.uint32(10).fork()).ldelim();
}
@@ -2777,8 +2831,8 @@ export const FileAction = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileAction {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileAction {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileAction();
while (reader.pos < end) {
@@ -2935,16 +2989,16 @@ function createBaseFileTransferCancel(): FileTransferCancel {
export const FileTransferCancel = {
encode(
message: FileTransferCancel,
- writer: Writer = Writer.create()
- ): Writer {
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileTransferCancel {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileTransferCancel {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileTransferCancel();
while (reader.pos < end) {
@@ -2992,7 +3046,10 @@ function createBaseFileResponse(): FileResponse {
}
export const FileResponse = {
- encode(message: FileResponse, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileResponse,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.dir !== undefined) {
FileDirectory.encode(message.dir, writer.uint32(10).fork()).ldelim();
}
@@ -3014,8 +3071,8 @@ export const FileResponse = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileResponse {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileResponse {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileResponse();
while (reader.pos < end) {
@@ -3104,7 +3161,10 @@ function createBaseFileTransferBlock(): FileTransferBlock {
}
export const FileTransferBlock = {
- encode(message: FileTransferBlock, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileTransferBlock,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
@@ -3120,8 +3180,8 @@ export const FileTransferBlock = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileTransferBlock {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileTransferBlock {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileTransferBlock();
while (reader.pos < end) {
@@ -3188,7 +3248,10 @@ function createBaseFileTransferError(): FileTransferError {
}
export const FileTransferError = {
- encode(message: FileTransferError, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileTransferError,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
@@ -3201,8 +3264,8 @@ export const FileTransferError = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileTransferError {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileTransferError {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileTransferError();
while (reader.pos < end) {
@@ -3260,8 +3323,8 @@ function createBaseFileTransferSendRequest(): FileTransferSendRequest {
export const FileTransferSendRequest = {
encode(
message: FileTransferSendRequest,
- writer: Writer = Writer.create()
- ): Writer {
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
@@ -3274,8 +3337,11 @@ export const FileTransferSendRequest = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileTransferSendRequest {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(
+ input: _m0.Reader | Uint8Array,
+ length?: number
+ ): FileTransferSendRequest {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileTransferSendRequest();
while (reader.pos < end) {
@@ -3333,7 +3399,10 @@ function createBaseFileTransferDone(): FileTransferDone {
}
export const FileTransferDone = {
- encode(message: FileTransferDone, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileTransferDone,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
@@ -3343,8 +3412,8 @@ export const FileTransferDone = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileTransferDone {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileTransferDone {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileTransferDone();
while (reader.pos < end) {
@@ -3396,8 +3465,8 @@ function createBaseFileTransferReceiveRequest(): FileTransferReceiveRequest {
export const FileTransferReceiveRequest = {
encode(
message: FileTransferReceiveRequest,
- writer: Writer = Writer.create()
- ): Writer {
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
@@ -3411,10 +3480,10 @@ export const FileTransferReceiveRequest = {
},
decode(
- input: Reader | Uint8Array,
+ input: _m0.Reader | Uint8Array,
length?: number
): FileTransferReceiveRequest {
- const reader = input instanceof Reader ? input : new Reader(input);
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileTransferReceiveRequest();
while (reader.pos < end) {
@@ -3477,7 +3546,10 @@ function createBaseFileRemoveDir(): FileRemoveDir {
}
export const FileRemoveDir = {
- encode(message: FileRemoveDir, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileRemoveDir,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
@@ -3490,8 +3562,8 @@ export const FileRemoveDir = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileRemoveDir {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileRemoveDir {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileRemoveDir();
while (reader.pos < end) {
@@ -3546,7 +3618,10 @@ function createBaseFileRemoveFile(): FileRemoveFile {
}
export const FileRemoveFile = {
- encode(message: FileRemoveFile, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileRemoveFile,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
@@ -3559,8 +3634,8 @@ export const FileRemoveFile = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileRemoveFile {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileRemoveFile {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileRemoveFile();
while (reader.pos < end) {
@@ -3616,7 +3691,10 @@ function createBaseFileDirCreate(): FileDirCreate {
}
export const FileDirCreate = {
- encode(message: FileDirCreate, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FileDirCreate,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== 0) {
writer.uint32(8).int32(message.id);
}
@@ -3626,8 +3704,8 @@ export const FileDirCreate = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FileDirCreate {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FileDirCreate {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFileDirCreate();
while (reader.pos < end) {
@@ -3676,7 +3754,10 @@ function createBaseSwitchDisplay(): SwitchDisplay {
}
export const SwitchDisplay = {
- encode(message: SwitchDisplay, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: SwitchDisplay,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.display !== 0) {
writer.uint32(8).int32(message.display);
}
@@ -3695,8 +3776,8 @@ export const SwitchDisplay = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): SwitchDisplay {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): SwitchDisplay {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseSwitchDisplay();
while (reader.pos < end) {
@@ -3764,7 +3845,10 @@ function createBasePermissionInfo(): PermissionInfo {
}
export const PermissionInfo = {
- encode(message: PermissionInfo, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: PermissionInfo,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.permission !== 0) {
writer.uint32(8).int32(message.permission);
}
@@ -3774,8 +3858,8 @@ export const PermissionInfo = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): PermissionInfo {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): PermissionInfo {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePermissionInfo();
while (reader.pos < end) {
@@ -3836,7 +3920,10 @@ function createBaseOptionMessage(): OptionMessage {
}
export const OptionMessage = {
- encode(message: OptionMessage, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: OptionMessage,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.imageQuality !== 0) {
writer.uint32(8).int32(message.imageQuality);
}
@@ -3864,8 +3951,8 @@ export const OptionMessage = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): OptionMessage {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): OptionMessage {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseOptionMessage();
while (reader.pos < end) {
@@ -3980,7 +4067,10 @@ function createBaseOptionResponse(): OptionResponse {
}
export const OptionResponse = {
- encode(message: OptionResponse, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: OptionResponse,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.opt !== undefined) {
OptionMessage.encode(message.opt, writer.uint32(10).fork()).ldelim();
}
@@ -3990,8 +4080,8 @@ export const OptionResponse = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): OptionResponse {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): OptionResponse {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseOptionResponse();
while (reader.pos < end) {
@@ -4044,7 +4134,10 @@ function createBaseTestDelay(): TestDelay {
}
export const TestDelay = {
- encode(message: TestDelay, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: TestDelay,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.time !== 0) {
writer.uint32(8).int64(message.time);
}
@@ -4054,8 +4147,8 @@ export const TestDelay = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): TestDelay {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): TestDelay {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseTestDelay();
while (reader.pos < end) {
@@ -4107,7 +4200,10 @@ function createBasePublicKey(): PublicKey {
}
export const PublicKey = {
- encode(message: PublicKey, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: PublicKey,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.asymmetricValue.length !== 0) {
writer.uint32(10).bytes(message.asymmetricValue);
}
@@ -4117,8 +4213,8 @@ export const PublicKey = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): PublicKey {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): PublicKey {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePublicKey();
while (reader.pos < end) {
@@ -4181,15 +4277,18 @@ function createBaseSignedId(): SignedId {
}
export const SignedId = {
- encode(message: SignedId, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: SignedId,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id.length !== 0) {
writer.uint32(10).bytes(message.id);
}
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): SignedId {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): SignedId {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseSignedId();
while (reader.pos < end) {
@@ -4233,7 +4332,10 @@ function createBaseAudioFormat(): AudioFormat {
}
export const AudioFormat = {
- encode(message: AudioFormat, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: AudioFormat,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.sampleRate !== 0) {
writer.uint32(8).uint32(message.sampleRate);
}
@@ -4243,8 +4345,8 @@ export const AudioFormat = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): AudioFormat {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): AudioFormat {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseAudioFormat();
while (reader.pos < end) {
@@ -4295,15 +4397,18 @@ function createBaseAudioFrame(): AudioFrame {
}
export const AudioFrame = {
- encode(message: AudioFrame, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: AudioFrame,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.data.length !== 0) {
writer.uint32(10).bytes(message.data);
}
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): AudioFrame {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): AudioFrame {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseAudioFrame();
while (reader.pos < end) {
@@ -4360,7 +4465,7 @@ function createBaseMisc(): Misc {
}
export const Misc = {
- encode(message: Misc, writer: Writer = Writer.create()): Writer {
+ encode(message: Misc, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
if (message.chatMessage !== undefined) {
ChatMessage.encode(
message.chatMessage,
@@ -4403,8 +4508,8 @@ export const Misc = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): Misc {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): Misc {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseMisc();
while (reader.pos < end) {
@@ -4565,7 +4670,10 @@ function createBaseMessage(): Message {
}
export const Message = {
- encode(message: Message, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: Message,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.signedId !== undefined) {
SignedId.encode(message.signedId, writer.uint32(26).fork()).ldelim();
}
@@ -4632,8 +4740,8 @@ export const Message = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): Message {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): Message {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseMessage();
while (reader.pos < end) {
@@ -4957,11 +5065,9 @@ function longToNumber(long: Long): number {
return long.toNumber();
}
-// If you get a compile-error about 'Constructor and ... have no overlap',
-// add '--ts_proto_opt=esModuleInterop=true' as a flag when calling 'protoc'.
-if (util.Long !== Long) {
- util.Long = Long as any;
- configure();
+if (_m0.util.Long !== Long) {
+ _m0.util.Long = Long as any;
+ _m0.configure();
}
function isSet(value: any): boolean {
diff --git a/src/rendezvous.ts b/src/rendezvous.ts
index 9af1a4a44..0ac3b1542 100644
--- a/src/rendezvous.ts
+++ b/src/rendezvous.ts
@@ -1,6 +1,6 @@
/* eslint-disable */
-import { util, configure, Writer, Reader } from "protobufjs/minimal";
-import * as Long from "long";
+import Long from "long";
+import _m0 from "protobufjs/minimal";
export const protobufPackage = "hbb";
@@ -357,7 +357,10 @@ function createBaseRegisterPeer(): RegisterPeer {
}
export const RegisterPeer = {
- encode(message: RegisterPeer, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: RegisterPeer,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== "") {
writer.uint32(10).string(message.id);
}
@@ -367,8 +370,8 @@ export const RegisterPeer = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): RegisterPeer {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): RegisterPeer {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRegisterPeer();
while (reader.pos < end) {
@@ -419,16 +422,19 @@ function createBaseRegisterPeerResponse(): RegisterPeerResponse {
export const RegisterPeerResponse = {
encode(
message: RegisterPeerResponse,
- writer: Writer = Writer.create()
- ): Writer {
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.requestPk === true) {
writer.uint32(16).bool(message.requestPk);
}
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): RegisterPeerResponse {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(
+ input: _m0.Reader | Uint8Array,
+ length?: number
+ ): RegisterPeerResponse {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRegisterPeerResponse();
while (reader.pos < end) {
@@ -471,7 +477,10 @@ function createBasePunchHoleRequest(): PunchHoleRequest {
}
export const PunchHoleRequest = {
- encode(message: PunchHoleRequest, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: PunchHoleRequest,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== "") {
writer.uint32(10).string(message.id);
}
@@ -487,8 +496,8 @@ export const PunchHoleRequest = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): PunchHoleRequest {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): PunchHoleRequest {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePunchHoleRequest();
while (reader.pos < end) {
@@ -551,7 +560,10 @@ function createBasePunchHole(): PunchHole {
}
export const PunchHole = {
- encode(message: PunchHole, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: PunchHole,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.socketAddr.length !== 0) {
writer.uint32(10).bytes(message.socketAddr);
}
@@ -564,8 +576,8 @@ export const PunchHole = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): PunchHole {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): PunchHole {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePunchHole();
while (reader.pos < end) {
@@ -627,15 +639,18 @@ function createBaseTestNatRequest(): TestNatRequest {
}
export const TestNatRequest = {
- encode(message: TestNatRequest, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: TestNatRequest,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.serial !== 0) {
writer.uint32(8).int32(message.serial);
}
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): TestNatRequest {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): TestNatRequest {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseTestNatRequest();
while (reader.pos < end) {
@@ -678,7 +693,10 @@ function createBaseTestNatResponse(): TestNatResponse {
}
export const TestNatResponse = {
- encode(message: TestNatResponse, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: TestNatResponse,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.port !== 0) {
writer.uint32(8).int32(message.port);
}
@@ -688,8 +706,8 @@ export const TestNatResponse = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): TestNatResponse {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): TestNatResponse {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseTestNatResponse();
while (reader.pos < end) {
@@ -748,7 +766,10 @@ function createBasePunchHoleSent(): PunchHoleSent {
}
export const PunchHoleSent = {
- encode(message: PunchHoleSent, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: PunchHoleSent,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.socketAddr.length !== 0) {
writer.uint32(10).bytes(message.socketAddr);
}
@@ -767,8 +788,8 @@ export const PunchHoleSent = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): PunchHoleSent {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): PunchHoleSent {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePunchHoleSent();
while (reader.pos < end) {
@@ -842,7 +863,10 @@ function createBaseRegisterPk(): RegisterPk {
}
export const RegisterPk = {
- encode(message: RegisterPk, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: RegisterPk,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== "") {
writer.uint32(10).string(message.id);
}
@@ -858,8 +882,8 @@ export const RegisterPk = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): RegisterPk {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): RegisterPk {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRegisterPk();
while (reader.pos < end) {
@@ -930,16 +954,16 @@ function createBaseRegisterPkResponse(): RegisterPkResponse {
export const RegisterPkResponse = {
encode(
message: RegisterPkResponse,
- writer: Writer = Writer.create()
- ): Writer {
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.result !== 0) {
writer.uint32(8).int32(message.result);
}
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): RegisterPkResponse {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): RegisterPkResponse {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRegisterPkResponse();
while (reader.pos < end) {
@@ -993,7 +1017,10 @@ function createBasePunchHoleResponse(): PunchHoleResponse {
}
export const PunchHoleResponse = {
- encode(message: PunchHoleResponse, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: PunchHoleResponse,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.socketAddr.length !== 0) {
writer.uint32(10).bytes(message.socketAddr);
}
@@ -1018,8 +1045,8 @@ export const PunchHoleResponse = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): PunchHoleResponse {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): PunchHoleResponse {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePunchHoleResponse();
while (reader.pos < end) {
@@ -1119,7 +1146,10 @@ function createBaseConfigUpdate(): ConfigUpdate {
}
export const ConfigUpdate = {
- encode(message: ConfigUpdate, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: ConfigUpdate,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.serial !== 0) {
writer.uint32(8).int32(message.serial);
}
@@ -1129,8 +1159,8 @@ export const ConfigUpdate = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): ConfigUpdate {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): ConfigUpdate {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseConfigUpdate();
while (reader.pos < end) {
@@ -1193,7 +1223,10 @@ function createBaseRequestRelay(): RequestRelay {
}
export const RequestRelay = {
- encode(message: RequestRelay, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: RequestRelay,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.id !== "") {
writer.uint32(10).string(message.id);
}
@@ -1218,8 +1251,8 @@ export const RequestRelay = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): RequestRelay {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): RequestRelay {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRequestRelay();
while (reader.pos < end) {
@@ -1313,7 +1346,10 @@ function createBaseRelayResponse(): RelayResponse {
}
export const RelayResponse = {
- encode(message: RelayResponse, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: RelayResponse,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.socketAddr.length !== 0) {
writer.uint32(10).bytes(message.socketAddr);
}
@@ -1338,8 +1374,8 @@ export const RelayResponse = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): RelayResponse {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): RelayResponse {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRelayResponse();
while (reader.pos < end) {
@@ -1429,15 +1465,18 @@ function createBaseSoftwareUpdate(): SoftwareUpdate {
}
export const SoftwareUpdate = {
- encode(message: SoftwareUpdate, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: SoftwareUpdate,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.url !== "") {
writer.uint32(10).string(message.url);
}
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): SoftwareUpdate {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): SoftwareUpdate {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseSoftwareUpdate();
while (reader.pos < end) {
@@ -1480,7 +1519,10 @@ function createBaseFetchLocalAddr(): FetchLocalAddr {
}
export const FetchLocalAddr = {
- encode(message: FetchLocalAddr, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: FetchLocalAddr,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.socketAddr.length !== 0) {
writer.uint32(10).bytes(message.socketAddr);
}
@@ -1490,8 +1532,8 @@ export const FetchLocalAddr = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): FetchLocalAddr {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): FetchLocalAddr {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseFetchLocalAddr();
while (reader.pos < end) {
@@ -1552,7 +1594,10 @@ function createBaseLocalAddr(): LocalAddr {
}
export const LocalAddr = {
- encode(message: LocalAddr, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: LocalAddr,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.socketAddr.length !== 0) {
writer.uint32(10).bytes(message.socketAddr);
}
@@ -1571,8 +1616,8 @@ export const LocalAddr = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): LocalAddr {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): LocalAddr {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseLocalAddr();
while (reader.pos < end) {
@@ -1658,7 +1703,10 @@ function createBasePeerDiscovery(): PeerDiscovery {
}
export const PeerDiscovery = {
- encode(message: PeerDiscovery, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: PeerDiscovery,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.cmd !== "") {
writer.uint32(10).string(message.cmd);
}
@@ -1683,8 +1731,8 @@ export const PeerDiscovery = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): PeerDiscovery {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): PeerDiscovery {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBasePeerDiscovery();
while (reader.pos < end) {
@@ -1781,7 +1829,10 @@ function createBaseRendezvousMessage(): RendezvousMessage {
}
export const RendezvousMessage = {
- encode(message: RendezvousMessage, writer: Writer = Writer.create()): Writer {
+ encode(
+ message: RendezvousMessage,
+ writer: _m0.Writer = _m0.Writer.create()
+ ): _m0.Writer {
if (message.registerPeer !== undefined) {
RegisterPeer.encode(
message.registerPeer,
@@ -1878,8 +1929,8 @@ export const RendezvousMessage = {
return writer;
},
- decode(input: Reader | Uint8Array, length?: number): RendezvousMessage {
- const reader = input instanceof Reader ? input : new Reader(input);
+ decode(input: _m0.Reader | Uint8Array, length?: number): RendezvousMessage {
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseRendezvousMessage();
while (reader.pos < end) {
@@ -2240,11 +2291,9 @@ export type Exact = P extends Builtin
never
>;
-// If you get a compile-error about 'Constructor and ... have no overlap',
-// add '--ts_proto_opt=esModuleInterop=true' as a flag when calling 'protoc'.
-if (util.Long !== Long) {
- util.Long = Long as any;
- configure();
+if (_m0.util.Long !== Long) {
+ _m0.util.Long = Long as any;
+ _m0.configure();
}
function isSet(value: any): boolean {
diff --git a/src/ui.js b/src/ui.js
index f3839cb4b..de602904b 100644
--- a/src/ui.js
+++ b/src/ui.js
@@ -21,8 +21,11 @@ if (app) {
+
`;
+ let player;
+
document.body.onload = () => {
const host = document.querySelector('#host');
host.value = localStorage.getItem('host');
@@ -30,6 +33,7 @@ if (app) {
id.value = localStorage.getItem('id');
const key = document.querySelector('#key');
key.value = localStorage.getItem('key');
+ player = YUVCanvas.attach(document.getElementById("player"))
};
window.connect = () => {
@@ -42,6 +46,9 @@ if (app) {
const func = async () => {
const conn = globals.newConn();
conn.setMsgbox(msgbox);
+ conn.setDraw((f) => {
+ player.drawFrame(f);
+ });
document.querySelector('div#status').style.display = 'block';
document.querySelector('div#connect').style.display = 'none';
document.querySelector('div#text').innerHTML = 'Connecting ...';
diff --git a/ts_proto.py b/ts_proto.py
index d1627f51f..5f8932731 100644
--- a/ts_proto.py
+++ b/ts_proto.py
@@ -5,16 +5,16 @@ import os
path = os.path.abspath(os.path.join(os.getcwd(), '..', 'hbb', 'libs', 'hbb_common', 'protos'))
if os.name == 'nt':
- cmd = r'protoc --plugin=protoc-gen-ts_proto=.\node_modules\.bin\protoc-gen-ts_proto.cmd -I "%s" --ts_proto_out=./src/ rendezvous.proto'%path
+ cmd = r'protoc --ts_proto_opt=esModuleInterop=true --plugin=protoc-gen-ts_proto=.\node_modules\.bin\protoc-gen-ts_proto.cmd -I "%s" --ts_proto_out=./src/ rendezvous.proto'%path
print(cmd)
os.system(cmd)
- cmd = r'protoc --plugin=protoc-gen-ts_proto=.\node_modules\.bin\protoc-gen-ts_proto.cmd -I "%s" --ts_proto_out=./src/ message.proto'%path
+ cmd = r'protoc --ts_proto_opt=esModuleInterop=true --plugin=protoc-gen-ts_proto=.\node_modules\.bin\protoc-gen-ts_proto.cmd -I "%s" --ts_proto_out=./src/ message.proto'%path
print(cmd)
os.system(cmd)
else:
- cmd = r'protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto -I "%s" --ts_proto_out=./src/ rendezvous.proto'%path
+ cmd = r'protoc --ts_proto_opt=esModuleInterop=true --plugin=./node_modules/.bin/protoc-gen-ts_proto -I "%s" --ts_proto_out=./src/ rendezvous.proto'%path
print(cmd)
os.system(cmd)
- cmd = r'protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto -I "%s" --ts_proto_out=./src/ message.proto'%path
+ cmd = r'protoc --ts_proto_opt=esModuleInterop=true --plugin=./node_modules/.bin/protoc-gen-ts_proto -I "%s" --ts_proto_out=./src/ message.proto'%path
print(cmd)
- os.system(cmd)
\ No newline at end of file
+ os.system(cmd)