esp-idf-provisioning-web 0.0.1 → 0.0.3

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.
package/README.md CHANGED
@@ -13,7 +13,7 @@ A TypeScript SDK for provisioning ESP32 devices from web browsers using the ESP-
13
13
  - [x] Scan APs
14
14
  - [x] Provision device status monitoring
15
15
  - [ ] Reset and re-provisioning
16
- - [ ] Custom endpoints
16
+ - [x] Custom endpoints
17
17
 
18
18
  ## Browser Compatibility
19
19
 
@@ -35,6 +35,13 @@ export declare class ESPDevice implements ESPDeviceInterface {
35
35
  * @returns WiFi status
36
36
  */
37
37
  fetchWifiStatus(): Promise<ESPWifiStatus>;
38
+ /**
39
+ * Send custom data to device
40
+ * @param path - Data endpoint path
41
+ * @param data - Data to send
42
+ * @returns Response data from device
43
+ */
44
+ sendData(path: string, data: Uint8Array): Promise<Uint8Array>;
38
45
  /**
39
46
  * Disconnect from device
40
47
  */
@@ -55,12 +62,5 @@ export declare class ESPDevice implements ESPDeviceInterface {
55
62
  * Initialize transport layer based on transport type
56
63
  */
57
64
  private initializeTransport;
58
- /**
59
- * Send custom data to device
60
- * @param path - Data endpoint path
61
- * @param data - Data to send
62
- * @returns Response data from device
63
- */
64
- private sendData;
65
65
  }
66
66
  //# sourceMappingURL=ESPDevice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ESPDevice.d.ts","sourceRoot":"","sources":["../src/ESPDevice.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAwBjB;;GAEG;AACH,qBAAa,SAAU,YAAW,kBAAkB;IAClD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,aAAa,CAAC,CAAY;IAClC,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC;;;OAGG;gBACS,MAAM,EAAE,eAAe,GAAG,GAAG;IAIzC;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAiC1C;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhE;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC;IAc/C;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACH,SAAS,IAAI,eAAe,GAAG,GAAG;IAIlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;YACW,gBAAgB;IAkB9B;;OAEG;YACW,mBAAmB;IAajC;;;;;OAKG;YACW,QAAQ;CAevB"}
1
+ {"version":3,"file":"ESPDevice.d.ts","sourceRoot":"","sources":["../src/ESPDevice.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAwBjB;;GAEG;AACH,qBAAa,SAAU,YAAW,kBAAkB;IAClD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,aAAa,CAAC,CAAY;IAClC,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC;;;OAGG;gBACS,MAAM,EAAE,eAAe,GAAG,GAAG;IAIzC;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAiC1C;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhE;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC;IAc/C;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBnE;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACH,SAAS,IAAI,eAAe,GAAG,GAAG;IAIlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;YACW,gBAAgB;IAkB9B;;OAEG;YACW,mBAAmB;CAYlC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class Transport{}function bytesToHex(i){return Array.from(i).map(n=>n.toString(16).padStart(2,"0")).join("")}function stringToBytes(i){return new TextEncoder().encode(i)}function bytesToString(i){return new TextDecoder().decode(i)}class BLETransport extends Transport{constructor(n,t,e){super(),this.connected=!1,this.device=n,this.serviceUUID=t,this.nuLookup=e}async connect(){var n;if(!this.isConnected())try{if(this.server=await((n=this.device.gatt)==null?void 0:n.connect()),!this.server)throw new Error("Failed to connect to GATT server");try{const e=await this.server.getPrimaryServices(this.serviceUUID);if(e.length>1){const r=e.find(o=>o.uuid===this.serviceUUID);if(!r)throw new Error(`Service with UUID ${this.serviceUUID} not found`);this.service=r}else this.service=e[0]}catch(e){throw new Error(`Failed to get primary services: ${e}`)}const t=await this.service.getCharacteristics();for(const e of t){const r=await e.getDescriptors();for(const o of r){if(o.uuid.slice(4,8)!=="2901")continue;const s=await o.readValue();this.nuLookup.set(bytesToString(new Uint8Array(s.buffer)).toLowerCase(),e.uuid)}}console.debug("BLE discovered characteristics:",this.nuLookup),this.connected=!0}catch(t){throw this.connected=!1,new Error(`BLE connection failed: ${t}`)}}disconnect(){var n;(n=this.server)!=null&&n.connected&&this.server.disconnect(),this.server=void 0,this.service=void 0,this.connected=!1}async sendData(n,t){var c;if(!this.isConnected())throw new Error("Not connected to device");const e=this.nuLookup.get(n.toLowerCase());if(!e)throw new Error(`Characteristic UUID for endpoint ${n} not found`);const r=await((c=this.service)==null?void 0:c.getCharacteristic(e));if(!r)throw new Error(`Characteristic for UUID ${e} not found`);const o=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);await r.writeValueWithResponse(o);const s=await r.readValue();return new Uint8Array(s.buffer)}isConnected(){var n;return this.connected&&((n=this.server)==null?void 0:n.connected)===!0}getDevice(){return this.device}}class SoftAPTransport extends Transport{constructor(n){super(),this.connected=!1,this.baseUrl=n}async connect(){try{const n=await fetch(`${this.baseUrl}/proto-ver`,{method:"GET",mode:"cors"});if(!n.ok)throw new Error(`HTTP ${n.status}`);this.connected=!0}catch(n){throw this.connected=!1,new Error(`SoftAP connection failed. Please ensure you are connected to the device's WiFi network. Error: ${n}`)}}disconnect(){this.connected=!1}async sendData(n,t){if(!this.connected)throw new Error("Not connected to device");try{const e=await fetch(`${this.baseUrl}/${n}`,{method:"POST",headers:{Accept:"text/plain","Content-Type":"application/x-www-form-urlencoded"},body:t.buffer,mode:"cors"});if(!e.ok)throw new Error(`HTTP ${e.status}`);const r=await e.arrayBuffer();return new Uint8Array(r)}catch(e){throw new Error(`SoftAP communication failed: ${e}`)}}isConnected(){return this.connected}setBaseUrl(n){this.baseUrl=n}getBaseUrl(){return this.baseUrl}}class Security{}var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},indexMinimal={},minimal$1={},aspromise=asPromise;function asPromise(i,n){for(var t=new Array(arguments.length-1),e=0,r=2,o=!0;r<arguments.length;)t[e++]=arguments[r++];return new Promise(function(c,u){t[e]=function(a){if(o)if(o=!1,a)u(a);else{for(var f=new Array(arguments.length-1),d=0;d<f.length;)f[d++]=arguments[d];c.apply(null,f)}};try{i.apply(n||null,t)}catch(l){o&&(o=!1,u(l))}})}var base64$1={};(function(i){var n=i;n.length=function(c){var u=c.length;if(!u)return 0;for(var l=0;--u%4>1&&c.charAt(u)==="=";)++l;return Math.ceil(c.length*3)/4-l};for(var t=new Array(64),e=new Array(123),r=0;r<64;)e[t[r]=r<26?r+65:r<52?r+71:r<62?r-4:r-59|43]=r++;n.encode=function(c,u,l){for(var a=null,f=[],d=0,y=0,p;u<l;){var h=c[u++];switch(y){case 0:f[d++]=t[h>>2],p=(h&3)<<4,y=1;break;case 1:f[d++]=t[p|h>>4],p=(h&15)<<2,y=2;break;case 2:f[d++]=t[p|h>>6],f[d++]=t[h&63],y=0;break}d>8191&&((a||(a=[])).push(String.fromCharCode.apply(String,f)),d=0)}return y&&(f[d++]=t[p],f[d++]=61,y===1&&(f[d++]=61)),a?(d&&a.push(String.fromCharCode.apply(String,f.slice(0,d))),a.join("")):String.fromCharCode.apply(String,f.slice(0,d))};var o="invalid encoding";n.decode=function(c,u,l){for(var a=l,f=0,d,y=0;y<c.length;){var p=c.charCodeAt(y++);if(p===61&&f>1)break;if((p=e[p])===void 0)throw Error(o);switch(f){case 0:d=p,f=1;break;case 1:u[l++]=d<<2|(p&48)>>4,d=p,f=2;break;case 2:u[l++]=(d&15)<<4|(p&60)>>2,d=p,f=3;break;case 3:u[l++]=(d&3)<<6|p,f=0;break}}if(f===1)throw Error(o);return l-a},n.test=function(c){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(c)}})(base64$1);var eventemitter=EventEmitter;function EventEmitter(){this._listeners={}}EventEmitter.prototype.on=function(n,t,e){return(this._listeners[n]||(this._listeners[n]=[])).push({fn:t,ctx:e||this}),this};EventEmitter.prototype.off=function(n,t){if(n===void 0)this._listeners={};else if(t===void 0)this._listeners[n]=[];else for(var e=this._listeners[n],r=0;r<e.length;)e[r].fn===t?e.splice(r,1):++r;return this};EventEmitter.prototype.emit=function(n){var t=this._listeners[n];if(t){for(var e=[],r=1;r<arguments.length;)e.push(arguments[r++]);for(r=0;r<t.length;)t[r].fn.apply(t[r++].ctx,e)}return this};var float=factory(factory);function factory(i){return typeof Float32Array<"u"?function(){var n=new Float32Array([-0]),t=new Uint8Array(n.buffer),e=t[3]===128;function r(u,l,a){n[0]=u,l[a]=t[0],l[a+1]=t[1],l[a+2]=t[2],l[a+3]=t[3]}function o(u,l,a){n[0]=u,l[a]=t[3],l[a+1]=t[2],l[a+2]=t[1],l[a+3]=t[0]}i.writeFloatLE=e?r:o,i.writeFloatBE=e?o:r;function s(u,l){return t[0]=u[l],t[1]=u[l+1],t[2]=u[l+2],t[3]=u[l+3],n[0]}function c(u,l){return t[3]=u[l],t[2]=u[l+1],t[1]=u[l+2],t[0]=u[l+3],n[0]}i.readFloatLE=e?s:c,i.readFloatBE=e?c:s}():function(){function n(e,r,o,s){var c=r<0?1:0;if(c&&(r=-r),r===0)e(1/r>0?0:2147483648,o,s);else if(isNaN(r))e(2143289344,o,s);else if(r>34028234663852886e22)e((c<<31|2139095040)>>>0,o,s);else if(r<11754943508222875e-54)e((c<<31|Math.round(r/1401298464324817e-60))>>>0,o,s);else{var u=Math.floor(Math.log(r)/Math.LN2),l=Math.round(r*Math.pow(2,-u)*8388608)&8388607;e((c<<31|u+127<<23|l)>>>0,o,s)}}i.writeFloatLE=n.bind(null,writeUintLE),i.writeFloatBE=n.bind(null,writeUintBE);function t(e,r,o){var s=e(r,o),c=(s>>31)*2+1,u=s>>>23&255,l=s&8388607;return u===255?l?NaN:c*(1/0):u===0?c*1401298464324817e-60*l:c*Math.pow(2,u-150)*(l+8388608)}i.readFloatLE=t.bind(null,readUintLE),i.readFloatBE=t.bind(null,readUintBE)}(),typeof Float64Array<"u"?function(){var n=new Float64Array([-0]),t=new Uint8Array(n.buffer),e=t[7]===128;function r(u,l,a){n[0]=u,l[a]=t[0],l[a+1]=t[1],l[a+2]=t[2],l[a+3]=t[3],l[a+4]=t[4],l[a+5]=t[5],l[a+6]=t[6],l[a+7]=t[7]}function o(u,l,a){n[0]=u,l[a]=t[7],l[a+1]=t[6],l[a+2]=t[5],l[a+3]=t[4],l[a+4]=t[3],l[a+5]=t[2],l[a+6]=t[1],l[a+7]=t[0]}i.writeDoubleLE=e?r:o,i.writeDoubleBE=e?o:r;function s(u,l){return t[0]=u[l],t[1]=u[l+1],t[2]=u[l+2],t[3]=u[l+3],t[4]=u[l+4],t[5]=u[l+5],t[6]=u[l+6],t[7]=u[l+7],n[0]}function c(u,l){return t[7]=u[l],t[6]=u[l+1],t[5]=u[l+2],t[4]=u[l+3],t[3]=u[l+4],t[2]=u[l+5],t[1]=u[l+6],t[0]=u[l+7],n[0]}i.readDoubleLE=e?s:c,i.readDoubleBE=e?c:s}():function(){function n(e,r,o,s,c,u){var l=s<0?1:0;if(l&&(s=-s),s===0)e(0,c,u+r),e(1/s>0?0:2147483648,c,u+o);else if(isNaN(s))e(0,c,u+r),e(2146959360,c,u+o);else if(s>17976931348623157e292)e(0,c,u+r),e((l<<31|2146435072)>>>0,c,u+o);else{var a;if(s<22250738585072014e-324)a=s/5e-324,e(a>>>0,c,u+r),e((l<<31|a/4294967296)>>>0,c,u+o);else{var f=Math.floor(Math.log(s)/Math.LN2);f===1024&&(f=1023),a=s*Math.pow(2,-f),e(a*4503599627370496>>>0,c,u+r),e((l<<31|f+1023<<20|a*1048576&1048575)>>>0,c,u+o)}}}i.writeDoubleLE=n.bind(null,writeUintLE,0,4),i.writeDoubleBE=n.bind(null,writeUintBE,4,0);function t(e,r,o,s,c){var u=e(s,c+r),l=e(s,c+o),a=(l>>31)*2+1,f=l>>>20&2047,d=4294967296*(l&1048575)+u;return f===2047?d?NaN:a*(1/0):f===0?a*5e-324*d:a*Math.pow(2,f-1075)*(d+4503599627370496)}i.readDoubleLE=t.bind(null,readUintLE,0,4),i.readDoubleBE=t.bind(null,readUintBE,4,0)}(),i}function writeUintLE(i,n,t){n[t]=i&255,n[t+1]=i>>>8&255,n[t+2]=i>>>16&255,n[t+3]=i>>>24}function writeUintBE(i,n,t){n[t]=i>>>24,n[t+1]=i>>>16&255,n[t+2]=i>>>8&255,n[t+3]=i&255}function readUintLE(i,n){return(i[n]|i[n+1]<<8|i[n+2]<<16|i[n+3]<<24)>>>0}function readUintBE(i,n){return(i[n]<<24|i[n+1]<<16|i[n+2]<<8|i[n+3])>>>0}var inquire_1=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(i){}return null}var utf8$2={};(function(i){var n=i;n.length=function(e){for(var r=0,o=0,s=0;s<e.length;++s)o=e.charCodeAt(s),o<128?r+=1:o<2048?r+=2:(o&64512)===55296&&(e.charCodeAt(s+1)&64512)===56320?(++s,r+=4):r+=3;return r},n.read=function(e,r,o){var s=o-r;if(s<1)return"";for(var c=null,u=[],l=0,a;r<o;)a=e[r++],a<128?u[l++]=a:a>191&&a<224?u[l++]=(a&31)<<6|e[r++]&63:a>239&&a<365?(a=((a&7)<<18|(e[r++]&63)<<12|(e[r++]&63)<<6|e[r++]&63)-65536,u[l++]=55296+(a>>10),u[l++]=56320+(a&1023)):u[l++]=(a&15)<<12|(e[r++]&63)<<6|e[r++]&63,l>8191&&((c||(c=[])).push(String.fromCharCode.apply(String,u)),l=0);return c?(l&&c.push(String.fromCharCode.apply(String,u.slice(0,l))),c.join("")):String.fromCharCode.apply(String,u.slice(0,l))},n.write=function(e,r,o){for(var s=o,c,u,l=0;l<e.length;++l)c=e.charCodeAt(l),c<128?r[o++]=c:c<2048?(r[o++]=c>>6|192,r[o++]=c&63|128):(c&64512)===55296&&((u=e.charCodeAt(l+1))&64512)===56320?(c=65536+((c&1023)<<10)+(u&1023),++l,r[o++]=c>>18|240,r[o++]=c>>12&63|128,r[o++]=c>>6&63|128,r[o++]=c&63|128):(r[o++]=c>>12|224,r[o++]=c>>6&63|128,r[o++]=c&63|128);return o-s}})(utf8$2);var pool_1=pool;function pool(i,n,t){var e=t||8192,r=e>>>1,o=null,s=e;return function(u){if(u<1||u>r)return i(u);s+u>e&&(o=i(e),s=0);var l=n.call(o,s,s+=u);return s&7&&(s=(s|7)+1),l}}var longbits,hasRequiredLongbits;function requireLongbits(){if(hasRequiredLongbits)return longbits;hasRequiredLongbits=1,longbits=n;var i=requireMinimal();function n(o,s){this.lo=o>>>0,this.hi=s>>>0}var t=n.zero=new n(0,0);t.toNumber=function(){return 0},t.zzEncode=t.zzDecode=function(){return this},t.length=function(){return 1};var e=n.zeroHash="\0\0\0\0\0\0\0\0";n.fromNumber=function(s){if(s===0)return t;var c=s<0;c&&(s=-s);var u=s>>>0,l=(s-u)/4294967296>>>0;return c&&(l=~l>>>0,u=~u>>>0,++u>4294967295&&(u=0,++l>4294967295&&(l=0))),new n(u,l)},n.from=function(s){if(typeof s=="number")return n.fromNumber(s);if(i.isString(s))if(i.Long)s=i.Long.fromString(s);else return n.fromNumber(parseInt(s,10));return s.low||s.high?new n(s.low>>>0,s.high>>>0):t},n.prototype.toNumber=function(s){if(!s&&this.hi>>>31){var c=~this.lo+1>>>0,u=~this.hi>>>0;return c||(u=u+1>>>0),-(c+u*4294967296)}return this.lo+this.hi*4294967296},n.prototype.toLong=function(s){return i.Long?new i.Long(this.lo|0,this.hi|0,!!s):{low:this.lo|0,high:this.hi|0,unsigned:!!s}};var r=String.prototype.charCodeAt;return n.fromHash=function(s){return s===e?t:new n((r.call(s,0)|r.call(s,1)<<8|r.call(s,2)<<16|r.call(s,3)<<24)>>>0,(r.call(s,4)|r.call(s,5)<<8|r.call(s,6)<<16|r.call(s,7)<<24)>>>0)},n.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},n.prototype.zzEncode=function(){var s=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^s)>>>0,this.lo=(this.lo<<1^s)>>>0,this},n.prototype.zzDecode=function(){var s=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^s)>>>0,this.hi=(this.hi>>>1^s)>>>0,this},n.prototype.length=function(){var s=this.lo,c=(this.lo>>>28|this.hi<<4)>>>0,u=this.hi>>>24;return u===0?c===0?s<16384?s<128?1:2:s<2097152?3:4:c<16384?c<128?5:6:c<2097152?7:8:u<128?9:10},longbits}var hasRequiredMinimal;function requireMinimal(){return hasRequiredMinimal||(hasRequiredMinimal=1,function(i){var n=i;n.asPromise=aspromise,n.base64=base64$1,n.EventEmitter=eventemitter,n.float=float,n.inquire=inquire_1,n.utf8=utf8$2,n.pool=pool_1,n.LongBits=requireLongbits(),n.isNode=!!(typeof commonjsGlobal<"u"&&commonjsGlobal&&commonjsGlobal.process&&commonjsGlobal.process.versions&&commonjsGlobal.process.versions.node),n.global=n.isNode&&commonjsGlobal||typeof window<"u"&&window||typeof self<"u"&&self||commonjsGlobal,n.emptyArray=Object.freeze?Object.freeze([]):[],n.emptyObject=Object.freeze?Object.freeze({}):{},n.isInteger=Number.isInteger||function(o){return typeof o=="number"&&isFinite(o)&&Math.floor(o)===o},n.isString=function(o){return typeof o=="string"||o instanceof String},n.isObject=function(o){return o&&typeof o=="object"},n.isset=n.isSet=function(o,s){var c=o[s];return c!=null&&o.hasOwnProperty(s)?typeof c!="object"||(Array.isArray(c)?c.length:Object.keys(c).length)>0:!1},n.Buffer=function(){try{var r=n.inquire("buffer").Buffer;return r.prototype.utf8Write?r:null}catch{return null}}(),n._Buffer_from=null,n._Buffer_allocUnsafe=null,n.newBuffer=function(o){return typeof o=="number"?n.Buffer?n._Buffer_allocUnsafe(o):new n.Array(o):n.Buffer?n._Buffer_from(o):typeof Uint8Array>"u"?o:new Uint8Array(o)},n.Array=typeof Uint8Array<"u"?Uint8Array:Array,n.Long=n.global.dcodeIO&&n.global.dcodeIO.Long||n.global.Long||n.inquire("long"),n.key2Re=/^true|false|0|1$/,n.key32Re=/^-?(?:0|[1-9][0-9]*)$/,n.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,n.longToHash=function(o){return o?n.LongBits.from(o).toHash():n.LongBits.zeroHash},n.longFromHash=function(o,s){var c=n.LongBits.fromHash(o);return n.Long?n.Long.fromBits(c.lo,c.hi,s):c.toNumber(!!s)};function t(r,o,s){for(var c=Object.keys(o),u=0;u<c.length;++u)(r[c[u]]===void 0||!s)&&(r[c[u]]=o[c[u]]);return r}n.merge=t,n.lcFirst=function(o){return o.charAt(0).toLowerCase()+o.substring(1)};function e(r){function o(s,c){if(!(this instanceof o))return new o(s,c);Object.defineProperty(this,"message",{get:function(){return s}}),Error.captureStackTrace?Error.captureStackTrace(this,o):Object.defineProperty(this,"stack",{value:new Error().stack||""}),c&&t(this,c)}return o.prototype=Object.create(Error.prototype,{constructor:{value:o,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return r},set:void 0,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),o}n.newError=e,n.ProtocolError=e("ProtocolError"),n.oneOfGetter=function(o){for(var s={},c=0;c<o.length;++c)s[o[c]]=1;return function(){for(var u=Object.keys(this),l=u.length-1;l>-1;--l)if(s[u[l]]===1&&this[u[l]]!==void 0&&this[u[l]]!==null)return u[l]}},n.oneOfSetter=function(o){return function(s){for(var c=0;c<o.length;++c)o[c]!==s&&delete this[o[c]]}},n.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},n._configure=function(){var r=n.Buffer;if(!r){n._Buffer_from=n._Buffer_allocUnsafe=null;return}n._Buffer_from=r.from!==Uint8Array.from&&r.from||function(s,c){return new r(s,c)},n._Buffer_allocUnsafe=r.allocUnsafe||function(s){return new r(s)}}}(minimal$1)),minimal$1}var writer=Writer$1,util$4=requireMinimal(),BufferWriter$1,LongBits$1=util$4.LongBits,base64=util$4.base64,utf8$1=util$4.utf8;function Op(i,n,t){this.fn=i,this.len=n,this.next=void 0,this.val=t}function noop(){}function State(i){this.head=i.head,this.tail=i.tail,this.len=i.len,this.next=i.states}function Writer$1(){this.len=0,this.head=new Op(noop,0,0),this.tail=this.head,this.states=null}var create$1=function i(){return util$4.Buffer?function(){return(Writer$1.create=function(){return new BufferWriter$1})()}:function(){return new Writer$1}};Writer$1.create=create$1();Writer$1.alloc=function i(n){return new util$4.Array(n)};util$4.Array!==Array&&(Writer$1.alloc=util$4.pool(Writer$1.alloc,util$4.Array.prototype.subarray));Writer$1.prototype._push=function i(n,t,e){return this.tail=this.tail.next=new Op(n,t,e),this.len+=t,this};function writeByte(i,n,t){n[t]=i&255}function writeVarint32(i,n,t){for(;i>127;)n[t++]=i&127|128,i>>>=7;n[t]=i}function VarintOp(i,n){this.len=i,this.next=void 0,this.val=n}VarintOp.prototype=Object.create(Op.prototype);VarintOp.prototype.fn=writeVarint32;Writer$1.prototype.uint32=function i(n){return this.len+=(this.tail=this.tail.next=new VarintOp((n=n>>>0)<128?1:n<16384?2:n<2097152?3:n<268435456?4:5,n)).len,this};Writer$1.prototype.int32=function i(n){return n<0?this._push(writeVarint64,10,LongBits$1.fromNumber(n)):this.uint32(n)};Writer$1.prototype.sint32=function i(n){return this.uint32((n<<1^n>>31)>>>0)};function writeVarint64(i,n,t){for(;i.hi;)n[t++]=i.lo&127|128,i.lo=(i.lo>>>7|i.hi<<25)>>>0,i.hi>>>=7;for(;i.lo>127;)n[t++]=i.lo&127|128,i.lo=i.lo>>>7;n[t++]=i.lo}Writer$1.prototype.uint64=function i(n){var t=LongBits$1.from(n);return this._push(writeVarint64,t.length(),t)};Writer$1.prototype.int64=Writer$1.prototype.uint64;Writer$1.prototype.sint64=function i(n){var t=LongBits$1.from(n).zzEncode();return this._push(writeVarint64,t.length(),t)};Writer$1.prototype.bool=function i(n){return this._push(writeByte,1,n?1:0)};function writeFixed32(i,n,t){n[t]=i&255,n[t+1]=i>>>8&255,n[t+2]=i>>>16&255,n[t+3]=i>>>24}Writer$1.prototype.fixed32=function i(n){return this._push(writeFixed32,4,n>>>0)};Writer$1.prototype.sfixed32=Writer$1.prototype.fixed32;Writer$1.prototype.fixed64=function i(n){var t=LongBits$1.from(n);return this._push(writeFixed32,4,t.lo)._push(writeFixed32,4,t.hi)};Writer$1.prototype.sfixed64=Writer$1.prototype.fixed64;Writer$1.prototype.float=function i(n){return this._push(util$4.float.writeFloatLE,4,n)};Writer$1.prototype.double=function i(n){return this._push(util$4.float.writeDoubleLE,8,n)};var writeBytes=util$4.Array.prototype.set?function i(n,t,e){t.set(n,e)}:function i(n,t,e){for(var r=0;r<n.length;++r)t[e+r]=n[r]};Writer$1.prototype.bytes=function i(n){var t=n.length>>>0;if(!t)return this._push(writeByte,1,0);if(util$4.isString(n)){var e=Writer$1.alloc(t=base64.length(n));base64.decode(n,e,0),n=e}return this.uint32(t)._push(writeBytes,t,n)};Writer$1.prototype.string=function i(n){var t=utf8$1.length(n);return t?this.uint32(t)._push(utf8$1.write,t,n):this._push(writeByte,1,0)};Writer$1.prototype.fork=function i(){return this.states=new State(this),this.head=this.tail=new Op(noop,0,0),this.len=0,this};Writer$1.prototype.reset=function i(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Op(noop,0,0),this.len=0),this};Writer$1.prototype.ldelim=function i(){var n=this.head,t=this.tail,e=this.len;return this.reset().uint32(e),e&&(this.tail.next=n.next,this.tail=t,this.len+=e),this};Writer$1.prototype.finish=function i(){for(var n=this.head.next,t=this.constructor.alloc(this.len),e=0;n;)n.fn(n.val,t,e),e+=n.len,n=n.next;return t};Writer$1._configure=function(i){BufferWriter$1=i,Writer$1.create=create$1(),BufferWriter$1._configure()};var writer_buffer=BufferWriter,Writer=writer;(BufferWriter.prototype=Object.create(Writer.prototype)).constructor=BufferWriter;var util$3=requireMinimal();function BufferWriter(){Writer.call(this)}BufferWriter._configure=function(){BufferWriter.alloc=util$3._Buffer_allocUnsafe,BufferWriter.writeBytesBuffer=util$3.Buffer&&util$3.Buffer.prototype instanceof Uint8Array&&util$3.Buffer.prototype.set.name==="set"?function(n,t,e){t.set(n,e)}:function(n,t,e){if(n.copy)n.copy(t,e,0,n.length);else for(var r=0;r<n.length;)t[e++]=n[r++]}};BufferWriter.prototype.bytes=function i(n){util$3.isString(n)&&(n=util$3._Buffer_from(n,"base64"));var t=n.length>>>0;return this.uint32(t),t&&this._push(BufferWriter.writeBytesBuffer,t,n),this};function writeStringBuffer(i,n,t){i.length<40?util$3.utf8.write(i,n,t):n.utf8Write?n.utf8Write(i,t):n.write(i,t)}BufferWriter.prototype.string=function i(n){var t=util$3.Buffer.byteLength(n);return this.uint32(t),t&&this._push(writeStringBuffer,t,n),this};BufferWriter._configure();var reader=Reader$1,util$2=requireMinimal(),BufferReader$1,LongBits=util$2.LongBits,utf8=util$2.utf8;function indexOutOfRange(i,n){return RangeError("index out of range: "+i.pos+" + "+(n||1)+" > "+i.len)}function Reader$1(i){this.buf=i,this.pos=0,this.len=i.length}var create_array=typeof Uint8Array<"u"?function i(n){if(n instanceof Uint8Array||Array.isArray(n))return new Reader$1(n);throw Error("illegal buffer")}:function i(n){if(Array.isArray(n))return new Reader$1(n);throw Error("illegal buffer")},create=function i(){return util$2.Buffer?function(t){return(Reader$1.create=function(r){return util$2.Buffer.isBuffer(r)?new BufferReader$1(r):create_array(r)})(t)}:create_array};Reader$1.create=create();Reader$1.prototype._slice=util$2.Array.prototype.subarray||util$2.Array.prototype.slice;Reader$1.prototype.uint32=function i(){var n=4294967295;return function(){if(n=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(n=(n|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(n=(n|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(n=(n|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(n=(n|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return n;if((this.pos+=5)>this.len)throw this.pos=this.len,indexOutOfRange(this,10);return n}}();Reader$1.prototype.int32=function i(){return this.uint32()|0};Reader$1.prototype.sint32=function i(){var n=this.uint32();return n>>>1^-(n&1)|0};function readLongVarint(){var i=new LongBits(0,0),n=0;if(this.len-this.pos>4){for(;n<4;++n)if(i.lo=(i.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return i;if(i.lo=(i.lo|(this.buf[this.pos]&127)<<28)>>>0,i.hi=(i.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return i;n=0}else{for(;n<3;++n){if(this.pos>=this.len)throw indexOutOfRange(this);if(i.lo=(i.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return i}return i.lo=(i.lo|(this.buf[this.pos++]&127)<<n*7)>>>0,i}if(this.len-this.pos>4){for(;n<5;++n)if(i.hi=(i.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return i}else for(;n<5;++n){if(this.pos>=this.len)throw indexOutOfRange(this);if(i.hi=(i.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return i}throw Error("invalid varint encoding")}Reader$1.prototype.bool=function i(){return this.uint32()!==0};function readFixed32_end(i,n){return(i[n-4]|i[n-3]<<8|i[n-2]<<16|i[n-1]<<24)>>>0}Reader$1.prototype.fixed32=function i(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)};Reader$1.prototype.sfixed32=function i(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)|0};function readFixed64(){if(this.pos+8>this.len)throw indexOutOfRange(this,8);return new LongBits(readFixed32_end(this.buf,this.pos+=4),readFixed32_end(this.buf,this.pos+=4))}Reader$1.prototype.float=function i(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);var n=util$2.float.readFloatLE(this.buf,this.pos);return this.pos+=4,n};Reader$1.prototype.double=function i(){if(this.pos+8>this.len)throw indexOutOfRange(this,4);var n=util$2.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,n};Reader$1.prototype.bytes=function i(){var n=this.uint32(),t=this.pos,e=this.pos+n;if(e>this.len)throw indexOutOfRange(this,n);if(this.pos+=n,Array.isArray(this.buf))return this.buf.slice(t,e);if(t===e){var r=util$2.Buffer;return r?r.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,t,e)};Reader$1.prototype.string=function i(){var n=this.bytes();return utf8.read(n,0,n.length)};Reader$1.prototype.skip=function i(n){if(typeof n=="number"){if(this.pos+n>this.len)throw indexOutOfRange(this,n);this.pos+=n}else do if(this.pos>=this.len)throw indexOutOfRange(this);while(this.buf[this.pos++]&128);return this};Reader$1.prototype.skipType=function(i){switch(i){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(i=this.uint32()&7)!==4;)this.skipType(i);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+i+" at offset "+this.pos)}return this};Reader$1._configure=function(i){BufferReader$1=i,Reader$1.create=create(),BufferReader$1._configure();var n=util$2.Long?"toLong":"toNumber";util$2.merge(Reader$1.prototype,{int64:function(){return readLongVarint.call(this)[n](!1)},uint64:function(){return readLongVarint.call(this)[n](!0)},sint64:function(){return readLongVarint.call(this).zzDecode()[n](!1)},fixed64:function(){return readFixed64.call(this)[n](!0)},sfixed64:function(){return readFixed64.call(this)[n](!1)}})};var reader_buffer=BufferReader,Reader=reader;(BufferReader.prototype=Object.create(Reader.prototype)).constructor=BufferReader;var util$1=requireMinimal();function BufferReader(i){Reader.call(this,i)}BufferReader._configure=function(){util$1.Buffer&&(BufferReader.prototype._slice=util$1.Buffer.prototype.slice)};BufferReader.prototype.string=function i(){var n=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+n,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+n,this.len))};BufferReader._configure();var rpc={},service=Service,util=requireMinimal();(Service.prototype=Object.create(util.EventEmitter.prototype)).constructor=Service;function Service(i,n,t){if(typeof i!="function")throw TypeError("rpcImpl must be a function");util.EventEmitter.call(this),this.rpcImpl=i,this.requestDelimited=!!n,this.responseDelimited=!!t}Service.prototype.rpcCall=function i(n,t,e,r,o){if(!r)throw TypeError("request must be specified");var s=this;if(!o)return util.asPromise(i,s,n,t,e,r);if(!s.rpcImpl){setTimeout(function(){o(Error("already ended"))},0);return}try{return s.rpcImpl(n,t[s.requestDelimited?"encodeDelimited":"encode"](r).finish(),function(u,l){if(u)return s.emit("error",u,n),o(u);if(l===null){s.end(!0);return}if(!(l instanceof e))try{l=e[s.responseDelimited?"decodeDelimited":"decode"](l)}catch(a){return s.emit("error",a,n),o(a)}return s.emit("data",l,n),o(null,l)})}catch(c){s.emit("error",c,n),setTimeout(function(){o(c)},0);return}};Service.prototype.end=function i(n){return this.rpcImpl&&(n||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this};(function(i){var n=i;n.Service=service})(rpc);var roots={};(function(i){var n=i;n.build="minimal",n.Writer=writer,n.BufferWriter=writer_buffer,n.Reader=reader,n.BufferReader=reader_buffer,n.util=requireMinimal(),n.rpc=rpc,n.roots=roots,n.configure=t;function t(){n.util._configure(),n.Writer._configure(n.BufferWriter),n.Reader._configure(n.BufferReader)}t()})(indexMinimal);var minimal=indexMinimal;const $Reader=minimal.Reader,$Writer=minimal.Writer,$util=minimal.util,$root=minimal.roots.default||(minimal.roots.default={}),Status=$root.Status=(()=>{const i={},n=Object.create(i);return n[i[0]="Success"]=0,n[i[1]="InvalidSecScheme"]=1,n[i[2]="InvalidProto"]=2,n[i[3]="TooManySessions"]=3,n[i[4]="InvalidArgument"]=4,n[i[5]="InternalError"]=5,n[i[6]="CryptoError"]=6,n[i[7]="InvalidSession"]=7,n})(),S0SessionCmd=$root.S0SessionCmd=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S0SessionCmd;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.S0SessionCmd?t:new $root.S0SessionCmd},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S0SessionCmd"},i})();$root.S0SessionResp=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S0SessionResp;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return null},i.fromObject=function(t){if(t instanceof $root.S0SessionResp)return t;let e=new $root.S0SessionResp;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S0SessionResp"},i})();const Sec0MsgType=$root.Sec0MsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="S0_Session_Command"]=0,n[i[1]="S0_Session_Response"]=1,n})(),Sec0Payload=$root.Sec0Payload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.sc=null,i.prototype.sr=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["sc","sr"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.sc!=null&&Object.hasOwnProperty.call(e,"sc")&&$root.S0SessionCmd.encode(e.sc,r.uint32(162).fork()).ldelim(),e.sr!=null&&Object.hasOwnProperty.call(e,"sr")&&$root.S0SessionResp.encode(e.sr,r.uint32(170).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.Sec0Payload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 20:{c.sc=$root.S0SessionCmd.decode(e,e.uint32());break}case 21:{c.sr=$root.S0SessionResp.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:break}if(e.sc!=null&&e.hasOwnProperty("sc")){r.payload=1;{let o=$root.S0SessionCmd.verify(e.sc);if(o)return"sc."+o}}if(e.sr!=null&&e.hasOwnProperty("sr")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.S0SessionResp.verify(e.sr);if(o)return"sr."+o}}return null},i.fromObject=function(e){if(e instanceof $root.Sec0Payload)return e;let r=new $root.Sec0Payload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"S0_Session_Command":case 0:r.msg=0;break;case"S0_Session_Response":case 1:r.msg=1;break}if(e.sc!=null){if(typeof e.sc!="object")throw TypeError(".Sec0Payload.sc: object expected");r.sc=$root.S0SessionCmd.fromObject(e.sc)}if(e.sr!=null){if(typeof e.sr!="object")throw TypeError(".Sec0Payload.sr: object expected");r.sr=$root.S0SessionResp.fromObject(e.sr)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"S0_Session_Command":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.Sec0MsgType[e.msg]===void 0?e.msg:$root.Sec0MsgType[e.msg]:e.msg),e.sc!=null&&e.hasOwnProperty("sc")&&(o.sc=$root.S0SessionCmd.toObject(e.sc,r),r.oneofs&&(o.payload="sc")),e.sr!=null&&e.hasOwnProperty("sr")&&(o.sr=$root.S0SessionResp.toObject(e.sr,r),r.oneofs&&(o.payload="sr")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/Sec0Payload"},i})();$root.SessionCmd1=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.clientVerifyData=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clientVerifyData!=null&&Object.hasOwnProperty.call(t,"clientVerifyData")&&e.uint32(18).bytes(t.clientVerifyData),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.SessionCmd1;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 2:{s.clientVerifyData=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clientVerifyData!=null&&t.hasOwnProperty("clientVerifyData")&&!(t.clientVerifyData&&typeof t.clientVerifyData.length=="number"||$util.isString(t.clientVerifyData))?"clientVerifyData: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.SessionCmd1)return t;let e=new $root.SessionCmd1;return t.clientVerifyData!=null&&(typeof t.clientVerifyData=="string"?$util.base64.decode(t.clientVerifyData,e.clientVerifyData=$util.newBuffer($util.base64.length(t.clientVerifyData)),0):t.clientVerifyData.length>=0&&(e.clientVerifyData=t.clientVerifyData)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.clientVerifyData="":(r.clientVerifyData=[],e.bytes!==Array&&(r.clientVerifyData=$util.newBuffer(r.clientVerifyData)))),t.clientVerifyData!=null&&t.hasOwnProperty("clientVerifyData")&&(r.clientVerifyData=e.bytes===String?$util.base64.encode(t.clientVerifyData,0,t.clientVerifyData.length):e.bytes===Array?Array.prototype.slice.call(t.clientVerifyData):t.clientVerifyData),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/SessionCmd1"},i})();$root.SessionResp1=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.prototype.deviceVerifyData=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),t.deviceVerifyData!=null&&Object.hasOwnProperty.call(t,"deviceVerifyData")&&e.uint32(26).bytes(t.deviceVerifyData),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.SessionResp1;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}case 3:{s.deviceVerifyData=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return t.deviceVerifyData!=null&&t.hasOwnProperty("deviceVerifyData")&&!(t.deviceVerifyData&&typeof t.deviceVerifyData.length=="number"||$util.isString(t.deviceVerifyData))?"deviceVerifyData: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.SessionResp1)return t;let e=new $root.SessionResp1;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return t.deviceVerifyData!=null&&(typeof t.deviceVerifyData=="string"?$util.base64.decode(t.deviceVerifyData,e.deviceVerifyData=$util.newBuffer($util.base64.length(t.deviceVerifyData)),0):t.deviceVerifyData.length>=0&&(e.deviceVerifyData=t.deviceVerifyData)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0,e.bytes===String?r.deviceVerifyData="":(r.deviceVerifyData=[],e.bytes!==Array&&(r.deviceVerifyData=$util.newBuffer(r.deviceVerifyData)))),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),t.deviceVerifyData!=null&&t.hasOwnProperty("deviceVerifyData")&&(r.deviceVerifyData=e.bytes===String?$util.base64.encode(t.deviceVerifyData,0,t.deviceVerifyData.length):e.bytes===Array?Array.prototype.slice.call(t.deviceVerifyData):t.deviceVerifyData),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/SessionResp1"},i})();$root.SessionCmd0=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.clientPubkey=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clientPubkey!=null&&Object.hasOwnProperty.call(t,"clientPubkey")&&e.uint32(10).bytes(t.clientPubkey),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.SessionCmd0;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.clientPubkey=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clientPubkey!=null&&t.hasOwnProperty("clientPubkey")&&!(t.clientPubkey&&typeof t.clientPubkey.length=="number"||$util.isString(t.clientPubkey))?"clientPubkey: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.SessionCmd0)return t;let e=new $root.SessionCmd0;return t.clientPubkey!=null&&(typeof t.clientPubkey=="string"?$util.base64.decode(t.clientPubkey,e.clientPubkey=$util.newBuffer($util.base64.length(t.clientPubkey)),0):t.clientPubkey.length>=0&&(e.clientPubkey=t.clientPubkey)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.clientPubkey="":(r.clientPubkey=[],e.bytes!==Array&&(r.clientPubkey=$util.newBuffer(r.clientPubkey)))),t.clientPubkey!=null&&t.hasOwnProperty("clientPubkey")&&(r.clientPubkey=e.bytes===String?$util.base64.encode(t.clientPubkey,0,t.clientPubkey.length):e.bytes===Array?Array.prototype.slice.call(t.clientPubkey):t.clientPubkey),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/SessionCmd0"},i})();$root.SessionResp0=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.prototype.devicePubkey=$util.newBuffer([]),i.prototype.deviceRandom=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),t.devicePubkey!=null&&Object.hasOwnProperty.call(t,"devicePubkey")&&e.uint32(18).bytes(t.devicePubkey),t.deviceRandom!=null&&Object.hasOwnProperty.call(t,"deviceRandom")&&e.uint32(26).bytes(t.deviceRandom),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.SessionResp0;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}case 2:{s.devicePubkey=t.bytes();break}case 3:{s.deviceRandom=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return t.devicePubkey!=null&&t.hasOwnProperty("devicePubkey")&&!(t.devicePubkey&&typeof t.devicePubkey.length=="number"||$util.isString(t.devicePubkey))?"devicePubkey: buffer expected":t.deviceRandom!=null&&t.hasOwnProperty("deviceRandom")&&!(t.deviceRandom&&typeof t.deviceRandom.length=="number"||$util.isString(t.deviceRandom))?"deviceRandom: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.SessionResp0)return t;let e=new $root.SessionResp0;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return t.devicePubkey!=null&&(typeof t.devicePubkey=="string"?$util.base64.decode(t.devicePubkey,e.devicePubkey=$util.newBuffer($util.base64.length(t.devicePubkey)),0):t.devicePubkey.length>=0&&(e.devicePubkey=t.devicePubkey)),t.deviceRandom!=null&&(typeof t.deviceRandom=="string"?$util.base64.decode(t.deviceRandom,e.deviceRandom=$util.newBuffer($util.base64.length(t.deviceRandom)),0):t.deviceRandom.length>=0&&(e.deviceRandom=t.deviceRandom)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0,e.bytes===String?r.devicePubkey="":(r.devicePubkey=[],e.bytes!==Array&&(r.devicePubkey=$util.newBuffer(r.devicePubkey))),e.bytes===String?r.deviceRandom="":(r.deviceRandom=[],e.bytes!==Array&&(r.deviceRandom=$util.newBuffer(r.deviceRandom)))),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),t.devicePubkey!=null&&t.hasOwnProperty("devicePubkey")&&(r.devicePubkey=e.bytes===String?$util.base64.encode(t.devicePubkey,0,t.devicePubkey.length):e.bytes===Array?Array.prototype.slice.call(t.devicePubkey):t.devicePubkey),t.deviceRandom!=null&&t.hasOwnProperty("deviceRandom")&&(r.deviceRandom=e.bytes===String?$util.base64.encode(t.deviceRandom,0,t.deviceRandom.length):e.bytes===Array?Array.prototype.slice.call(t.deviceRandom):t.deviceRandom),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/SessionResp0"},i})();$root.Sec1MsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="Session_Command0"]=0,n[i[1]="Session_Response0"]=1,n[i[2]="Session_Command1"]=2,n[i[3]="Session_Response1"]=3,n})();$root.Sec1Payload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.sc0=null,i.prototype.sr0=null,i.prototype.sc1=null,i.prototype.sr1=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["sc0","sr0","sc1","sr1"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.sc0!=null&&Object.hasOwnProperty.call(e,"sc0")&&$root.SessionCmd0.encode(e.sc0,r.uint32(162).fork()).ldelim(),e.sr0!=null&&Object.hasOwnProperty.call(e,"sr0")&&$root.SessionResp0.encode(e.sr0,r.uint32(170).fork()).ldelim(),e.sc1!=null&&Object.hasOwnProperty.call(e,"sc1")&&$root.SessionCmd1.encode(e.sc1,r.uint32(178).fork()).ldelim(),e.sr1!=null&&Object.hasOwnProperty.call(e,"sr1")&&$root.SessionResp1.encode(e.sr1,r.uint32(186).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.Sec1Payload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 20:{c.sc0=$root.SessionCmd0.decode(e,e.uint32());break}case 21:{c.sr0=$root.SessionResp0.decode(e,e.uint32());break}case 22:{c.sc1=$root.SessionCmd1.decode(e,e.uint32());break}case 23:{c.sr1=$root.SessionResp1.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:case 2:case 3:break}if(e.sc0!=null&&e.hasOwnProperty("sc0")){r.payload=1;{let o=$root.SessionCmd0.verify(e.sc0);if(o)return"sc0."+o}}if(e.sr0!=null&&e.hasOwnProperty("sr0")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.SessionResp0.verify(e.sr0);if(o)return"sr0."+o}}if(e.sc1!=null&&e.hasOwnProperty("sc1")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.SessionCmd1.verify(e.sc1);if(o)return"sc1."+o}}if(e.sr1!=null&&e.hasOwnProperty("sr1")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.SessionResp1.verify(e.sr1);if(o)return"sr1."+o}}return null},i.fromObject=function(e){if(e instanceof $root.Sec1Payload)return e;let r=new $root.Sec1Payload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"Session_Command0":case 0:r.msg=0;break;case"Session_Response0":case 1:r.msg=1;break;case"Session_Command1":case 2:r.msg=2;break;case"Session_Response1":case 3:r.msg=3;break}if(e.sc0!=null){if(typeof e.sc0!="object")throw TypeError(".Sec1Payload.sc0: object expected");r.sc0=$root.SessionCmd0.fromObject(e.sc0)}if(e.sr0!=null){if(typeof e.sr0!="object")throw TypeError(".Sec1Payload.sr0: object expected");r.sr0=$root.SessionResp0.fromObject(e.sr0)}if(e.sc1!=null){if(typeof e.sc1!="object")throw TypeError(".Sec1Payload.sc1: object expected");r.sc1=$root.SessionCmd1.fromObject(e.sc1)}if(e.sr1!=null){if(typeof e.sr1!="object")throw TypeError(".Sec1Payload.sr1: object expected");r.sr1=$root.SessionResp1.fromObject(e.sr1)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"Session_Command0":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.Sec1MsgType[e.msg]===void 0?e.msg:$root.Sec1MsgType[e.msg]:e.msg),e.sc0!=null&&e.hasOwnProperty("sc0")&&(o.sc0=$root.SessionCmd0.toObject(e.sc0,r),r.oneofs&&(o.payload="sc0")),e.sr0!=null&&e.hasOwnProperty("sr0")&&(o.sr0=$root.SessionResp0.toObject(e.sr0,r),r.oneofs&&(o.payload="sr0")),e.sc1!=null&&e.hasOwnProperty("sc1")&&(o.sc1=$root.SessionCmd1.toObject(e.sc1,r),r.oneofs&&(o.payload="sc1")),e.sr1!=null&&e.hasOwnProperty("sr1")&&(o.sr1=$root.SessionResp1.toObject(e.sr1,r),r.oneofs&&(o.payload="sr1")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/Sec1Payload"},i})();$root.Sec2MsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="S2Session_Command0"]=0,n[i[1]="S2Session_Response0"]=1,n[i[2]="S2Session_Command1"]=2,n[i[3]="S2Session_Response1"]=3,n})();$root.S2SessionCmd0=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.clientUsername=$util.newBuffer([]),i.prototype.clientPubkey=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clientUsername!=null&&Object.hasOwnProperty.call(t,"clientUsername")&&e.uint32(10).bytes(t.clientUsername),t.clientPubkey!=null&&Object.hasOwnProperty.call(t,"clientPubkey")&&e.uint32(18).bytes(t.clientPubkey),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S2SessionCmd0;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.clientUsername=t.bytes();break}case 2:{s.clientPubkey=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clientUsername!=null&&t.hasOwnProperty("clientUsername")&&!(t.clientUsername&&typeof t.clientUsername.length=="number"||$util.isString(t.clientUsername))?"clientUsername: buffer expected":t.clientPubkey!=null&&t.hasOwnProperty("clientPubkey")&&!(t.clientPubkey&&typeof t.clientPubkey.length=="number"||$util.isString(t.clientPubkey))?"clientPubkey: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.S2SessionCmd0)return t;let e=new $root.S2SessionCmd0;return t.clientUsername!=null&&(typeof t.clientUsername=="string"?$util.base64.decode(t.clientUsername,e.clientUsername=$util.newBuffer($util.base64.length(t.clientUsername)),0):t.clientUsername.length>=0&&(e.clientUsername=t.clientUsername)),t.clientPubkey!=null&&(typeof t.clientPubkey=="string"?$util.base64.decode(t.clientPubkey,e.clientPubkey=$util.newBuffer($util.base64.length(t.clientPubkey)),0):t.clientPubkey.length>=0&&(e.clientPubkey=t.clientPubkey)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.clientUsername="":(r.clientUsername=[],e.bytes!==Array&&(r.clientUsername=$util.newBuffer(r.clientUsername))),e.bytes===String?r.clientPubkey="":(r.clientPubkey=[],e.bytes!==Array&&(r.clientPubkey=$util.newBuffer(r.clientPubkey)))),t.clientUsername!=null&&t.hasOwnProperty("clientUsername")&&(r.clientUsername=e.bytes===String?$util.base64.encode(t.clientUsername,0,t.clientUsername.length):e.bytes===Array?Array.prototype.slice.call(t.clientUsername):t.clientUsername),t.clientPubkey!=null&&t.hasOwnProperty("clientPubkey")&&(r.clientPubkey=e.bytes===String?$util.base64.encode(t.clientPubkey,0,t.clientPubkey.length):e.bytes===Array?Array.prototype.slice.call(t.clientPubkey):t.clientPubkey),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S2SessionCmd0"},i})();$root.S2SessionResp0=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.prototype.devicePubkey=$util.newBuffer([]),i.prototype.deviceSalt=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),t.devicePubkey!=null&&Object.hasOwnProperty.call(t,"devicePubkey")&&e.uint32(18).bytes(t.devicePubkey),t.deviceSalt!=null&&Object.hasOwnProperty.call(t,"deviceSalt")&&e.uint32(26).bytes(t.deviceSalt),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S2SessionResp0;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}case 2:{s.devicePubkey=t.bytes();break}case 3:{s.deviceSalt=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return t.devicePubkey!=null&&t.hasOwnProperty("devicePubkey")&&!(t.devicePubkey&&typeof t.devicePubkey.length=="number"||$util.isString(t.devicePubkey))?"devicePubkey: buffer expected":t.deviceSalt!=null&&t.hasOwnProperty("deviceSalt")&&!(t.deviceSalt&&typeof t.deviceSalt.length=="number"||$util.isString(t.deviceSalt))?"deviceSalt: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.S2SessionResp0)return t;let e=new $root.S2SessionResp0;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return t.devicePubkey!=null&&(typeof t.devicePubkey=="string"?$util.base64.decode(t.devicePubkey,e.devicePubkey=$util.newBuffer($util.base64.length(t.devicePubkey)),0):t.devicePubkey.length>=0&&(e.devicePubkey=t.devicePubkey)),t.deviceSalt!=null&&(typeof t.deviceSalt=="string"?$util.base64.decode(t.deviceSalt,e.deviceSalt=$util.newBuffer($util.base64.length(t.deviceSalt)),0):t.deviceSalt.length>=0&&(e.deviceSalt=t.deviceSalt)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0,e.bytes===String?r.devicePubkey="":(r.devicePubkey=[],e.bytes!==Array&&(r.devicePubkey=$util.newBuffer(r.devicePubkey))),e.bytes===String?r.deviceSalt="":(r.deviceSalt=[],e.bytes!==Array&&(r.deviceSalt=$util.newBuffer(r.deviceSalt)))),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),t.devicePubkey!=null&&t.hasOwnProperty("devicePubkey")&&(r.devicePubkey=e.bytes===String?$util.base64.encode(t.devicePubkey,0,t.devicePubkey.length):e.bytes===Array?Array.prototype.slice.call(t.devicePubkey):t.devicePubkey),t.deviceSalt!=null&&t.hasOwnProperty("deviceSalt")&&(r.deviceSalt=e.bytes===String?$util.base64.encode(t.deviceSalt,0,t.deviceSalt.length):e.bytes===Array?Array.prototype.slice.call(t.deviceSalt):t.deviceSalt),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S2SessionResp0"},i})();$root.S2SessionCmd1=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.clientProof=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clientProof!=null&&Object.hasOwnProperty.call(t,"clientProof")&&e.uint32(10).bytes(t.clientProof),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S2SessionCmd1;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.clientProof=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clientProof!=null&&t.hasOwnProperty("clientProof")&&!(t.clientProof&&typeof t.clientProof.length=="number"||$util.isString(t.clientProof))?"clientProof: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.S2SessionCmd1)return t;let e=new $root.S2SessionCmd1;return t.clientProof!=null&&(typeof t.clientProof=="string"?$util.base64.decode(t.clientProof,e.clientProof=$util.newBuffer($util.base64.length(t.clientProof)),0):t.clientProof.length>=0&&(e.clientProof=t.clientProof)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.clientProof="":(r.clientProof=[],e.bytes!==Array&&(r.clientProof=$util.newBuffer(r.clientProof)))),t.clientProof!=null&&t.hasOwnProperty("clientProof")&&(r.clientProof=e.bytes===String?$util.base64.encode(t.clientProof,0,t.clientProof.length):e.bytes===Array?Array.prototype.slice.call(t.clientProof):t.clientProof),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S2SessionCmd1"},i})();$root.S2SessionResp1=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.prototype.deviceProof=$util.newBuffer([]),i.prototype.deviceNonce=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),t.deviceProof!=null&&Object.hasOwnProperty.call(t,"deviceProof")&&e.uint32(18).bytes(t.deviceProof),t.deviceNonce!=null&&Object.hasOwnProperty.call(t,"deviceNonce")&&e.uint32(26).bytes(t.deviceNonce),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S2SessionResp1;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}case 2:{s.deviceProof=t.bytes();break}case 3:{s.deviceNonce=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return t.deviceProof!=null&&t.hasOwnProperty("deviceProof")&&!(t.deviceProof&&typeof t.deviceProof.length=="number"||$util.isString(t.deviceProof))?"deviceProof: buffer expected":t.deviceNonce!=null&&t.hasOwnProperty("deviceNonce")&&!(t.deviceNonce&&typeof t.deviceNonce.length=="number"||$util.isString(t.deviceNonce))?"deviceNonce: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.S2SessionResp1)return t;let e=new $root.S2SessionResp1;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return t.deviceProof!=null&&(typeof t.deviceProof=="string"?$util.base64.decode(t.deviceProof,e.deviceProof=$util.newBuffer($util.base64.length(t.deviceProof)),0):t.deviceProof.length>=0&&(e.deviceProof=t.deviceProof)),t.deviceNonce!=null&&(typeof t.deviceNonce=="string"?$util.base64.decode(t.deviceNonce,e.deviceNonce=$util.newBuffer($util.base64.length(t.deviceNonce)),0):t.deviceNonce.length>=0&&(e.deviceNonce=t.deviceNonce)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0,e.bytes===String?r.deviceProof="":(r.deviceProof=[],e.bytes!==Array&&(r.deviceProof=$util.newBuffer(r.deviceProof))),e.bytes===String?r.deviceNonce="":(r.deviceNonce=[],e.bytes!==Array&&(r.deviceNonce=$util.newBuffer(r.deviceNonce)))),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),t.deviceProof!=null&&t.hasOwnProperty("deviceProof")&&(r.deviceProof=e.bytes===String?$util.base64.encode(t.deviceProof,0,t.deviceProof.length):e.bytes===Array?Array.prototype.slice.call(t.deviceProof):t.deviceProof),t.deviceNonce!=null&&t.hasOwnProperty("deviceNonce")&&(r.deviceNonce=e.bytes===String?$util.base64.encode(t.deviceNonce,0,t.deviceNonce.length):e.bytes===Array?Array.prototype.slice.call(t.deviceNonce):t.deviceNonce),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S2SessionResp1"},i})();$root.Sec2Payload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.sc0=null,i.prototype.sr0=null,i.prototype.sc1=null,i.prototype.sr1=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["sc0","sr0","sc1","sr1"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.sc0!=null&&Object.hasOwnProperty.call(e,"sc0")&&$root.S2SessionCmd0.encode(e.sc0,r.uint32(162).fork()).ldelim(),e.sr0!=null&&Object.hasOwnProperty.call(e,"sr0")&&$root.S2SessionResp0.encode(e.sr0,r.uint32(170).fork()).ldelim(),e.sc1!=null&&Object.hasOwnProperty.call(e,"sc1")&&$root.S2SessionCmd1.encode(e.sc1,r.uint32(178).fork()).ldelim(),e.sr1!=null&&Object.hasOwnProperty.call(e,"sr1")&&$root.S2SessionResp1.encode(e.sr1,r.uint32(186).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.Sec2Payload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 20:{c.sc0=$root.S2SessionCmd0.decode(e,e.uint32());break}case 21:{c.sr0=$root.S2SessionResp0.decode(e,e.uint32());break}case 22:{c.sc1=$root.S2SessionCmd1.decode(e,e.uint32());break}case 23:{c.sr1=$root.S2SessionResp1.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:case 2:case 3:break}if(e.sc0!=null&&e.hasOwnProperty("sc0")){r.payload=1;{let o=$root.S2SessionCmd0.verify(e.sc0);if(o)return"sc0."+o}}if(e.sr0!=null&&e.hasOwnProperty("sr0")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.S2SessionResp0.verify(e.sr0);if(o)return"sr0."+o}}if(e.sc1!=null&&e.hasOwnProperty("sc1")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.S2SessionCmd1.verify(e.sc1);if(o)return"sc1."+o}}if(e.sr1!=null&&e.hasOwnProperty("sr1")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.S2SessionResp1.verify(e.sr1);if(o)return"sr1."+o}}return null},i.fromObject=function(e){if(e instanceof $root.Sec2Payload)return e;let r=new $root.Sec2Payload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"S2Session_Command0":case 0:r.msg=0;break;case"S2Session_Response0":case 1:r.msg=1;break;case"S2Session_Command1":case 2:r.msg=2;break;case"S2Session_Response1":case 3:r.msg=3;break}if(e.sc0!=null){if(typeof e.sc0!="object")throw TypeError(".Sec2Payload.sc0: object expected");r.sc0=$root.S2SessionCmd0.fromObject(e.sc0)}if(e.sr0!=null){if(typeof e.sr0!="object")throw TypeError(".Sec2Payload.sr0: object expected");r.sr0=$root.S2SessionResp0.fromObject(e.sr0)}if(e.sc1!=null){if(typeof e.sc1!="object")throw TypeError(".Sec2Payload.sc1: object expected");r.sc1=$root.S2SessionCmd1.fromObject(e.sc1)}if(e.sr1!=null){if(typeof e.sr1!="object")throw TypeError(".Sec2Payload.sr1: object expected");r.sr1=$root.S2SessionResp1.fromObject(e.sr1)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"S2Session_Command0":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.Sec2MsgType[e.msg]===void 0?e.msg:$root.Sec2MsgType[e.msg]:e.msg),e.sc0!=null&&e.hasOwnProperty("sc0")&&(o.sc0=$root.S2SessionCmd0.toObject(e.sc0,r),r.oneofs&&(o.payload="sc0")),e.sr0!=null&&e.hasOwnProperty("sr0")&&(o.sr0=$root.S2SessionResp0.toObject(e.sr0,r),r.oneofs&&(o.payload="sr0")),e.sc1!=null&&e.hasOwnProperty("sc1")&&(o.sc1=$root.S2SessionCmd1.toObject(e.sc1,r),r.oneofs&&(o.payload="sc1")),e.sr1!=null&&e.hasOwnProperty("sr1")&&(o.sr1=$root.S2SessionResp1.toObject(e.sr1,r),r.oneofs&&(o.payload="sr1")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/Sec2Payload"},i})();const SecSchemeVersion=$root.SecSchemeVersion=(()=>{const i={},n=Object.create(i);return n[i[0]="SecScheme0"]=0,n[i[1]="SecScheme1"]=1,n[i[2]="SecScheme2"]=2,n})(),SessionData=$root.SessionData=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.secVer=0,i.prototype.sec0=null,i.prototype.sec1=null,i.prototype.sec2=null;let n;return Object.defineProperty(i.prototype,"proto",{get:$util.oneOfGetter(n=["sec0","sec1","sec2"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.secVer!=null&&Object.hasOwnProperty.call(e,"secVer")&&r.uint32(16).int32(e.secVer),e.sec0!=null&&Object.hasOwnProperty.call(e,"sec0")&&$root.Sec0Payload.encode(e.sec0,r.uint32(82).fork()).ldelim(),e.sec1!=null&&Object.hasOwnProperty.call(e,"sec1")&&$root.Sec1Payload.encode(e.sec1,r.uint32(90).fork()).ldelim(),e.sec2!=null&&Object.hasOwnProperty.call(e,"sec2")&&$root.Sec2Payload.encode(e.sec2,r.uint32(98).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.SessionData;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 2:{c.secVer=e.int32();break}case 10:{c.sec0=$root.Sec0Payload.decode(e,e.uint32());break}case 11:{c.sec1=$root.Sec1Payload.decode(e,e.uint32());break}case 12:{c.sec2=$root.Sec2Payload.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.secVer!=null&&e.hasOwnProperty("secVer"))switch(e.secVer){default:return"secVer: enum value expected";case 0:case 1:case 2:break}if(e.sec0!=null&&e.hasOwnProperty("sec0")){r.proto=1;{let o=$root.Sec0Payload.verify(e.sec0);if(o)return"sec0."+o}}if(e.sec1!=null&&e.hasOwnProperty("sec1")){if(r.proto===1)return"proto: multiple values";r.proto=1;{let o=$root.Sec1Payload.verify(e.sec1);if(o)return"sec1."+o}}if(e.sec2!=null&&e.hasOwnProperty("sec2")){if(r.proto===1)return"proto: multiple values";r.proto=1;{let o=$root.Sec2Payload.verify(e.sec2);if(o)return"sec2."+o}}return null},i.fromObject=function(e){if(e instanceof $root.SessionData)return e;let r=new $root.SessionData;switch(e.secVer){default:if(typeof e.secVer=="number"){r.secVer=e.secVer;break}break;case"SecScheme0":case 0:r.secVer=0;break;case"SecScheme1":case 1:r.secVer=1;break;case"SecScheme2":case 2:r.secVer=2;break}if(e.sec0!=null){if(typeof e.sec0!="object")throw TypeError(".SessionData.sec0: object expected");r.sec0=$root.Sec0Payload.fromObject(e.sec0)}if(e.sec1!=null){if(typeof e.sec1!="object")throw TypeError(".SessionData.sec1: object expected");r.sec1=$root.Sec1Payload.fromObject(e.sec1)}if(e.sec2!=null){if(typeof e.sec2!="object")throw TypeError(".SessionData.sec2: object expected");r.sec2=$root.Sec2Payload.fromObject(e.sec2)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.secVer=r.enums===String?"SecScheme0":0),e.secVer!=null&&e.hasOwnProperty("secVer")&&(o.secVer=r.enums===String?$root.SecSchemeVersion[e.secVer]===void 0?e.secVer:$root.SecSchemeVersion[e.secVer]:e.secVer),e.sec0!=null&&e.hasOwnProperty("sec0")&&(o.sec0=$root.Sec0Payload.toObject(e.sec0,r),r.oneofs&&(o.proto="sec0")),e.sec1!=null&&e.hasOwnProperty("sec1")&&(o.sec1=$root.Sec1Payload.toObject(e.sec1,r),r.oneofs&&(o.proto="sec1")),e.sec2!=null&&e.hasOwnProperty("sec2")&&(o.sec2=$root.Sec2Payload.toObject(e.sec2,r),r.oneofs&&(o.proto="sec2")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/SessionData"},i})(),CmdGetStatus=$root.CmdGetStatus=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdGetStatus;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.CmdGetStatus?t:new $root.CmdGetStatus},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdGetStatus"},i})();$root.RespGetStatus=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.status=0,i.prototype.staState=0,i.prototype.failReason=null,i.prototype.connected=null;let n;return Object.defineProperty(i.prototype,"state",{get:$util.oneOfGetter(n=["failReason","connected"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.status!=null&&Object.hasOwnProperty.call(e,"status")&&r.uint32(8).int32(e.status),e.staState!=null&&Object.hasOwnProperty.call(e,"staState")&&r.uint32(16).int32(e.staState),e.failReason!=null&&Object.hasOwnProperty.call(e,"failReason")&&r.uint32(80).int32(e.failReason),e.connected!=null&&Object.hasOwnProperty.call(e,"connected")&&$root.WifiConnectedState.encode(e.connected,r.uint32(90).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.RespGetStatus;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.status=e.int32();break}case 2:{c.staState=e.int32();break}case 10:{c.failReason=e.int32();break}case 11:{c.connected=$root.WifiConnectedState.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.status!=null&&e.hasOwnProperty("status"))switch(e.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}if(e.staState!=null&&e.hasOwnProperty("staState"))switch(e.staState){default:return"staState: enum value expected";case 0:case 1:case 2:case 3:break}if(e.failReason!=null&&e.hasOwnProperty("failReason"))switch(r.state=1,e.failReason){default:return"failReason: enum value expected";case 0:case 1:break}if(e.connected!=null&&e.hasOwnProperty("connected")){if(r.state===1)return"state: multiple values";r.state=1;{let o=$root.WifiConnectedState.verify(e.connected);if(o)return"connected."+o}}return null},i.fromObject=function(e){if(e instanceof $root.RespGetStatus)return e;let r=new $root.RespGetStatus;switch(e.status){default:if(typeof e.status=="number"){r.status=e.status;break}break;case"Success":case 0:r.status=0;break;case"InvalidSecScheme":case 1:r.status=1;break;case"InvalidProto":case 2:r.status=2;break;case"TooManySessions":case 3:r.status=3;break;case"InvalidArgument":case 4:r.status=4;break;case"InternalError":case 5:r.status=5;break;case"CryptoError":case 6:r.status=6;break;case"InvalidSession":case 7:r.status=7;break}switch(e.staState){default:if(typeof e.staState=="number"){r.staState=e.staState;break}break;case"Connected":case 0:r.staState=0;break;case"Connecting":case 1:r.staState=1;break;case"Disconnected":case 2:r.staState=2;break;case"ConnectionFailed":case 3:r.staState=3;break}switch(e.failReason){default:if(typeof e.failReason=="number"){r.failReason=e.failReason;break}break;case"AuthError":case 0:r.failReason=0;break;case"NetworkNotFound":case 1:r.failReason=1;break}if(e.connected!=null){if(typeof e.connected!="object")throw TypeError(".RespGetStatus.connected: object expected");r.connected=$root.WifiConnectedState.fromObject(e.connected)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.status=r.enums===String?"Success":0,o.staState=r.enums===String?"Connected":0),e.status!=null&&e.hasOwnProperty("status")&&(o.status=r.enums===String?$root.Status[e.status]===void 0?e.status:$root.Status[e.status]:e.status),e.staState!=null&&e.hasOwnProperty("staState")&&(o.staState=r.enums===String?$root.WifiStationState[e.staState]===void 0?e.staState:$root.WifiStationState[e.staState]:e.staState),e.failReason!=null&&e.hasOwnProperty("failReason")&&(o.failReason=r.enums===String?$root.WifiConnectFailedReason[e.failReason]===void 0?e.failReason:$root.WifiConnectFailedReason[e.failReason]:e.failReason,r.oneofs&&(o.state="failReason")),e.connected!=null&&e.hasOwnProperty("connected")&&(o.connected=$root.WifiConnectedState.toObject(e.connected,r),r.oneofs&&(o.state="connected")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/RespGetStatus"},i})();const CmdSetConfig=$root.CmdSetConfig=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.ssid=$util.newBuffer([]),i.prototype.passphrase=$util.newBuffer([]),i.prototype.bssid=$util.newBuffer([]),i.prototype.channel=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.ssid!=null&&Object.hasOwnProperty.call(t,"ssid")&&e.uint32(10).bytes(t.ssid),t.passphrase!=null&&Object.hasOwnProperty.call(t,"passphrase")&&e.uint32(18).bytes(t.passphrase),t.bssid!=null&&Object.hasOwnProperty.call(t,"bssid")&&e.uint32(26).bytes(t.bssid),t.channel!=null&&Object.hasOwnProperty.call(t,"channel")&&e.uint32(32).int32(t.channel),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdSetConfig;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.ssid=t.bytes();break}case 2:{s.passphrase=t.bytes();break}case 3:{s.bssid=t.bytes();break}case 4:{s.channel=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.ssid!=null&&t.hasOwnProperty("ssid")&&!(t.ssid&&typeof t.ssid.length=="number"||$util.isString(t.ssid))?"ssid: buffer expected":t.passphrase!=null&&t.hasOwnProperty("passphrase")&&!(t.passphrase&&typeof t.passphrase.length=="number"||$util.isString(t.passphrase))?"passphrase: buffer expected":t.bssid!=null&&t.hasOwnProperty("bssid")&&!(t.bssid&&typeof t.bssid.length=="number"||$util.isString(t.bssid))?"bssid: buffer expected":t.channel!=null&&t.hasOwnProperty("channel")&&!$util.isInteger(t.channel)?"channel: integer expected":null},i.fromObject=function(t){if(t instanceof $root.CmdSetConfig)return t;let e=new $root.CmdSetConfig;return t.ssid!=null&&(typeof t.ssid=="string"?$util.base64.decode(t.ssid,e.ssid=$util.newBuffer($util.base64.length(t.ssid)),0):t.ssid.length>=0&&(e.ssid=t.ssid)),t.passphrase!=null&&(typeof t.passphrase=="string"?$util.base64.decode(t.passphrase,e.passphrase=$util.newBuffer($util.base64.length(t.passphrase)),0):t.passphrase.length>=0&&(e.passphrase=t.passphrase)),t.bssid!=null&&(typeof t.bssid=="string"?$util.base64.decode(t.bssid,e.bssid=$util.newBuffer($util.base64.length(t.bssid)),0):t.bssid.length>=0&&(e.bssid=t.bssid)),t.channel!=null&&(e.channel=t.channel|0),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.ssid="":(r.ssid=[],e.bytes!==Array&&(r.ssid=$util.newBuffer(r.ssid))),e.bytes===String?r.passphrase="":(r.passphrase=[],e.bytes!==Array&&(r.passphrase=$util.newBuffer(r.passphrase))),e.bytes===String?r.bssid="":(r.bssid=[],e.bytes!==Array&&(r.bssid=$util.newBuffer(r.bssid))),r.channel=0),t.ssid!=null&&t.hasOwnProperty("ssid")&&(r.ssid=e.bytes===String?$util.base64.encode(t.ssid,0,t.ssid.length):e.bytes===Array?Array.prototype.slice.call(t.ssid):t.ssid),t.passphrase!=null&&t.hasOwnProperty("passphrase")&&(r.passphrase=e.bytes===String?$util.base64.encode(t.passphrase,0,t.passphrase.length):e.bytes===Array?Array.prototype.slice.call(t.passphrase):t.passphrase),t.bssid!=null&&t.hasOwnProperty("bssid")&&(r.bssid=e.bytes===String?$util.base64.encode(t.bssid,0,t.bssid.length):e.bytes===Array?Array.prototype.slice.call(t.bssid):t.bssid),t.channel!=null&&t.hasOwnProperty("channel")&&(r.channel=t.channel),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdSetConfig"},i})();$root.RespSetConfig=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespSetConfig;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return null},i.fromObject=function(t){if(t instanceof $root.RespSetConfig)return t;let e=new $root.RespSetConfig;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespSetConfig"},i})();const CmdApplyConfig=$root.CmdApplyConfig=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdApplyConfig;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.CmdApplyConfig?t:new $root.CmdApplyConfig},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdApplyConfig"},i})();$root.RespApplyConfig=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespApplyConfig;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return null},i.fromObject=function(t){if(t instanceof $root.RespApplyConfig)return t;let e=new $root.RespApplyConfig;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespApplyConfig"},i})();const WiFiConfigMsgType=$root.WiFiConfigMsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="TypeCmdGetStatus"]=0,n[i[1]="TypeRespGetStatus"]=1,n[i[2]="TypeCmdSetConfig"]=2,n[i[3]="TypeRespSetConfig"]=3,n[i[4]="TypeCmdApplyConfig"]=4,n[i[5]="TypeRespApplyConfig"]=5,n})(),WiFiConfigPayload=$root.WiFiConfigPayload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.cmdGetStatus=null,i.prototype.respGetStatus=null,i.prototype.cmdSetConfig=null,i.prototype.respSetConfig=null,i.prototype.cmdApplyConfig=null,i.prototype.respApplyConfig=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["cmdGetStatus","respGetStatus","cmdSetConfig","respSetConfig","cmdApplyConfig","respApplyConfig"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.cmdGetStatus!=null&&Object.hasOwnProperty.call(e,"cmdGetStatus")&&$root.CmdGetStatus.encode(e.cmdGetStatus,r.uint32(82).fork()).ldelim(),e.respGetStatus!=null&&Object.hasOwnProperty.call(e,"respGetStatus")&&$root.RespGetStatus.encode(e.respGetStatus,r.uint32(90).fork()).ldelim(),e.cmdSetConfig!=null&&Object.hasOwnProperty.call(e,"cmdSetConfig")&&$root.CmdSetConfig.encode(e.cmdSetConfig,r.uint32(98).fork()).ldelim(),e.respSetConfig!=null&&Object.hasOwnProperty.call(e,"respSetConfig")&&$root.RespSetConfig.encode(e.respSetConfig,r.uint32(106).fork()).ldelim(),e.cmdApplyConfig!=null&&Object.hasOwnProperty.call(e,"cmdApplyConfig")&&$root.CmdApplyConfig.encode(e.cmdApplyConfig,r.uint32(114).fork()).ldelim(),e.respApplyConfig!=null&&Object.hasOwnProperty.call(e,"respApplyConfig")&&$root.RespApplyConfig.encode(e.respApplyConfig,r.uint32(122).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.WiFiConfigPayload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 10:{c.cmdGetStatus=$root.CmdGetStatus.decode(e,e.uint32());break}case 11:{c.respGetStatus=$root.RespGetStatus.decode(e,e.uint32());break}case 12:{c.cmdSetConfig=$root.CmdSetConfig.decode(e,e.uint32());break}case 13:{c.respSetConfig=$root.RespSetConfig.decode(e,e.uint32());break}case 14:{c.cmdApplyConfig=$root.CmdApplyConfig.decode(e,e.uint32());break}case 15:{c.respApplyConfig=$root.RespApplyConfig.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:break}if(e.cmdGetStatus!=null&&e.hasOwnProperty("cmdGetStatus")){r.payload=1;{let o=$root.CmdGetStatus.verify(e.cmdGetStatus);if(o)return"cmdGetStatus."+o}}if(e.respGetStatus!=null&&e.hasOwnProperty("respGetStatus")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespGetStatus.verify(e.respGetStatus);if(o)return"respGetStatus."+o}}if(e.cmdSetConfig!=null&&e.hasOwnProperty("cmdSetConfig")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.CmdSetConfig.verify(e.cmdSetConfig);if(o)return"cmdSetConfig."+o}}if(e.respSetConfig!=null&&e.hasOwnProperty("respSetConfig")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespSetConfig.verify(e.respSetConfig);if(o)return"respSetConfig."+o}}if(e.cmdApplyConfig!=null&&e.hasOwnProperty("cmdApplyConfig")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.CmdApplyConfig.verify(e.cmdApplyConfig);if(o)return"cmdApplyConfig."+o}}if(e.respApplyConfig!=null&&e.hasOwnProperty("respApplyConfig")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespApplyConfig.verify(e.respApplyConfig);if(o)return"respApplyConfig."+o}}return null},i.fromObject=function(e){if(e instanceof $root.WiFiConfigPayload)return e;let r=new $root.WiFiConfigPayload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"TypeCmdGetStatus":case 0:r.msg=0;break;case"TypeRespGetStatus":case 1:r.msg=1;break;case"TypeCmdSetConfig":case 2:r.msg=2;break;case"TypeRespSetConfig":case 3:r.msg=3;break;case"TypeCmdApplyConfig":case 4:r.msg=4;break;case"TypeRespApplyConfig":case 5:r.msg=5;break}if(e.cmdGetStatus!=null){if(typeof e.cmdGetStatus!="object")throw TypeError(".WiFiConfigPayload.cmdGetStatus: object expected");r.cmdGetStatus=$root.CmdGetStatus.fromObject(e.cmdGetStatus)}if(e.respGetStatus!=null){if(typeof e.respGetStatus!="object")throw TypeError(".WiFiConfigPayload.respGetStatus: object expected");r.respGetStatus=$root.RespGetStatus.fromObject(e.respGetStatus)}if(e.cmdSetConfig!=null){if(typeof e.cmdSetConfig!="object")throw TypeError(".WiFiConfigPayload.cmdSetConfig: object expected");r.cmdSetConfig=$root.CmdSetConfig.fromObject(e.cmdSetConfig)}if(e.respSetConfig!=null){if(typeof e.respSetConfig!="object")throw TypeError(".WiFiConfigPayload.respSetConfig: object expected");r.respSetConfig=$root.RespSetConfig.fromObject(e.respSetConfig)}if(e.cmdApplyConfig!=null){if(typeof e.cmdApplyConfig!="object")throw TypeError(".WiFiConfigPayload.cmdApplyConfig: object expected");r.cmdApplyConfig=$root.CmdApplyConfig.fromObject(e.cmdApplyConfig)}if(e.respApplyConfig!=null){if(typeof e.respApplyConfig!="object")throw TypeError(".WiFiConfigPayload.respApplyConfig: object expected");r.respApplyConfig=$root.RespApplyConfig.fromObject(e.respApplyConfig)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"TypeCmdGetStatus":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.WiFiConfigMsgType[e.msg]===void 0?e.msg:$root.WiFiConfigMsgType[e.msg]:e.msg),e.cmdGetStatus!=null&&e.hasOwnProperty("cmdGetStatus")&&(o.cmdGetStatus=$root.CmdGetStatus.toObject(e.cmdGetStatus,r),r.oneofs&&(o.payload="cmdGetStatus")),e.respGetStatus!=null&&e.hasOwnProperty("respGetStatus")&&(o.respGetStatus=$root.RespGetStatus.toObject(e.respGetStatus,r),r.oneofs&&(o.payload="respGetStatus")),e.cmdSetConfig!=null&&e.hasOwnProperty("cmdSetConfig")&&(o.cmdSetConfig=$root.CmdSetConfig.toObject(e.cmdSetConfig,r),r.oneofs&&(o.payload="cmdSetConfig")),e.respSetConfig!=null&&e.hasOwnProperty("respSetConfig")&&(o.respSetConfig=$root.RespSetConfig.toObject(e.respSetConfig,r),r.oneofs&&(o.payload="respSetConfig")),e.cmdApplyConfig!=null&&e.hasOwnProperty("cmdApplyConfig")&&(o.cmdApplyConfig=$root.CmdApplyConfig.toObject(e.cmdApplyConfig,r),r.oneofs&&(o.payload="cmdApplyConfig")),e.respApplyConfig!=null&&e.hasOwnProperty("respApplyConfig")&&(o.respApplyConfig=$root.RespApplyConfig.toObject(e.respApplyConfig,r),r.oneofs&&(o.payload="respApplyConfig")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/WiFiConfigPayload"},i})(),WifiStationState=$root.WifiStationState=(()=>{const i={},n=Object.create(i);return n[i[0]="Connected"]=0,n[i[1]="Connecting"]=1,n[i[2]="Disconnected"]=2,n[i[3]="ConnectionFailed"]=3,n})(),WifiConnectFailedReason=$root.WifiConnectFailedReason=(()=>{const i={},n=Object.create(i);return n[i[0]="AuthError"]=0,n[i[1]="NetworkNotFound"]=1,n})(),WifiAuthMode=$root.WifiAuthMode=(()=>{const i={},n=Object.create(i);return n[i[0]="Open"]=0,n[i[1]="WEP"]=1,n[i[2]="WPA_PSK"]=2,n[i[3]="WPA2_PSK"]=3,n[i[4]="WPA_WPA2_PSK"]=4,n[i[5]="WPA2_ENTERPRISE"]=5,n[i[6]="WPA3_PSK"]=6,n[i[7]="WPA2_WPA3_PSK"]=7,n})();$root.WifiConnectedState=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.ip4Addr="",i.prototype.authMode=0,i.prototype.ssid=$util.newBuffer([]),i.prototype.bssid=$util.newBuffer([]),i.prototype.channel=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.ip4Addr!=null&&Object.hasOwnProperty.call(t,"ip4Addr")&&e.uint32(10).string(t.ip4Addr),t.authMode!=null&&Object.hasOwnProperty.call(t,"authMode")&&e.uint32(16).int32(t.authMode),t.ssid!=null&&Object.hasOwnProperty.call(t,"ssid")&&e.uint32(26).bytes(t.ssid),t.bssid!=null&&Object.hasOwnProperty.call(t,"bssid")&&e.uint32(34).bytes(t.bssid),t.channel!=null&&Object.hasOwnProperty.call(t,"channel")&&e.uint32(40).int32(t.channel),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.WifiConnectedState;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.ip4Addr=t.string();break}case 2:{s.authMode=t.int32();break}case 3:{s.ssid=t.bytes();break}case 4:{s.bssid=t.bytes();break}case 5:{s.channel=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.ip4Addr!=null&&t.hasOwnProperty("ip4Addr")&&!$util.isString(t.ip4Addr))return"ip4Addr: string expected";if(t.authMode!=null&&t.hasOwnProperty("authMode"))switch(t.authMode){default:return"authMode: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return t.ssid!=null&&t.hasOwnProperty("ssid")&&!(t.ssid&&typeof t.ssid.length=="number"||$util.isString(t.ssid))?"ssid: buffer expected":t.bssid!=null&&t.hasOwnProperty("bssid")&&!(t.bssid&&typeof t.bssid.length=="number"||$util.isString(t.bssid))?"bssid: buffer expected":t.channel!=null&&t.hasOwnProperty("channel")&&!$util.isInteger(t.channel)?"channel: integer expected":null},i.fromObject=function(t){if(t instanceof $root.WifiConnectedState)return t;let e=new $root.WifiConnectedState;switch(t.ip4Addr!=null&&(e.ip4Addr=String(t.ip4Addr)),t.authMode){default:if(typeof t.authMode=="number"){e.authMode=t.authMode;break}break;case"Open":case 0:e.authMode=0;break;case"WEP":case 1:e.authMode=1;break;case"WPA_PSK":case 2:e.authMode=2;break;case"WPA2_PSK":case 3:e.authMode=3;break;case"WPA_WPA2_PSK":case 4:e.authMode=4;break;case"WPA2_ENTERPRISE":case 5:e.authMode=5;break;case"WPA3_PSK":case 6:e.authMode=6;break;case"WPA2_WPA3_PSK":case 7:e.authMode=7;break}return t.ssid!=null&&(typeof t.ssid=="string"?$util.base64.decode(t.ssid,e.ssid=$util.newBuffer($util.base64.length(t.ssid)),0):t.ssid.length>=0&&(e.ssid=t.ssid)),t.bssid!=null&&(typeof t.bssid=="string"?$util.base64.decode(t.bssid,e.bssid=$util.newBuffer($util.base64.length(t.bssid)),0):t.bssid.length>=0&&(e.bssid=t.bssid)),t.channel!=null&&(e.channel=t.channel|0),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.ip4Addr="",r.authMode=e.enums===String?"Open":0,e.bytes===String?r.ssid="":(r.ssid=[],e.bytes!==Array&&(r.ssid=$util.newBuffer(r.ssid))),e.bytes===String?r.bssid="":(r.bssid=[],e.bytes!==Array&&(r.bssid=$util.newBuffer(r.bssid))),r.channel=0),t.ip4Addr!=null&&t.hasOwnProperty("ip4Addr")&&(r.ip4Addr=t.ip4Addr),t.authMode!=null&&t.hasOwnProperty("authMode")&&(r.authMode=e.enums===String?$root.WifiAuthMode[t.authMode]===void 0?t.authMode:$root.WifiAuthMode[t.authMode]:t.authMode),t.ssid!=null&&t.hasOwnProperty("ssid")&&(r.ssid=e.bytes===String?$util.base64.encode(t.ssid,0,t.ssid.length):e.bytes===Array?Array.prototype.slice.call(t.ssid):t.ssid),t.bssid!=null&&t.hasOwnProperty("bssid")&&(r.bssid=e.bytes===String?$util.base64.encode(t.bssid,0,t.bssid.length):e.bytes===Array?Array.prototype.slice.call(t.bssid):t.bssid),t.channel!=null&&t.hasOwnProperty("channel")&&(r.channel=t.channel),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/WifiConnectedState"},i})();$root.CmdCtrlReset=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdCtrlReset;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.CmdCtrlReset?t:new $root.CmdCtrlReset},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdCtrlReset"},i})();$root.RespCtrlReset=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespCtrlReset;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.RespCtrlReset?t:new $root.RespCtrlReset},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespCtrlReset"},i})();$root.CmdCtrlReprov=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdCtrlReprov;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.CmdCtrlReprov?t:new $root.CmdCtrlReprov},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdCtrlReprov"},i})();$root.RespCtrlReprov=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespCtrlReprov;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.RespCtrlReprov?t:new $root.RespCtrlReprov},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespCtrlReprov"},i})();$root.WiFiCtrlMsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="TypeCtrlReserved"]=0,n[i[1]="TypeCmdCtrlReset"]=1,n[i[2]="TypeRespCtrlReset"]=2,n[i[3]="TypeCmdCtrlReprov"]=3,n[i[4]="TypeRespCtrlReprov"]=4,n})();$root.WiFiCtrlPayload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.status=0,i.prototype.cmdCtrlReset=null,i.prototype.respCtrlReset=null,i.prototype.cmdCtrlReprov=null,i.prototype.respCtrlReprov=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["cmdCtrlReset","respCtrlReset","cmdCtrlReprov","respCtrlReprov"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.status!=null&&Object.hasOwnProperty.call(e,"status")&&r.uint32(16).int32(e.status),e.cmdCtrlReset!=null&&Object.hasOwnProperty.call(e,"cmdCtrlReset")&&$root.CmdCtrlReset.encode(e.cmdCtrlReset,r.uint32(90).fork()).ldelim(),e.respCtrlReset!=null&&Object.hasOwnProperty.call(e,"respCtrlReset")&&$root.RespCtrlReset.encode(e.respCtrlReset,r.uint32(98).fork()).ldelim(),e.cmdCtrlReprov!=null&&Object.hasOwnProperty.call(e,"cmdCtrlReprov")&&$root.CmdCtrlReprov.encode(e.cmdCtrlReprov,r.uint32(106).fork()).ldelim(),e.respCtrlReprov!=null&&Object.hasOwnProperty.call(e,"respCtrlReprov")&&$root.RespCtrlReprov.encode(e.respCtrlReprov,r.uint32(114).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.WiFiCtrlPayload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 2:{c.status=e.int32();break}case 11:{c.cmdCtrlReset=$root.CmdCtrlReset.decode(e,e.uint32());break}case 12:{c.respCtrlReset=$root.RespCtrlReset.decode(e,e.uint32());break}case 13:{c.cmdCtrlReprov=$root.CmdCtrlReprov.decode(e,e.uint32());break}case 14:{c.respCtrlReprov=$root.RespCtrlReprov.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:case 2:case 3:case 4:break}if(e.status!=null&&e.hasOwnProperty("status"))switch(e.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}if(e.cmdCtrlReset!=null&&e.hasOwnProperty("cmdCtrlReset")){r.payload=1;{let o=$root.CmdCtrlReset.verify(e.cmdCtrlReset);if(o)return"cmdCtrlReset."+o}}if(e.respCtrlReset!=null&&e.hasOwnProperty("respCtrlReset")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespCtrlReset.verify(e.respCtrlReset);if(o)return"respCtrlReset."+o}}if(e.cmdCtrlReprov!=null&&e.hasOwnProperty("cmdCtrlReprov")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.CmdCtrlReprov.verify(e.cmdCtrlReprov);if(o)return"cmdCtrlReprov."+o}}if(e.respCtrlReprov!=null&&e.hasOwnProperty("respCtrlReprov")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespCtrlReprov.verify(e.respCtrlReprov);if(o)return"respCtrlReprov."+o}}return null},i.fromObject=function(e){if(e instanceof $root.WiFiCtrlPayload)return e;let r=new $root.WiFiCtrlPayload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"TypeCtrlReserved":case 0:r.msg=0;break;case"TypeCmdCtrlReset":case 1:r.msg=1;break;case"TypeRespCtrlReset":case 2:r.msg=2;break;case"TypeCmdCtrlReprov":case 3:r.msg=3;break;case"TypeRespCtrlReprov":case 4:r.msg=4;break}switch(e.status){default:if(typeof e.status=="number"){r.status=e.status;break}break;case"Success":case 0:r.status=0;break;case"InvalidSecScheme":case 1:r.status=1;break;case"InvalidProto":case 2:r.status=2;break;case"TooManySessions":case 3:r.status=3;break;case"InvalidArgument":case 4:r.status=4;break;case"InternalError":case 5:r.status=5;break;case"CryptoError":case 6:r.status=6;break;case"InvalidSession":case 7:r.status=7;break}if(e.cmdCtrlReset!=null){if(typeof e.cmdCtrlReset!="object")throw TypeError(".WiFiCtrlPayload.cmdCtrlReset: object expected");r.cmdCtrlReset=$root.CmdCtrlReset.fromObject(e.cmdCtrlReset)}if(e.respCtrlReset!=null){if(typeof e.respCtrlReset!="object")throw TypeError(".WiFiCtrlPayload.respCtrlReset: object expected");r.respCtrlReset=$root.RespCtrlReset.fromObject(e.respCtrlReset)}if(e.cmdCtrlReprov!=null){if(typeof e.cmdCtrlReprov!="object")throw TypeError(".WiFiCtrlPayload.cmdCtrlReprov: object expected");r.cmdCtrlReprov=$root.CmdCtrlReprov.fromObject(e.cmdCtrlReprov)}if(e.respCtrlReprov!=null){if(typeof e.respCtrlReprov!="object")throw TypeError(".WiFiCtrlPayload.respCtrlReprov: object expected");r.respCtrlReprov=$root.RespCtrlReprov.fromObject(e.respCtrlReprov)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"TypeCtrlReserved":0,o.status=r.enums===String?"Success":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.WiFiCtrlMsgType[e.msg]===void 0?e.msg:$root.WiFiCtrlMsgType[e.msg]:e.msg),e.status!=null&&e.hasOwnProperty("status")&&(o.status=r.enums===String?$root.Status[e.status]===void 0?e.status:$root.Status[e.status]:e.status),e.cmdCtrlReset!=null&&e.hasOwnProperty("cmdCtrlReset")&&(o.cmdCtrlReset=$root.CmdCtrlReset.toObject(e.cmdCtrlReset,r),r.oneofs&&(o.payload="cmdCtrlReset")),e.respCtrlReset!=null&&e.hasOwnProperty("respCtrlReset")&&(o.respCtrlReset=$root.RespCtrlReset.toObject(e.respCtrlReset,r),r.oneofs&&(o.payload="respCtrlReset")),e.cmdCtrlReprov!=null&&e.hasOwnProperty("cmdCtrlReprov")&&(o.cmdCtrlReprov=$root.CmdCtrlReprov.toObject(e.cmdCtrlReprov,r),r.oneofs&&(o.payload="cmdCtrlReprov")),e.respCtrlReprov!=null&&e.hasOwnProperty("respCtrlReprov")&&(o.respCtrlReprov=$root.RespCtrlReprov.toObject(e.respCtrlReprov,r),r.oneofs&&(o.payload="respCtrlReprov")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/WiFiCtrlPayload"},i})();const CmdScanStart=$root.CmdScanStart=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.blocking=!1,i.prototype.passive=!1,i.prototype.groupChannels=0,i.prototype.periodMs=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.blocking!=null&&Object.hasOwnProperty.call(t,"blocking")&&e.uint32(8).bool(t.blocking),t.passive!=null&&Object.hasOwnProperty.call(t,"passive")&&e.uint32(16).bool(t.passive),t.groupChannels!=null&&Object.hasOwnProperty.call(t,"groupChannels")&&e.uint32(24).uint32(t.groupChannels),t.periodMs!=null&&Object.hasOwnProperty.call(t,"periodMs")&&e.uint32(32).uint32(t.periodMs),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdScanStart;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.blocking=t.bool();break}case 2:{s.passive=t.bool();break}case 3:{s.groupChannels=t.uint32();break}case 4:{s.periodMs=t.uint32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.blocking!=null&&t.hasOwnProperty("blocking")&&typeof t.blocking!="boolean"?"blocking: boolean expected":t.passive!=null&&t.hasOwnProperty("passive")&&typeof t.passive!="boolean"?"passive: boolean expected":t.groupChannels!=null&&t.hasOwnProperty("groupChannels")&&!$util.isInteger(t.groupChannels)?"groupChannels: integer expected":t.periodMs!=null&&t.hasOwnProperty("periodMs")&&!$util.isInteger(t.periodMs)?"periodMs: integer expected":null},i.fromObject=function(t){if(t instanceof $root.CmdScanStart)return t;let e=new $root.CmdScanStart;return t.blocking!=null&&(e.blocking=!!t.blocking),t.passive!=null&&(e.passive=!!t.passive),t.groupChannels!=null&&(e.groupChannels=t.groupChannels>>>0),t.periodMs!=null&&(e.periodMs=t.periodMs>>>0),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.blocking=!1,r.passive=!1,r.groupChannels=0,r.periodMs=0),t.blocking!=null&&t.hasOwnProperty("blocking")&&(r.blocking=t.blocking),t.passive!=null&&t.hasOwnProperty("passive")&&(r.passive=t.passive),t.groupChannels!=null&&t.hasOwnProperty("groupChannels")&&(r.groupChannels=t.groupChannels),t.periodMs!=null&&t.hasOwnProperty("periodMs")&&(r.periodMs=t.periodMs),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdScanStart"},i})();$root.RespScanStart=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespScanStart;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.RespScanStart?t:new $root.RespScanStart},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespScanStart"},i})();const CmdScanStatus=$root.CmdScanStatus=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdScanStatus;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.CmdScanStatus?t:new $root.CmdScanStatus},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdScanStatus"},i})();$root.RespScanStatus=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.scanFinished=!1,i.prototype.resultCount=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.scanFinished!=null&&Object.hasOwnProperty.call(t,"scanFinished")&&e.uint32(8).bool(t.scanFinished),t.resultCount!=null&&Object.hasOwnProperty.call(t,"resultCount")&&e.uint32(16).uint32(t.resultCount),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespScanStatus;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.scanFinished=t.bool();break}case 2:{s.resultCount=t.uint32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.scanFinished!=null&&t.hasOwnProperty("scanFinished")&&typeof t.scanFinished!="boolean"?"scanFinished: boolean expected":t.resultCount!=null&&t.hasOwnProperty("resultCount")&&!$util.isInteger(t.resultCount)?"resultCount: integer expected":null},i.fromObject=function(t){if(t instanceof $root.RespScanStatus)return t;let e=new $root.RespScanStatus;return t.scanFinished!=null&&(e.scanFinished=!!t.scanFinished),t.resultCount!=null&&(e.resultCount=t.resultCount>>>0),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.scanFinished=!1,r.resultCount=0),t.scanFinished!=null&&t.hasOwnProperty("scanFinished")&&(r.scanFinished=t.scanFinished),t.resultCount!=null&&t.hasOwnProperty("resultCount")&&(r.resultCount=t.resultCount),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespScanStatus"},i})();const CmdScanResult=$root.CmdScanResult=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.startIndex=0,i.prototype.count=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.startIndex!=null&&Object.hasOwnProperty.call(t,"startIndex")&&e.uint32(8).uint32(t.startIndex),t.count!=null&&Object.hasOwnProperty.call(t,"count")&&e.uint32(16).uint32(t.count),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdScanResult;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.startIndex=t.uint32();break}case 2:{s.count=t.uint32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.startIndex!=null&&t.hasOwnProperty("startIndex")&&!$util.isInteger(t.startIndex)?"startIndex: integer expected":t.count!=null&&t.hasOwnProperty("count")&&!$util.isInteger(t.count)?"count: integer expected":null},i.fromObject=function(t){if(t instanceof $root.CmdScanResult)return t;let e=new $root.CmdScanResult;return t.startIndex!=null&&(e.startIndex=t.startIndex>>>0),t.count!=null&&(e.count=t.count>>>0),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.startIndex=0,r.count=0),t.startIndex!=null&&t.hasOwnProperty("startIndex")&&(r.startIndex=t.startIndex),t.count!=null&&t.hasOwnProperty("count")&&(r.count=t.count),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdScanResult"},i})();$root.WiFiScanResult=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.ssid=$util.newBuffer([]),i.prototype.channel=0,i.prototype.rssi=0,i.prototype.bssid=$util.newBuffer([]),i.prototype.auth=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.ssid!=null&&Object.hasOwnProperty.call(t,"ssid")&&e.uint32(10).bytes(t.ssid),t.channel!=null&&Object.hasOwnProperty.call(t,"channel")&&e.uint32(16).uint32(t.channel),t.rssi!=null&&Object.hasOwnProperty.call(t,"rssi")&&e.uint32(24).int32(t.rssi),t.bssid!=null&&Object.hasOwnProperty.call(t,"bssid")&&e.uint32(34).bytes(t.bssid),t.auth!=null&&Object.hasOwnProperty.call(t,"auth")&&e.uint32(40).int32(t.auth),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.WiFiScanResult;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.ssid=t.bytes();break}case 2:{s.channel=t.uint32();break}case 3:{s.rssi=t.int32();break}case 4:{s.bssid=t.bytes();break}case 5:{s.auth=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.ssid!=null&&t.hasOwnProperty("ssid")&&!(t.ssid&&typeof t.ssid.length=="number"||$util.isString(t.ssid)))return"ssid: buffer expected";if(t.channel!=null&&t.hasOwnProperty("channel")&&!$util.isInteger(t.channel))return"channel: integer expected";if(t.rssi!=null&&t.hasOwnProperty("rssi")&&!$util.isInteger(t.rssi))return"rssi: integer expected";if(t.bssid!=null&&t.hasOwnProperty("bssid")&&!(t.bssid&&typeof t.bssid.length=="number"||$util.isString(t.bssid)))return"bssid: buffer expected";if(t.auth!=null&&t.hasOwnProperty("auth"))switch(t.auth){default:return"auth: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return null},i.fromObject=function(t){if(t instanceof $root.WiFiScanResult)return t;let e=new $root.WiFiScanResult;switch(t.ssid!=null&&(typeof t.ssid=="string"?$util.base64.decode(t.ssid,e.ssid=$util.newBuffer($util.base64.length(t.ssid)),0):t.ssid.length>=0&&(e.ssid=t.ssid)),t.channel!=null&&(e.channel=t.channel>>>0),t.rssi!=null&&(e.rssi=t.rssi|0),t.bssid!=null&&(typeof t.bssid=="string"?$util.base64.decode(t.bssid,e.bssid=$util.newBuffer($util.base64.length(t.bssid)),0):t.bssid.length>=0&&(e.bssid=t.bssid)),t.auth){default:if(typeof t.auth=="number"){e.auth=t.auth;break}break;case"Open":case 0:e.auth=0;break;case"WEP":case 1:e.auth=1;break;case"WPA_PSK":case 2:e.auth=2;break;case"WPA2_PSK":case 3:e.auth=3;break;case"WPA_WPA2_PSK":case 4:e.auth=4;break;case"WPA2_ENTERPRISE":case 5:e.auth=5;break;case"WPA3_PSK":case 6:e.auth=6;break;case"WPA2_WPA3_PSK":case 7:e.auth=7;break}return e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.ssid="":(r.ssid=[],e.bytes!==Array&&(r.ssid=$util.newBuffer(r.ssid))),r.channel=0,r.rssi=0,e.bytes===String?r.bssid="":(r.bssid=[],e.bytes!==Array&&(r.bssid=$util.newBuffer(r.bssid))),r.auth=e.enums===String?"Open":0),t.ssid!=null&&t.hasOwnProperty("ssid")&&(r.ssid=e.bytes===String?$util.base64.encode(t.ssid,0,t.ssid.length):e.bytes===Array?Array.prototype.slice.call(t.ssid):t.ssid),t.channel!=null&&t.hasOwnProperty("channel")&&(r.channel=t.channel),t.rssi!=null&&t.hasOwnProperty("rssi")&&(r.rssi=t.rssi),t.bssid!=null&&t.hasOwnProperty("bssid")&&(r.bssid=e.bytes===String?$util.base64.encode(t.bssid,0,t.bssid.length):e.bytes===Array?Array.prototype.slice.call(t.bssid):t.bssid),t.auth!=null&&t.hasOwnProperty("auth")&&(r.auth=e.enums===String?$root.WifiAuthMode[t.auth]===void 0?t.auth:$root.WifiAuthMode[t.auth]:t.auth),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/WiFiScanResult"},i})();$root.RespScanResult=(()=>{function i(n){if(this.entries=[],n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.entries=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.entries!=null&&t.entries.length)for(let r=0;r<t.entries.length;++r)$root.WiFiScanResult.encode(t.entries[r],e.uint32(10).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespScanResult;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.entries&&s.entries.length||(s.entries=[]),s.entries.push($root.WiFiScanResult.decode(t,t.uint32()));break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.entries!=null&&t.hasOwnProperty("entries")){if(!Array.isArray(t.entries))return"entries: array expected";for(let e=0;e<t.entries.length;++e){let r=$root.WiFiScanResult.verify(t.entries[e]);if(r)return"entries."+r}}return null},i.fromObject=function(t){if(t instanceof $root.RespScanResult)return t;let e=new $root.RespScanResult;if(t.entries){if(!Array.isArray(t.entries))throw TypeError(".RespScanResult.entries: array expected");e.entries=[];for(let r=0;r<t.entries.length;++r){if(typeof t.entries[r]!="object")throw TypeError(".RespScanResult.entries: object expected");e.entries[r]=$root.WiFiScanResult.fromObject(t.entries[r])}}return e},i.toObject=function(t,e){e||(e={});let r={};if((e.arrays||e.defaults)&&(r.entries=[]),t.entries&&t.entries.length){r.entries=[];for(let o=0;o<t.entries.length;++o)r.entries[o]=$root.WiFiScanResult.toObject(t.entries[o],e)}return r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespScanResult"},i})();const WiFiScanMsgType=$root.WiFiScanMsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="TypeCmdScanStart"]=0,n[i[1]="TypeRespScanStart"]=1,n[i[2]="TypeCmdScanStatus"]=2,n[i[3]="TypeRespScanStatus"]=3,n[i[4]="TypeCmdScanResult"]=4,n[i[5]="TypeRespScanResult"]=5,n})(),WiFiScanPayload=$root.WiFiScanPayload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.status=0,i.prototype.cmdScanStart=null,i.prototype.respScanStart=null,i.prototype.cmdScanStatus=null,i.prototype.respScanStatus=null,i.prototype.cmdScanResult=null,i.prototype.respScanResult=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["cmdScanStart","respScanStart","cmdScanStatus","respScanStatus","cmdScanResult","respScanResult"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.status!=null&&Object.hasOwnProperty.call(e,"status")&&r.uint32(16).int32(e.status),e.cmdScanStart!=null&&Object.hasOwnProperty.call(e,"cmdScanStart")&&$root.CmdScanStart.encode(e.cmdScanStart,r.uint32(82).fork()).ldelim(),e.respScanStart!=null&&Object.hasOwnProperty.call(e,"respScanStart")&&$root.RespScanStart.encode(e.respScanStart,r.uint32(90).fork()).ldelim(),e.cmdScanStatus!=null&&Object.hasOwnProperty.call(e,"cmdScanStatus")&&$root.CmdScanStatus.encode(e.cmdScanStatus,r.uint32(98).fork()).ldelim(),e.respScanStatus!=null&&Object.hasOwnProperty.call(e,"respScanStatus")&&$root.RespScanStatus.encode(e.respScanStatus,r.uint32(106).fork()).ldelim(),e.cmdScanResult!=null&&Object.hasOwnProperty.call(e,"cmdScanResult")&&$root.CmdScanResult.encode(e.cmdScanResult,r.uint32(114).fork()).ldelim(),e.respScanResult!=null&&Object.hasOwnProperty.call(e,"respScanResult")&&$root.RespScanResult.encode(e.respScanResult,r.uint32(122).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.WiFiScanPayload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 2:{c.status=e.int32();break}case 10:{c.cmdScanStart=$root.CmdScanStart.decode(e,e.uint32());break}case 11:{c.respScanStart=$root.RespScanStart.decode(e,e.uint32());break}case 12:{c.cmdScanStatus=$root.CmdScanStatus.decode(e,e.uint32());break}case 13:{c.respScanStatus=$root.RespScanStatus.decode(e,e.uint32());break}case 14:{c.cmdScanResult=$root.CmdScanResult.decode(e,e.uint32());break}case 15:{c.respScanResult=$root.RespScanResult.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:break}if(e.status!=null&&e.hasOwnProperty("status"))switch(e.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}if(e.cmdScanStart!=null&&e.hasOwnProperty("cmdScanStart")){r.payload=1;{let o=$root.CmdScanStart.verify(e.cmdScanStart);if(o)return"cmdScanStart."+o}}if(e.respScanStart!=null&&e.hasOwnProperty("respScanStart")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespScanStart.verify(e.respScanStart);if(o)return"respScanStart."+o}}if(e.cmdScanStatus!=null&&e.hasOwnProperty("cmdScanStatus")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.CmdScanStatus.verify(e.cmdScanStatus);if(o)return"cmdScanStatus."+o}}if(e.respScanStatus!=null&&e.hasOwnProperty("respScanStatus")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespScanStatus.verify(e.respScanStatus);if(o)return"respScanStatus."+o}}if(e.cmdScanResult!=null&&e.hasOwnProperty("cmdScanResult")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.CmdScanResult.verify(e.cmdScanResult);if(o)return"cmdScanResult."+o}}if(e.respScanResult!=null&&e.hasOwnProperty("respScanResult")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespScanResult.verify(e.respScanResult);if(o)return"respScanResult."+o}}return null},i.fromObject=function(e){if(e instanceof $root.WiFiScanPayload)return e;let r=new $root.WiFiScanPayload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"TypeCmdScanStart":case 0:r.msg=0;break;case"TypeRespScanStart":case 1:r.msg=1;break;case"TypeCmdScanStatus":case 2:r.msg=2;break;case"TypeRespScanStatus":case 3:r.msg=3;break;case"TypeCmdScanResult":case 4:r.msg=4;break;case"TypeRespScanResult":case 5:r.msg=5;break}switch(e.status){default:if(typeof e.status=="number"){r.status=e.status;break}break;case"Success":case 0:r.status=0;break;case"InvalidSecScheme":case 1:r.status=1;break;case"InvalidProto":case 2:r.status=2;break;case"TooManySessions":case 3:r.status=3;break;case"InvalidArgument":case 4:r.status=4;break;case"InternalError":case 5:r.status=5;break;case"CryptoError":case 6:r.status=6;break;case"InvalidSession":case 7:r.status=7;break}if(e.cmdScanStart!=null){if(typeof e.cmdScanStart!="object")throw TypeError(".WiFiScanPayload.cmdScanStart: object expected");r.cmdScanStart=$root.CmdScanStart.fromObject(e.cmdScanStart)}if(e.respScanStart!=null){if(typeof e.respScanStart!="object")throw TypeError(".WiFiScanPayload.respScanStart: object expected");r.respScanStart=$root.RespScanStart.fromObject(e.respScanStart)}if(e.cmdScanStatus!=null){if(typeof e.cmdScanStatus!="object")throw TypeError(".WiFiScanPayload.cmdScanStatus: object expected");r.cmdScanStatus=$root.CmdScanStatus.fromObject(e.cmdScanStatus)}if(e.respScanStatus!=null){if(typeof e.respScanStatus!="object")throw TypeError(".WiFiScanPayload.respScanStatus: object expected");r.respScanStatus=$root.RespScanStatus.fromObject(e.respScanStatus)}if(e.cmdScanResult!=null){if(typeof e.cmdScanResult!="object")throw TypeError(".WiFiScanPayload.cmdScanResult: object expected");r.cmdScanResult=$root.CmdScanResult.fromObject(e.cmdScanResult)}if(e.respScanResult!=null){if(typeof e.respScanResult!="object")throw TypeError(".WiFiScanPayload.respScanResult: object expected");r.respScanResult=$root.RespScanResult.fromObject(e.respScanResult)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"TypeCmdScanStart":0,o.status=r.enums===String?"Success":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.WiFiScanMsgType[e.msg]===void 0?e.msg:$root.WiFiScanMsgType[e.msg]:e.msg),e.status!=null&&e.hasOwnProperty("status")&&(o.status=r.enums===String?$root.Status[e.status]===void 0?e.status:$root.Status[e.status]:e.status),e.cmdScanStart!=null&&e.hasOwnProperty("cmdScanStart")&&(o.cmdScanStart=$root.CmdScanStart.toObject(e.cmdScanStart,r),r.oneofs&&(o.payload="cmdScanStart")),e.respScanStart!=null&&e.hasOwnProperty("respScanStart")&&(o.respScanStart=$root.RespScanStart.toObject(e.respScanStart,r),r.oneofs&&(o.payload="respScanStart")),e.cmdScanStatus!=null&&e.hasOwnProperty("cmdScanStatus")&&(o.cmdScanStatus=$root.CmdScanStatus.toObject(e.cmdScanStatus,r),r.oneofs&&(o.payload="cmdScanStatus")),e.respScanStatus!=null&&e.hasOwnProperty("respScanStatus")&&(o.respScanStatus=$root.RespScanStatus.toObject(e.respScanStatus,r),r.oneofs&&(o.payload="respScanStatus")),e.cmdScanResult!=null&&e.hasOwnProperty("cmdScanResult")&&(o.cmdScanResult=$root.CmdScanResult.toObject(e.cmdScanResult,r),r.oneofs&&(o.payload="cmdScanResult")),e.respScanResult!=null&&e.hasOwnProperty("respScanResult")&&(o.respScanResult=$root.RespScanResult.toObject(e.respScanResult,r),r.oneofs&&(o.payload="respScanResult")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/WiFiScanPayload"},i})();class Security0 extends Security{constructor(){super(...arguments),this.established=!1}async encrypt(n){return n}async decrypt(n){return n}async getSessionSetupRequest(){let n=SessionData.create({});return n.secVer=SecSchemeVersion.SecScheme0,n.sec0=Sec0Payload.create({msg:Sec0MsgType.S0_Session_Command,sc:S0SessionCmd.create({})}),Sec0Payload.encode(n).finish()}async processSessionSetupResponse(n){const t=SessionData.decode(n);if(t.secVer===SecSchemeVersion.SecScheme0&&t.sec0)this.established=!0;else throw new Error("Invalid session setup response for Security0")}isEstablished(){return this.established}}const PROTO_ENDPOINTS={PROV_SESSION:"prov-session",PROV_SCAN:"prov-scan",PROV_CTRL:"prov-ctrl",PROV_CONFIG:"prov-config",PROTO_VER:"proto-ver"},DEFAULT_DEVICE_PREFIX="PROV_",FALLBACK_SERVICE_UUID="1775244d-6b43-439b-877c-060f2d9bed07",FALLBACK_NU_LOOKUP={"prov-session":"ff51","prov-config":"ff52","proto-ver":"ff53"},DEFAULT_BLE_DEVICE_OPTIONS={filters:[{namePrefix:DEFAULT_DEVICE_PREFIX},{services:[FALLBACK_SERVICE_UUID]}],optionalServices:[FALLBACK_SERVICE_UUID]};var ESPWifiAuthMode=(i=>(i[i.open=0]="open",i[i.wep=1]="wep",i[i.wpa2Enterprise=2]="wpa2Enterprise",i[i.wpa2Psk=3]="wpa2Psk",i[i.wpaPsk=4]="wpaPsk",i[i.wpaWpa2Psk=5]="wpaWpa2Psk",i[i.wpa3Psk=6]="wpa3Psk",i[i.wpa2Wpa3Psk=7]="wpa2Wpa3Psk",i))(ESPWifiAuthMode||{}),ESPWifiStaState=(i=>(i[i.connected=0]="connected",i[i.connecting=1]="connecting",i[i.disconnected=2]="disconnected",i[i.failed=3]="failed",i))(ESPWifiStaState||{}),ESPConnectFailReason=(i=>(i[i.authError=1]="authError",i[i.networkNotFound=2]="networkNotFound",i))(ESPConnectFailReason||{});function wifiAuthModeToESPWifiAuthMode(i){switch(i){case WifiAuthMode.Open:return ESPWifiAuthMode.open;case WifiAuthMode.WEP:return ESPWifiAuthMode.wep;case WifiAuthMode.WPA_PSK:return ESPWifiAuthMode.wpaPsk;case WifiAuthMode.WPA2_PSK:return ESPWifiAuthMode.wpa2Psk;case WifiAuthMode.WPA_WPA2_PSK:return ESPWifiAuthMode.wpaWpa2Psk;case WifiAuthMode.WPA2_ENTERPRISE:return ESPWifiAuthMode.wpa2Enterprise;case WifiAuthMode.WPA3_PSK:return ESPWifiAuthMode.wpa3Psk;case WifiAuthMode.WPA2_WPA3_PSK:return ESPWifiAuthMode.wpa2Wpa3Psk}}function getScanStartRequest(i=!0,n=!1,t=5,e=120){let r=CmdScanStart.create({});r.blocking=i,r.passive=n,r.groupChannels=t,r.periodMs=e;const o=WiFiScanPayload.create({msg:WiFiScanMsgType.TypeCmdScanStart,cmdScanStart:r});return WiFiScanPayload.encode(o).finish()}function processScanStartResponse(i){try{const n=WiFiScanPayload.decode(i);if(n.status!==Status.Success)throw new Error(`Scan start failed: ${n.status}`)}catch(n){console.error("Error processing scan start response:",n)}}function getScanStatusRequest(){const i=WiFiScanPayload.create({msg:WiFiScanMsgType.TypeCmdScanStatus,cmdScanStatus:CmdScanStatus.create({})});return WiFiScanPayload.encode(i).finish()}function processScanStatusResponse(i){try{const n=WiFiScanPayload.decode(i);if(n.status!==Status.Success)throw new Error(`Scan status failed: ${n.status}`);const t=n.respScanStatus;return{scanFinished:t.scanFinished,count:t.resultCount}}catch{throw new Error("Failed to decode scan status response")}}function getScanResultRequest(i,n){let t=CmdScanResult.create({});t.startIndex=i,t.count=n;const e=WiFiScanPayload.create({msg:WiFiScanMsgType.TypeCmdScanResult,cmdScanResult:t});return WiFiScanPayload.encode(e).finish()}function processScanResultResponse(i){try{const n=WiFiScanPayload.decode(i);if(n.status!==Status.Success)throw new Error(`Scan result failed: ${n.status}`);return n.respScanResult.entries.map(r=>{const o=r;return{ssid:bytesToString(o.ssid),rssi:o.rssi,auth:wifiAuthModeToESPWifiAuthMode(o.auth),bssid:bytesToHex(o.bssid),channel:o.channel}})}catch{throw new Error("Failed to decode scan result response")}}function getConfigStatusRequest(){let i=WiFiConfigPayload.create({});return i.msg=WiFiConfigMsgType.TypeCmdGetStatus,i.cmdGetStatus=CmdGetStatus.create({}),WiFiConfigPayload.encode(i).finish()}function processConfigStatusResponse(i){try{const t=WiFiConfigPayload.decode(i).respGetStatus;if(t.status!==Status.Success)throw new Error(`Config status failed: ${t.status}`);let e;switch(t.staState){case WifiStationState.Disconnected:e=ESPWifiStaState.disconnected;break;case WifiStationState.Connecting:e=ESPWifiStaState.connecting;break;case WifiStationState.Connected:e=ESPWifiStaState.connected;break;case WifiStationState.ConnectionFailed:e=ESPWifiStaState.failed;break}let r;switch(t.failReason){case WifiConnectFailedReason.AuthError:r=ESPConnectFailReason.authError;break;case WifiConnectFailedReason.NetworkNotFound:r=ESPConnectFailReason.networkNotFound;break;default:break}let o;return t.connected&&(o={ssid:bytesToString(t.connected.ssid),rssi:t.connected.rssi,auth:wifiAuthModeToESPWifiAuthMode(t.connected.auth),bssid:bytesToHex(t.connected.bssid),channel:t.connected.channel}),{staState:e,failedReason:r,connected:o}}catch{throw new Error("Failed to decode config status response")}}function getConfigUpdateRequest(i,n){let t=WiFiConfigPayload.create({});return t.msg=WiFiConfigMsgType.TypeCmdSetConfig,t.cmdSetConfig=CmdSetConfig.create({ssid:stringToBytes(i),passphrase:stringToBytes(n)}),WiFiConfigPayload.encode(t).finish()}function processConfigUpdateResponse(i){try{const t=WiFiConfigPayload.decode(i).respSetConfig;if(t.status!==Status.Success)throw new Error(`Config update failed: ${t.status}`)}catch{throw new Error("Failed to decode config update response")}}function getConfigApplyRequest(){let i=WiFiConfigPayload.create({});return i.msg=WiFiConfigMsgType.TypeCmdApplyConfig,i.cmdApplyConfig=CmdApplyConfig.create({}),WiFiConfigPayload.encode(i).finish()}function processConfigApplyResponse(i){try{const t=WiFiConfigPayload.decode(i).respApplyConfig;if(t.status!==Status.Success)throw new Error(`Config apply failed: ${t.status}`)}catch{throw new Error("Failed to decode config apply response")}}class ESPDevice{constructor(n){this.device=n}async connect(n){await this.initializeTransport(),this.initializeSecurity(n),n&&await this.establishSession()}async scanWifiList(){if(!this.transportImpl||!this.securityImpl)throw new Error("Device not connected");try{const n=getScanStartRequest(),t=await this.sendData(PROTO_ENDPOINTS.PROV_SCAN,n);processScanStartResponse(t);const e=getScanStatusRequest(),r=await this.sendData(PROTO_ENDPOINTS.PROV_SCAN,e),{scanFinished:o,count:s}=processScanStatusResponse(r);if(!o)throw new Error("WiFi scan should have finished");let c=[];for(let u=0;u<s;u++){const l=getScanResultRequest(u,1),a=await this.sendData(PROTO_ENDPOINTS.PROV_SCAN,l),f=processScanResultResponse(a);c=c.concat(f)}return c}catch(n){throw new Error(`WiFi scan failed: ${n}`)}}async provision(n,t){if(!this.transportImpl||!this.securityImpl)throw new Error("Device not connected");try{const e=getConfigUpdateRequest(n,t),r=await this.sendData(PROTO_ENDPOINTS.PROV_CONFIG,e);processConfigUpdateResponse(r);const o=getConfigApplyRequest(),s=await this.sendData(PROTO_ENDPOINTS.PROV_CONFIG,o);processConfigApplyResponse(s)}catch(e){throw new Error(`Provisioning failed: ${e}`)}}async fetchWifiStatus(){if(!this.transportImpl||!this.securityImpl)throw new Error("Device not connected");try{const n=getConfigStatusRequest(),t=await this.sendData(PROTO_ENDPOINTS.PROV_CONFIG,n);return processConfigStatusResponse(t)}catch(n){throw new Error(`Fetching WiFi status failed: ${n}`)}}async sendData(n,t){if(!this.transportImpl||!this.securityImpl)throw new Error("Device not connected");const e=await this.securityImpl.encrypt(t);console.debug("Send encrypted data length:",e.length);const r=await this.transportImpl.sendData(n,e);return await this.securityImpl.decrypt(r)}disconnect(){this.transportImpl&&(this.transportImpl.disconnect(),this.transportImpl=void 0),this.securityImpl=void 0}getDevice(){return this.device}initializeSecurity(n){if(!n)this.securityImpl=new Security0;else throw new Error("Unsupported security configuration")}async establishSession(){if(!this.transportImpl||!this.securityImpl)throw new Error("Transport or security not initialized");const n=await this.securityImpl.getSessionSetupRequest(),t=await this.transportImpl.sendData(PROTO_ENDPOINTS.PROV_SESSION,n);await this.securityImpl.processSessionSetupResponse(t)}async initializeTransport(){this.device instanceof URL?this.transportImpl=new SoftAPTransport(this.device.toString()):this.transportImpl=new BLETransport(this.device,FALLBACK_SERVICE_UUID,new Map(Object.entries(FALLBACK_NU_LOOKUP))),await this.transportImpl.connect()}}class ESPProvisionManager{static async searchBLEDevice(n=DEFAULT_BLE_DEVICE_OPTIONS){if(!await ESPProvisionManager.getBluetoothAvailability())throw new Error("Web Bluetooth is not available.");try{const e=await navigator.bluetooth.requestDevice(n);if(!e.name)throw new Error("Device name not available");return new ESPDevice(e)}catch(e){if(e.name==="NotFoundError")return null;throw new Error(`Device search failed: ${e}`)}}static createSoftAPDevice(n){return new ESPDevice(n)}static isBluetoothSupported(){return typeof navigator<"u"&&"bluetooth"in navigator}static async getBluetoothAvailability(){if(!this.isBluetoothSupported())return!1;try{return await navigator.bluetooth.getAvailability()}catch(n){return console.error("Failed to get Bluetooth availability:",n),!1}}}exports.DEFAULT_DEVICE_PREFIX=DEFAULT_DEVICE_PREFIX;exports.ESPDevice=ESPDevice;exports.ESPProvisionManager=ESPProvisionManager;exports.ESPWifiAuthMode=ESPWifiAuthMode;exports.ESPWifiStaState=ESPWifiStaState;exports.FALLBACK_SERVICE_UUID=FALLBACK_SERVICE_UUID;
package/dist/index.es.js CHANGED
@@ -4963,6 +4963,20 @@ class ESPDevice {
4963
4963
  throw new Error(`Fetching WiFi status failed: ${n}`);
4964
4964
  }
4965
4965
  }
4966
+ /**
4967
+ * Send custom data to device
4968
+ * @param path - Data endpoint path
4969
+ * @param data - Data to send
4970
+ * @returns Response data from device
4971
+ */
4972
+ async sendData(n, t) {
4973
+ if (!this.transportImpl || !this.securityImpl)
4974
+ throw new Error("Device not connected");
4975
+ const e = await this.securityImpl.encrypt(t);
4976
+ console.debug("Send encrypted data length:", e.length);
4977
+ const r = await this.transportImpl.sendData(n, e);
4978
+ return await this.securityImpl.decrypt(r);
4979
+ }
4966
4980
  /**
4967
4981
  * Disconnect from device
4968
4982
  */
@@ -5006,20 +5020,6 @@ class ESPDevice {
5006
5020
  new Map(Object.entries(FALLBACK_NU_LOOKUP))
5007
5021
  ), await this.transportImpl.connect();
5008
5022
  }
5009
- /**
5010
- * Send custom data to device
5011
- * @param path - Data endpoint path
5012
- * @param data - Data to send
5013
- * @returns Response data from device
5014
- */
5015
- async sendData(n, t) {
5016
- if (!this.transportImpl || !this.securityImpl)
5017
- throw new Error("Device not connected");
5018
- const e = await this.securityImpl.encrypt(t);
5019
- console.debug("Send encrypted data length:", e.length);
5020
- const r = await this.transportImpl.sendData(n, e);
5021
- return await this.securityImpl.decrypt(r);
5022
- }
5023
5023
  }
5024
5024
  class ESPProvisionManager {
5025
5025
  /**
package/dist/types.d.ts CHANGED
@@ -65,9 +65,10 @@ export interface ESPScanStatusResponse {
65
65
  export interface ESPDeviceInterface {
66
66
  connect(security?: ESPSecurityConfig): Promise<void>;
67
67
  scanWifiList(): Promise<ESPWifiAp[]>;
68
- disconnect(): void;
69
68
  provision(ssid: string, passphrase: string): Promise<void>;
70
69
  fetchWifiStatus(): Promise<ESPWifiStatus>;
70
+ sendData(path: string, data: Uint8Array): Promise<Uint8Array>;
71
+ disconnect(): void;
71
72
  getDevice(): BluetoothDevice | URL;
72
73
  }
73
74
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAI;IACR,GAAG,IAAI;IACP,cAAc,IAAI;IAClB,OAAO,IAAI;IACX,MAAM,IAAI;IACV,UAAU,IAAI;IACd,OAAO,IAAI;IACX,WAAW,IAAI;CAChB;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,SAAS,IAAI;IACb,UAAU,IAAI;IACd,YAAY,IAAI;IAChB,MAAM,IAAI;CACX;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,SAAS,IAAI;IACb,eAAe,IAAI;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAErC,UAAU,IAAI,IAAI,CAAC;IAEnB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1C,SAAS,IAAI,eAAe,GAAG,GAAG,CAAC;CACpC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAI;IACR,GAAG,IAAI;IACP,cAAc,IAAI;IAClB,OAAO,IAAI;IACX,MAAM,IAAI;IACV,UAAU,IAAI;IACd,OAAO,IAAI;IACX,WAAW,IAAI;CAChB;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,SAAS,IAAI;IACb,UAAU,IAAI;IACd,YAAY,IAAI;IAChB,MAAM,IAAI;CACX;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,SAAS,IAAI;IACb,eAAe,IAAI;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAErC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE9D,UAAU,IAAI,IAAI,CAAC;IAEnB,SAAS,IAAI,eAAe,GAAG,GAAG,CAAC;CACpC"}
package/package.json CHANGED
@@ -1,10 +1,17 @@
1
1
  {
2
2
  "name": "esp-idf-provisioning-web",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "ESP-IDF WiFi Provisioning SDK for web browsers",
5
- "main": "dist/index.js",
6
- "module": "dist/index.esm.js",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.es.js",
7
7
  "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.es.js",
12
+ "require": "./dist/index.cjs.js"
13
+ }
14
+ },
8
15
  "keywords": [
9
16
  "esp32",
10
17
  "esp-idf",
package/src/ESPDevice.ts CHANGED
@@ -141,6 +141,28 @@ export class ESPDevice implements ESPDeviceInterface {
141
141
  }
142
142
  }
143
143
 
144
+ /**
145
+ * Send custom data to device
146
+ * @param path - Data endpoint path
147
+ * @param data - Data to send
148
+ * @returns Response data from device
149
+ */
150
+ async sendData(path: string, data: Uint8Array): Promise<Uint8Array> {
151
+ if (!this.transportImpl || !this.securityImpl) {
152
+ throw new Error('Device not connected');
153
+ }
154
+
155
+ // Encrypt data if security is established
156
+ const encryptedData = await this.securityImpl.encrypt(data);
157
+ console.debug('Send encrypted data length:', encryptedData.length);
158
+
159
+ // Send encrypted data
160
+ const encryptedResponse = await this.transportImpl.sendData(path, encryptedData);
161
+
162
+ // Decrypt response
163
+ return await this.securityImpl.decrypt(encryptedResponse);
164
+ }
165
+
144
166
  /**
145
167
  * Disconnect from device
146
168
  */
@@ -206,26 +228,4 @@ export class ESPDevice implements ESPDeviceInterface {
206
228
  }
207
229
  await this.transportImpl.connect();
208
230
  }
209
-
210
- /**
211
- * Send custom data to device
212
- * @param path - Data endpoint path
213
- * @param data - Data to send
214
- * @returns Response data from device
215
- */
216
- private async sendData(path: string, data: Uint8Array): Promise<Uint8Array> {
217
- if (!this.transportImpl || !this.securityImpl) {
218
- throw new Error('Device not connected');
219
- }
220
-
221
- // Encrypt data if security is established
222
- const encryptedData = await this.securityImpl.encrypt(data);
223
- console.debug('Send encrypted data length:', encryptedData.length);
224
-
225
- // Send encrypted data
226
- const encryptedResponse = await this.transportImpl.sendData(path, encryptedData);
227
-
228
- // Decrypt response
229
- return await this.securityImpl.decrypt(encryptedResponse);
230
- }
231
231
  }
package/src/types.ts CHANGED
@@ -76,11 +76,13 @@ export interface ESPDeviceInterface {
76
76
 
77
77
  scanWifiList(): Promise<ESPWifiAp[]>;
78
78
 
79
- disconnect(): void;
80
-
81
79
  provision(ssid: string, passphrase: string): Promise<void>;
82
80
 
83
81
  fetchWifiStatus(): Promise<ESPWifiStatus>;
84
82
 
83
+ sendData(path: string, data: Uint8Array): Promise<Uint8Array>;
84
+
85
+ disconnect(): void;
86
+
85
87
  getDevice(): BluetoothDevice | URL;
86
88
  }