9remote 2.0.31 → 2.0.55

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/dist/cli.cjs CHANGED
@@ -1,105 +1,199 @@
1
1
  #!/usr/bin/env node
2
2
  const __importMetaUrl = require('url').pathToFileURL(__filename).href;
3
- var ls=Object.create;var Gn=Object.defineProperty;var us=Object.getOwnPropertyDescriptor;var fs=Object.getOwnPropertyNames;var ps=Object.getPrototypeOf,ds=Object.prototype.hasOwnProperty;var ms=(e,n)=>()=>(e&&(n=e(e=0)),n);var ne=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),hs=(e,n)=>{for(var r in n)Gn(e,r,{get:n[r],enumerable:!0})},gs=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of fs(n))!ds.call(e,t)&&t!==r&&Gn(e,t,{get:()=>n[t],enumerable:!(o=us(n,t))||o.enumerable});return e};var A=(e,n,r)=>(r=e!=null?ls(ps(e)):{},gs(n||!e||!e.__esModule?Gn(r,"default",{value:e,enumerable:!0}):r,e));var ui={};hs(ui,{initTray:()=>Tr,killTray:()=>Dn,openBrowser:()=>en,showTrayNotification:()=>Er,updateTrayTooltip:()=>Nn});function Ta(){if(process.platform==="win32"){for(let e of Sa)try{if(Zt.default.existsSync(e))return Zt.default.readFileSync(e).toString("base64")}catch{}return ii}return ii}function Ea(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function Ra(){let{port:e,tunnelUrl:n,running:r}=zt,o=r?n?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
3
+ var Ls=Object.create;var nr=Object.defineProperty;var Ms=Object.getOwnPropertyDescriptor;var Ns=Object.getOwnPropertyNames;var Ds=Object.getPrototypeOf,Fs=Object.prototype.hasOwnProperty;var Us=(e,n)=>()=>(e&&(n=e(e=0)),n);var se=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),Bs=(e,n)=>{for(var r in n)nr(e,r,{get:n[r],enumerable:!0})},Hs=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Ns(n))!Fs.call(e,t)&&t!==r&&nr(e,t,{get:()=>n[t],enumerable:!(o=Ms(n,t))||o.enumerable});return e};var A=(e,n,r)=>(r=e!=null?Ls(Ds(e)):{},Hs(n||!e||!e.__esModule?nr(r,"default",{value:e,enumerable:!0}):r,e));var uo=se((Kt,ir)=>{(function(e,n){typeof Kt=="object"&&typeof ir=="object"?ir.exports=n(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],n):typeof Kt=="object"?Kt["electron-machine-id"]=n(require("child_process"),require("crypto")):e["electron-machine-id"]=n(e.child_process,e.crypto)})(Kt,function(e,n){return(function(r){function o(i){if(t[i])return t[i].exports;var s=t[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var t={};return o.m=r,o.c=t,o.p="",o(0)})([function(r,o,t){r.exports=t(34)},function(r,o,t){var i=t(29)("wks"),s=t(33),a=t(2).Symbol,c=typeof a=="function",l=r.exports=function(u){return i[u]||(i[u]=c&&a[u]||(c?a:s)("Symbol."+u))};l.store=i},function(r,o){var t=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=t)},function(r,o,t){var i=t(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,t){r.exports=!t(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,t){var i=t(12),s=t(17);r.exports=t(4)?function(a,c,l){return i.f(a,c,s(1,l))}:function(a,c,l){return a[c]=l,a}},function(r,o){var t=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=t)},function(r,o,t){var i=t(14);r.exports=function(s,a,c){if(i(s),a===void 0)return s;switch(c){case 1:return function(l){return s.call(a,l)};case 2:return function(l,u){return s.call(a,l,u)};case 3:return function(l,u,f){return s.call(a,l,u,f)}}return function(){return s.apply(a,arguments)}}},function(r,o){var t={}.hasOwnProperty;r.exports=function(i,s){return t.call(i,s)}},function(r,o){r.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},function(r,o){r.exports={}},function(r,o){var t={}.toString;r.exports=function(i){return t.call(i).slice(8,-1)}},function(r,o,t){var i=t(3),s=t(26),a=t(32),c=Object.defineProperty;o.f=t(4)?Object.defineProperty:function(l,u,f){if(i(l),u=a(u,!0),i(f),s)try{return c(l,u,f)}catch{}if("get"in f||"set"in f)throw TypeError("Accessors not supported!");return"value"in f&&(l[u]=f.value),l}},function(r,o,t){var i=t(42),s=t(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}},function(r,o){r.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},function(r,o,t){var i=t(9),s=t(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}}},function(r,o,t){var i=t(12).f,s=t(8),a=t(1)("toStringTag");r.exports=function(c,l,u){c&&!s(c=u?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(r,o,t){var i=t(29)("keys"),s=t(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var t=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:t)(s)}},function(r,o,t){var i=t(11),s=t(1)("toStringTag"),a=i((function(){return arguments})())=="Arguments",c=function(l,u){try{return l[u]}catch{}};r.exports=function(l){var u,f,p;return l===void 0?"Undefined":l===null?"Null":typeof(f=c(u=Object(l),s))=="string"?f:a?i(u):(p=i(u))=="Object"&&typeof u.callee=="function"?"Arguments":p}},function(r,o){r.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(r,o,t){var i=t(2),s=t(6),a=t(7),c=t(5),l="prototype",u=function(f,p,d){var h,v,T,P=f&u.F,R=f&u.G,b=f&u.S,k=f&u.P,S=f&u.B,g=f&u.W,_=R?s:s[p]||(s[p]={}),O=_[l],D=R?i:b?i[p]:(i[p]||{})[l];R&&(d=p);for(h in d)v=!P&&D&&D[h]!==void 0,v&&h in _||(T=v?D[h]:d[h],_[h]=R&&typeof D[h]!="function"?d[h]:S&&v?a(T,i):g&&D[h]==T?(function(H){var fe=function(pe,Z,be){if(this instanceof H){switch(arguments.length){case 0:return new H;case 1:return new H(pe);case 2:return new H(pe,Z)}return new H(pe,Z,be)}return H.apply(this,arguments)};return fe[l]=H[l],fe})(T):k&&typeof T=="function"?a(Function.call,T):T,k&&((_.virtual||(_.virtual={}))[h]=T,f&u.R&&O&&!O[h]&&c(O,h,T)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,r.exports=u},function(r,o){r.exports=function(t){try{return!!t()}catch{return!0}}},function(r,o,t){r.exports=t(2).document&&document.documentElement},function(r,o,t){r.exports=!t(4)&&!t(24)(function(){return Object.defineProperty(t(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,o,t){"use strict";var i=t(28),s=t(23),a=t(57),c=t(5),l=t(8),u=t(10),f=t(45),p=t(18),d=t(52),h=t(1)("iterator"),v=!([].keys&&"next"in[].keys()),T="@@iterator",P="keys",R="values",b=function(){return this};r.exports=function(k,S,g,_,O,D,H){f(g,S,_);var fe,pe,Z,be=function(w){if(!v&&w in z)return z[w];switch(w){case P:return function(){return new g(this,w)};case R:return function(){return new g(this,w)}}return function(){return new g(this,w)}},ut=S+" Iterator",Ze=O==R,Dt=!1,z=k.prototype,Me=z[h]||z[T]||O&&z[O],oe=Me||be(O),Ft=O?Ze?be("entries"):oe:void 0,y=S=="Array"&&z.entries||Me;if(y&&(Z=d(y.call(new k)),Z!==Object.prototype&&(p(Z,ut,!0),i||l(Z,h)||c(Z,h,b))),Ze&&Me&&Me.name!==R&&(Dt=!0,oe=function(){return Me.call(this)}),i&&!H||!v&&!Dt&&z[h]||c(z,h,oe),u[S]=oe,u[ut]=b,O)if(fe={values:Ze?oe:be(R),keys:D?oe:be(P),entries:Ft},H)for(pe in fe)pe in z||a(z,pe,fe[pe]);else s(s.P+s.F*(v||Dt),S,fe);return fe}},function(r,o){r.exports=!0},function(r,o,t){var i=t(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,o,t){var i,s,a,c=t(7),l=t(41),u=t(25),f=t(16),p=t(2),d=p.process,h=p.setImmediate,v=p.clearImmediate,T=p.MessageChannel,P=0,R={},b="onreadystatechange",k=function(){var g=+this;if(R.hasOwnProperty(g)){var _=R[g];delete R[g],_()}},S=function(g){k.call(g.data)};h&&v||(h=function(g){for(var _=[],O=1;arguments.length>O;)_.push(arguments[O++]);return R[++P]=function(){l(typeof g=="function"?g:Function(g),_)},i(P),P},v=function(g){delete R[g]},t(11)(d)=="process"?i=function(g){d.nextTick(c(k,g,1))}:T?(s=new T,a=s.port2,s.port1.onmessage=S,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(g){p.postMessage(g+"","*")},p.addEventListener("message",S,!1)):i=b in f("script")?function(g){u.appendChild(f("script"))[b]=function(){u.removeChild(this),k.call(g)}}:function(g){setTimeout(c(k,g,1),0)}),r.exports={set:h,clear:v}},function(r,o,t){var i=t(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,t){var i=t(9);r.exports=function(s,a){if(!i(s))return s;var c,l;if(a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s))||typeof(c=s.valueOf)=="function"&&!i(l=c.call(s))||!a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s)))return l;throw TypeError("Can't convert object to primitive value")}},function(r,o){var t=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++t+i).toString(36))}},function(r,o,t){"use strict";function i(b){return b&&b.__esModule?b:{default:b}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(b){return(0,h.createHash)("sha256").update(b).digest("hex")}function c(b){switch(T){case"darwin":return b.split("IOPlatformUUID")[1].split(`
4
+ `)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return b.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(b){var k=c((0,d.execSync)(R[T]).toString());return b?k:a(k)}function u(b){return new p.default(function(k,S){return(0,d.exec)(R[T],{},function(g,_,O){if(g)return S(new Error("Error while obtaining machine id: "+g.stack));var D=c(_.toString());return k(b?D:a(D))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=t(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=t(70),h=t(71),v=process,T=v.platform,P={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},R={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:P[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(r,o,t){r.exports={default:t(36),__esModule:!0}},function(r,o,t){t(66),t(68),t(69),t(67),r.exports=t(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(r,o,t){var i=t(13),s=t(31),a=t(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),v=a(f,h);if(c&&u!=u){for(;h>v;)if(p=d[v++],p!=p)return!0}else for(;h>v;v++)if((c||v in d)&&d[v]===u)return c||v||0;return!c&&-1}}},function(r,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),u=t(64),f={},p={},d=r.exports=function(h,v,T,P,R){var b,k,S,g,_=R?function(){return h}:u(h),O=i(T,P,v?2:1),D=0;if(typeof _!="function")throw TypeError(h+" is not iterable!");if(a(_)){for(b=l(h.length);b>D;D++)if(g=v?O(c(k=h[D])[0],k[1]):O(h[D]),g===f||g===p)return g}else for(S=_.call(h);!(k=S.next()).done;)if(g=s(S,O,k.value,v),g===f||g===p)return g};d.BREAK=f,d.RETURN=p},function(r,o){r.exports=function(t,i,s){var a=s===void 0;switch(i.length){case 0:return a?t():t.call(s);case 1:return a?t(i[0]):t.call(s,i[0]);case 2:return a?t(i[0],i[1]):t.call(s,i[0],i[1]);case 3:return a?t(i[0],i[1],i[2]):t.call(s,i[0],i[1],i[2]);case 4:return a?t(i[0],i[1],i[2],i[3]):t.call(s,i[0],i[1],i[2],i[3])}return t.apply(s,i)}},function(r,o,t){var i=t(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,t){var i=t(3);r.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(f){var u=s.return;throw u!==void 0&&i(u.call(s)),f}}},function(r,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),r.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(r,o,t){var i=t(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}r.exports=function(c,l){if(!l&&!s)return!1;var u=!1;try{var f=[7],p=f[i]();p.next=function(){return{done:u=!0}},f[i]=function(){return p},c(f)}catch{}return u}},function(r,o){r.exports=function(t,i){return{value:i,done:!!t}}},function(r,o,t){var i=t(2),s=t(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=t(11)(c)=="process";r.exports=function(){var f,p,d,h=function(){var R,b;for(u&&(R=c.domain)&&R.exit();f;){b=f.fn,f=f.next;try{b()}catch(k){throw f?d():p=void 0,k}}p=void 0,R&&R.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var v=!0,T=document.createTextNode("");new a(h).observe(T,{characterData:!0}),d=function(){T.data=v=!v}}else if(l&&l.resolve){var P=l.resolve();d=function(){P.then(h)}}else d=function(){s.call(i,h)};return function(R){var b={fn:R,next:void 0};p&&(p.next=b),f||(f=b,d()),p=b}}},function(r,o,t){var i=t(3),s=t(50),a=t(22),c=t(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=t(16)("iframe"),h=a.length,v=">";for(d.style.display="none",t(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+v),p.close(),f=p.F;h--;)delete f[u][a[h]];return f()};r.exports=Object.create||function(p,d){var h;return p!==null?(l[u]=i(p),h=new l,l[u]=null,h[c]=p):h=f(),d===void 0?h:s(h,d)}},function(r,o,t){var i=t(12),s=t(3),a=t(54);r.exports=t(4)?Object.defineProperties:function(c,l){s(c);for(var u,f=a(l),p=f.length,d=0;p>d;)i.f(c,u=f[d++],l[u]);return c}},function(r,o,t){var i=t(55),s=t(17),a=t(13),c=t(32),l=t(8),u=t(26),f=Object.getOwnPropertyDescriptor;o.f=t(4)?f:function(p,d){if(p=a(p),d=c(d,!0),u)try{return f(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(r,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;r.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(r,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");r.exports=function(l,u){var f,p=s(l),d=0,h=[];for(f in p)f!=c&&i(p,f)&&h.push(f);for(;u.length>d;)i(p,f=u[d++])&&(~a(h,f)||h.push(f));return h}},function(r,o,t){var i=t(53),s=t(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,t){var i=t(5);r.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(r,o,t){r.exports=t(5)},function(r,o,t){var i=t(9),s=t(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};r.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,u){try{u=t(7)(Function.call,t(51).f(Object.prototype,"__proto__").set,2),u(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(f,p){return a(f,p),l?f.__proto__=p:u(f,p),f}})({},!1):void 0),check:a}},function(r,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");r.exports=function(u){var f=typeof s[u]=="function"?s[u]:i[u];c&&f&&!f[l]&&a.f(f,l,{configurable:!0,get:function(){return this}})}},function(r,o,t){var i=t(3),s=t(14),a=t(1)("species");r.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(r,o,t){var i=t(20),s=t(15);r.exports=function(a){return function(c,l){var u,f,p=String(s(c)),d=i(l),h=p.length;return d<0||d>=h?a?"":void 0:(u=p.charCodeAt(d),u<55296||u>56319||d+1===h||(f=p.charCodeAt(d+1))<56320||f>57343?a?p.charAt(d):u:a?p.slice(d,d+2):(u-55296<<10)+(f-56320)+65536)}}},function(r,o,t){var i=t(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,t){var i=t(15);r.exports=function(s){return Object(i(s))}},function(r,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);r.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);r.exports=t(27)(Array,"Array",function(l,u){this._t=c(l),this._i=0,this._k=u},function(){var l=this._t,u=this._k,f=this._i++;return!l||f>=l.length?(this._t=void 0,s(1)):u=="keys"?s(0,f):u=="values"?s(0,l[f]):s(0,[f,l[f]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(r,o){},function(r,o,t){"use strict";var i,s,a,c=t(28),l=t(2),u=t(7),f=t(21),p=t(23),d=t(9),h=(t(3),t(14)),v=t(38),T=t(40),P=(t(58).set,t(60)),R=t(30).set,b=t(48)(),k="Promise",S=l.TypeError,_=l.process,g=l[k],_=l.process,O=f(_)=="process",D=function(){},H=!!(function(){try{var y=g.resolve(1),w=(y.constructor={})[t(1)("species")]=function(x){x(D,D)};return(O||typeof PromiseRejectionEvent=="function")&&y.then(D)instanceof w}catch{}})(),fe=function(y,w){return y===w||y===g&&w===a},pe=function(y){var w;return!(!d(y)||typeof(w=y.then)!="function")&&w},Z=function(y){return fe(g,y)?new be(y):new s(y)},be=s=function(y){var w,x;this.promise=new y(function($,V){if(w!==void 0||x!==void 0)throw S("Bad Promise constructor");w=$,x=V}),this.resolve=h(w),this.reject=h(x)},ut=function(y){try{y()}catch(w){return{error:w}}},Ze=function(y,w){if(!y._n){y._n=!0;var x=y._c;b(function(){for(var $=y._v,V=y._s==1,ze=0,ft=function(Ne){var ye,Sn,Ut=V?Ne.ok:Ne.fail,Bt=Ne.resolve,pt=Ne.reject,En=Ne.domain;try{Ut?(V||(y._h==2&&Me(y),y._h=1),Ut===!0?ye=$:(En&&En.enter(),ye=Ut($),En&&En.exit()),ye===Ne.promise?pt(S("Promise-chain cycle")):(Sn=pe(ye))?Sn.call(ye,Bt,pt):Bt(ye)):pt($)}catch($s){pt($s)}};x.length>ze;)ft(x[ze++]);y._c=[],y._n=!1,w&&!y._h&&Dt(y)})}},Dt=function(y){R.call(l,function(){var w,x,$,V=y._v;if(z(y)&&(w=ut(function(){O?_.emit("unhandledRejection",V,y):(x=l.onunhandledrejection)?x({promise:y,reason:V}):($=l.console)&&$.error&&$.error("Unhandled promise rejection",V)}),y._h=O||z(y)?2:1),y._a=void 0,w)throw w.error})},z=function(y){if(y._h==1)return!1;for(var w,x=y._a||y._c,$=0;x.length>$;)if(w=x[$++],w.fail||!z(w.promise))return!1;return!0},Me=function(y){R.call(l,function(){var w;O?_.emit("rejectionHandled",y):(w=l.onrejectionhandled)&&w({promise:y,reason:y._v})})},oe=function(y){var w=this;w._d||(w._d=!0,w=w._w||w,w._v=y,w._s=2,w._a||(w._a=w._c.slice()),Ze(w,!0))},Ft=function(y){var w,x=this;if(!x._d){x._d=!0,x=x._w||x;try{if(x===y)throw S("Promise can't be resolved itself");(w=pe(y))?b(function(){var $={_w:x,_d:!1};try{w.call(y,u(Ft,$,1),u(oe,$,1))}catch(V){oe.call($,V)}}):(x._v=y,x._s=1,Ze(x,!1))}catch($){oe.call({_w:x,_d:!1},$)}}};H||(g=function(y){v(this,g,k,"_h"),h(y),i.call(this);try{y(u(Ft,this,1),u(oe,this,1))}catch(w){oe.call(this,w)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=t(56)(g.prototype,{then:function(y,w){var x=Z(P(this,g));return x.ok=typeof y!="function"||y,x.fail=typeof w=="function"&&w,x.domain=O?_.domain:void 0,this._c.push(x),this._a&&this._a.push(x),this._s&&Ze(this,!1),x.promise},catch:function(y){return this.then(void 0,y)}}),be=function(){var y=new i;this.promise=y,this.resolve=u(Ft,y,1),this.reject=u(oe,y,1)}),p(p.G+p.W+p.F*!H,{Promise:g}),t(18)(g,k),t(59)(k),a=t(6)[k],p(p.S+p.F*!H,k,{reject:function(y){var w=Z(this),x=w.reject;return x(y),w.promise}}),p(p.S+p.F*(c||!H),k,{resolve:function(y){if(y instanceof g&&fe(y.constructor,this))return y;var w=Z(this),x=w.resolve;return x(y),w.promise}}),p(p.S+p.F*!(H&&t(46)(function(y){g.all(y).catch(D)})),k,{all:function(y){var w=this,x=Z(w),$=x.resolve,V=x.reject,ze=ut(function(){var ft=[],Ne=0,ye=1;T(y,!1,function(Sn){var Ut=Ne++,Bt=!1;ft.push(void 0),ye++,w.resolve(Sn).then(function(pt){Bt||(Bt=!0,ft[Ut]=pt,--ye||$(ft))},V)}),--ye||$(ft)});return ze&&V(ze.error),x.promise},race:function(y){var w=this,x=Z(w),$=x.reject,V=ut(function(){T(y,!1,function(ze){w.resolve(ze).then(x.resolve,$)})});return V&&$(V.error),x.promise}})},function(r,o,t){"use strict";var i=t(61)(!0);t(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(r,o,t){t(65);for(var i=t(2),s=t(5),a=t(10),c=t(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var f=l[u],p=i[f],d=p&&p.prototype;d&&!d[c]&&s(d,c,f),a[f]=a.Array}},function(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var ji={};Bs(ji,{initTray:()=>Hr,killTray:()=>pn,openBrowser:()=>dn,showTrayNotification:()=>jr,updateTrayTooltip:()=>qn});function Li(e){for(let n of e)try{if(Ot.default.existsSync(n))return n}catch{}return null}function Xa(){if(process.platform==="win32"){for(let e of Ui)try{if(Ot.default.existsSync(e))return Ot.default.readFileSync(e).toString("base64")}catch{}return $i}return $i}function Za(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function Bi(){let{port:e,tunnelUrl:n,running:r}=Ct,o=r?n?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
4
5
  Local: ${t}
5
- Right-click to open / quit`}function li(){let{port:e,tunnelUrl:n}=zt,r=process.platform==="win32",o=n?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:Ta(),title:r?`9Remote - Port ${e}`:"",tooltip:Ra(),items:[{title:o,tooltip:n||`http://localhost:${e}`,checked:!1,enabled:!1},{title:"Open Web UI",tooltip:`Open http://localhost:${e} in your browser`,checked:!1,enabled:!0},{title:"Shutdown",tooltip:"Stop 9Remote server, tunnel and quit",checked:!1,enabled:!0}]}}function xa(){try{let e=require(Ue.default.join(ci,"systray2"));return e.default?.default||e.default||e}catch{return null}}async function Tr({port:e,onQuit:n,onOpenUI:r}){if(!Ea())return null;try{let o=xa();if(!o)return null;let t=process.platform==="darwin"?"tray_darwin_release":"tray_linux_release",i=Ue.default.join(ci,"systray2","traybin",t);if(!Zt.default.existsSync(i))return null;try{Zt.default.chmodSync(i,493)}catch{}return zt={port:e,tunnelUrl:"",running:!0},pe=new o({menu:li(),debug:!1,copyDir:!0}),pe.onClick(s=>{let a=s.item?.title||s.item;a==="Open Web UI"?r?.():a==="Shutdown"&&(n?.(),Dn(),setTimeout(()=>process.exit(0),500))}),typeof pe.ready=="function"?pe.ready().catch(()=>{}):(pe.onReady(()=>{}),pe.onError(()=>{})),pe}catch{return null}}function Nn({tunnelUrl:e,running:n}={}){if(e!==void 0&&(zt.tunnelUrl=e),n!==void 0&&(zt.running=n),!!pe)try{pe.sendAction({type:"update-menu",menu:li(),seq_id:-1})}catch{}}function Dn(){let e=pe;if(pe=null,e)try{e.kill(!0)}catch{}}function Er({title:e="9Remote",message:n}){let r=process.platform;if(n){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;"),t=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(n)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${t(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${t(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${t(e)}';`,`$n.BalloonTipText = '${t(n)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,De.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(n)}" with title "${o(e)}"`;(0,De.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,De.spawn)("notify-send",[e,n],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function en(e){let n=process.platform;if(n==="win32"){try{(0,De.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,De.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(n==="darwin"){try{(0,De.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,t]of r)try{(0,De.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var De,Zt,Ue,si,ai,ci,pe,zt,oi,ii,Sa,Tt=ms(()=>{De=require("child_process"),Zt=A(require("fs"),1),Ue=A(require("path"),1),si=A(require("os"),1),ai=require("url"),ci=(0,Ue.join)(si.default.homedir(),".9remote","runtime","node_modules"),pe=null,zt={port:0,tunnelUrl:"",running:!1},oi=Ue.default.dirname((0,ai.fileURLToPath)(__importMetaUrl)),ii="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAFw0lEQVR4nOWbaWwUVQDHf2+2tXRbCqmoKGgAuRIJoBwKkSAoDVKamDYLxUYUBSJHNCD30RhAbVWQqKCgXFGodKUfqGLljERsRaNQQoKoCKGFRhBp6XZ7sPv8MF0o7NTO7hzb4/dt5/9m3v/9d/fNO2YEOpEZiQnUeZMRYjQwAOgGdASi9V7DIuqAq8BZBMeQ8iDeuK/F7svX9JwsmiogJ8b0RjgWIkkHnAbN2kUVkIPDly121Pz+fwUbDUC6iEWJXQniVSDKbIc2UQdyLbHeTLGVaq0CmgHIZ2N64XPkAf0stWcfRUSTKj6vuni7EBSATHc+jORb4C5brNmFpASHSBY5nuKGh28JoP6bP0Jra3wASQlSDBFuT1ngkHJDe4F2+BxuWmvjAQRdccivpIvYwKEbAeCNXYV6e2vdSAahOBcFPgqov9XhOEnL7e1DpRK/6CXcnjL1FyAcC2k7jQeIR5GZAEJmJCZwvfoiLWeQYxYevM57Feq8ybS9xgPE4fSMU+rH9m0TKUZHEUrPH9cBnp4F9/SA4/vg+53WmbOH/lFAd11FHVGwvAC69Vc/j5gEPQfD1vnW2bMaSQ8FSNBVuO/wm40PMHYmpC7SLt8SEHRQgDsMXWTCchgz1RxD9hOjNF2mnlM/wNlibW3KGngs1SRP9qI/AN91eDsNLp3TuIoDZm+CAU+ZaM0e9AcAcOUCvJEC5X8Ha1F3wNwc6P2oSdbsIbQAAMr+hOw08FYGazFOmO+GLn1MsGYPoQcAcOYXeNcFdTXBWvs7YWk+dHrAoDV7CC8AgJOH4f3nwe8L1hK7wLJ8SGj+SwvhBwDwUz5snqOtde4JC76EdvGGqrAaYwEA7N8EuSu1tZ6DYd5OiI4xXI1VGA8AIC8L9nygrfV7AmZsAGFOVWZjnqvPFsN327W14S6Ystq0qszEvACkhI2z4NhebT1perOcN5j7u/TVwXsZ8Fuhtj5huTqdbkaY/8esqVKHzOdOaOuTs2BYmunVhos1PZOnXB0tXj4frAkFZn4SPLWOENZ1zVdK4c0UqLgcrEXHwJMvWlZ1KDTPe5ONWBdAYhdYkg8JnYK1uho4sNmyqkPBmgDaJ8KS3dDp/mBN+mH9tMYXV2zG/ABinDAvF7r21da3LYTCXaZXGy7mBuCIhjnboc8wbT13BRSsN7VKo5gXgBAwfR0MTNLW926EvGzTqjML8wJ4LgtGZmhrR3Jhy2umVWUm5gSQthjGzdbWThyCj19WO79miPEAxkwF1zJt7Y+fYXW69tJZM8FYAENS1D0BLUpOQdYzUK2xeNqMCD+Ah0bCK9vUPYHbuVKqNr7yXwPW7CG8AB4cpN7rtZa6rv0Dq8ZrT4SaIaEHEFjsjNVY7KypgndccOG0CdbsIbTnghLvU5e7O9wdrF2vhTWT4PSPobt4fCIMSIJoA/u0UkLpKfhmnTod14n+ABxRsGCX9oaH3wcfvgTH9+u+3A1SF6krRWYxOAWWjlD3MnWg/y+g9XxAgC1zoShP96VuYeyM8M5rjG79Va86UYBaQxXmroR9nxq6RASpUYAKXUW1ng8oWK/uCRih4CNj59/O2WLVqx4k5UJOdB4Fhug6waqHpCLXCRYJme7ciGRa+DW3aDYoSHkw0i4ihzwgpIt4FGcZEBdpOzbjwV/VWRFuKoEvIu3GdgQ7hJtKdRzg8GWjvn7WVqhF8WdB/UBIfbVMro2sJzuRa8SO6jPQcCQY680EiiJlyTYEhVR4X7/5sQHSFdcZRR4FNBb0WwUX8Muhwu0tDRy4ZS4g3J4yFDEeSYn93iznPH4xtmHjQWMyJHI8xUjlERCH7fNmMYJC/GKocHuC9uw1Z4PCXXmJCk8SsALwWO3PQmoRvEV51aiG7wo2pOmXp9V+IROYTMsZLHmA7Tj82YHevjGaDCCAdBGPIzYZKUYBA5F0R9ARo4/bG6cWyVUEfyH4Fb88hPTuqR/gNcl/yU6WmseVCn8AAAAASUVORK5CYII=",Sa=[Ue.default.join(oi,"assets","trayIcon.ico"),Ue.default.join(oi,"..","assets","trayIcon.ico")]});var hi=ne((rn,xr)=>{(function(e,n){typeof rn=="object"&&typeof xr=="object"?xr.exports=n(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],n):typeof rn=="object"?rn["electron-machine-id"]=n(require("child_process"),require("crypto")):e["electron-machine-id"]=n(e.child_process,e.crypto)})(rn,function(e,n){return(function(r){function o(i){if(t[i])return t[i].exports;var s=t[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var t={};return o.m=r,o.c=t,o.p="",o(0)})([function(r,o,t){r.exports=t(34)},function(r,o,t){var i=t(29)("wks"),s=t(33),a=t(2).Symbol,c=typeof a=="function",l=r.exports=function(u){return i[u]||(i[u]=c&&a[u]||(c?a:s)("Symbol."+u))};l.store=i},function(r,o){var t=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=t)},function(r,o,t){var i=t(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,t){r.exports=!t(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,t){var i=t(12),s=t(17);r.exports=t(4)?function(a,c,l){return i.f(a,c,s(1,l))}:function(a,c,l){return a[c]=l,a}},function(r,o){var t=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=t)},function(r,o,t){var i=t(14);r.exports=function(s,a,c){if(i(s),a===void 0)return s;switch(c){case 1:return function(l){return s.call(a,l)};case 2:return function(l,u){return s.call(a,l,u)};case 3:return function(l,u,f){return s.call(a,l,u,f)}}return function(){return s.apply(a,arguments)}}},function(r,o){var t={}.hasOwnProperty;r.exports=function(i,s){return t.call(i,s)}},function(r,o){r.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},function(r,o){r.exports={}},function(r,o){var t={}.toString;r.exports=function(i){return t.call(i).slice(8,-1)}},function(r,o,t){var i=t(3),s=t(26),a=t(32),c=Object.defineProperty;o.f=t(4)?Object.defineProperty:function(l,u,f){if(i(l),u=a(u,!0),i(f),s)try{return c(l,u,f)}catch{}if("get"in f||"set"in f)throw TypeError("Accessors not supported!");return"value"in f&&(l[u]=f.value),l}},function(r,o,t){var i=t(42),s=t(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}},function(r,o){r.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},function(r,o,t){var i=t(9),s=t(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}}},function(r,o,t){var i=t(12).f,s=t(8),a=t(1)("toStringTag");r.exports=function(c,l,u){c&&!s(c=u?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(r,o,t){var i=t(29)("keys"),s=t(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var t=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:t)(s)}},function(r,o,t){var i=t(11),s=t(1)("toStringTag"),a=i((function(){return arguments})())=="Arguments",c=function(l,u){try{return l[u]}catch{}};r.exports=function(l){var u,f,p;return l===void 0?"Undefined":l===null?"Null":typeof(f=c(u=Object(l),s))=="string"?f:a?i(u):(p=i(u))=="Object"&&typeof u.callee=="function"?"Arguments":p}},function(r,o){r.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(r,o,t){var i=t(2),s=t(6),a=t(7),c=t(5),l="prototype",u=function(f,p,d){var h,v,E,O=f&u.F,R=f&u.G,b=f&u.S,_=f&u.P,S=f&u.B,g=f&u.W,k=R?s:s[p]||(s[p]={}),P=k[l],D=R?i:b?i[p]:(i[p]||{})[l];R&&(d=p);for(h in d)v=!O&&D&&D[h]!==void 0,v&&h in k||(E=v?D[h]:d[h],k[h]=R&&typeof D[h]!="function"?d[h]:S&&v?a(E,i):g&&D[h]==E?(function(H){var ae=function(ce,X,Te){if(this instanceof H){switch(arguments.length){case 0:return new H;case 1:return new H(ce);case 2:return new H(ce,X)}return new H(ce,X,Te)}return H.apply(this,arguments)};return ae[l]=H[l],ae})(E):_&&typeof E=="function"?a(Function.call,E):E,_&&((k.virtual||(k.virtual={}))[h]=E,f&u.R&&P&&!P[h]&&c(P,h,E)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,r.exports=u},function(r,o){r.exports=function(t){try{return!!t()}catch{return!0}}},function(r,o,t){r.exports=t(2).document&&document.documentElement},function(r,o,t){r.exports=!t(4)&&!t(24)(function(){return Object.defineProperty(t(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,o,t){"use strict";var i=t(28),s=t(23),a=t(57),c=t(5),l=t(8),u=t(10),f=t(45),p=t(18),d=t(52),h=t(1)("iterator"),v=!([].keys&&"next"in[].keys()),E="@@iterator",O="keys",R="values",b=function(){return this};r.exports=function(_,S,g,k,P,D,H){f(g,S,k);var ae,ce,X,Te=function(w){if(!v&&w in q)return q[w];switch(w){case O:return function(){return new g(this,w)};case R:return function(){return new g(this,w)}}return function(){return new g(this,w)}},st=S+" Iterator",Qe=P==R,_t=!1,q=_.prototype,_e=q[h]||q[E]||P&&q[P],ee=_e||Te(P),kt=P?Qe?Te("entries"):ee:void 0,y=S=="Array"&&q.entries||_e;if(y&&(X=d(y.call(new _)),X!==Object.prototype&&(p(X,st,!0),i||l(X,h)||c(X,h,b))),Qe&&_e&&_e.name!==R&&(_t=!0,ee=function(){return _e.call(this)}),i&&!H||!v&&!_t&&q[h]||c(q,h,ee),u[S]=ee,u[st]=b,P)if(ae={values:Qe?ee:Te(R),keys:D?ee:Te(O),entries:kt},H)for(ce in ae)ce in q||a(q,ce,ae[ce]);else s(s.P+s.F*(v||_t),S,ae);return ae}},function(r,o){r.exports=!0},function(r,o,t){var i=t(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,o,t){var i,s,a,c=t(7),l=t(41),u=t(25),f=t(16),p=t(2),d=p.process,h=p.setImmediate,v=p.clearImmediate,E=p.MessageChannel,O=0,R={},b="onreadystatechange",_=function(){var g=+this;if(R.hasOwnProperty(g)){var k=R[g];delete R[g],k()}},S=function(g){_.call(g.data)};h&&v||(h=function(g){for(var k=[],P=1;arguments.length>P;)k.push(arguments[P++]);return R[++O]=function(){l(typeof g=="function"?g:Function(g),k)},i(O),O},v=function(g){delete R[g]},t(11)(d)=="process"?i=function(g){d.nextTick(c(_,g,1))}:E?(s=new E,a=s.port2,s.port1.onmessage=S,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(g){p.postMessage(g+"","*")},p.addEventListener("message",S,!1)):i=b in f("script")?function(g){u.appendChild(f("script"))[b]=function(){u.removeChild(this),_.call(g)}}:function(g){setTimeout(c(_,g,1),0)}),r.exports={set:h,clear:v}},function(r,o,t){var i=t(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,t){var i=t(9);r.exports=function(s,a){if(!i(s))return s;var c,l;if(a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s))||typeof(c=s.valueOf)=="function"&&!i(l=c.call(s))||!a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s)))return l;throw TypeError("Can't convert object to primitive value")}},function(r,o){var t=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++t+i).toString(36))}},function(r,o,t){"use strict";function i(b){return b&&b.__esModule?b:{default:b}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(b){return(0,h.createHash)("sha256").update(b).digest("hex")}function c(b){switch(E){case"darwin":return b.split("IOPlatformUUID")[1].split(`
6
- `)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return b.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(b){var _=c((0,d.execSync)(R[E]).toString());return b?_:a(_)}function u(b){return new p.default(function(_,S){return(0,d.exec)(R[E],{},function(g,k,P){if(g)return S(new Error("Error while obtaining machine id: "+g.stack));var D=c(k.toString());return _(b?D:a(D))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=t(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=t(70),h=t(71),v=process,E=v.platform,O={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},R={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:O[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(r,o,t){r.exports={default:t(36),__esModule:!0}},function(r,o,t){t(66),t(68),t(69),t(67),r.exports=t(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(r,o,t){var i=t(13),s=t(31),a=t(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),v=a(f,h);if(c&&u!=u){for(;h>v;)if(p=d[v++],p!=p)return!0}else for(;h>v;v++)if((c||v in d)&&d[v]===u)return c||v||0;return!c&&-1}}},function(r,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),u=t(64),f={},p={},d=r.exports=function(h,v,E,O,R){var b,_,S,g,k=R?function(){return h}:u(h),P=i(E,O,v?2:1),D=0;if(typeof k!="function")throw TypeError(h+" is not iterable!");if(a(k)){for(b=l(h.length);b>D;D++)if(g=v?P(c(_=h[D])[0],_[1]):P(h[D]),g===f||g===p)return g}else for(S=k.call(h);!(_=S.next()).done;)if(g=s(S,P,_.value,v),g===f||g===p)return g};d.BREAK=f,d.RETURN=p},function(r,o){r.exports=function(t,i,s){var a=s===void 0;switch(i.length){case 0:return a?t():t.call(s);case 1:return a?t(i[0]):t.call(s,i[0]);case 2:return a?t(i[0],i[1]):t.call(s,i[0],i[1]);case 3:return a?t(i[0],i[1],i[2]):t.call(s,i[0],i[1],i[2]);case 4:return a?t(i[0],i[1],i[2],i[3]):t.call(s,i[0],i[1],i[2],i[3])}return t.apply(s,i)}},function(r,o,t){var i=t(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,t){var i=t(3);r.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(f){var u=s.return;throw u!==void 0&&i(u.call(s)),f}}},function(r,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),r.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(r,o,t){var i=t(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}r.exports=function(c,l){if(!l&&!s)return!1;var u=!1;try{var f=[7],p=f[i]();p.next=function(){return{done:u=!0}},f[i]=function(){return p},c(f)}catch{}return u}},function(r,o){r.exports=function(t,i){return{value:i,done:!!t}}},function(r,o,t){var i=t(2),s=t(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=t(11)(c)=="process";r.exports=function(){var f,p,d,h=function(){var R,b;for(u&&(R=c.domain)&&R.exit();f;){b=f.fn,f=f.next;try{b()}catch(_){throw f?d():p=void 0,_}}p=void 0,R&&R.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var v=!0,E=document.createTextNode("");new a(h).observe(E,{characterData:!0}),d=function(){E.data=v=!v}}else if(l&&l.resolve){var O=l.resolve();d=function(){O.then(h)}}else d=function(){s.call(i,h)};return function(R){var b={fn:R,next:void 0};p&&(p.next=b),f||(f=b,d()),p=b}}},function(r,o,t){var i=t(3),s=t(50),a=t(22),c=t(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=t(16)("iframe"),h=a.length,v=">";for(d.style.display="none",t(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+v),p.close(),f=p.F;h--;)delete f[u][a[h]];return f()};r.exports=Object.create||function(p,d){var h;return p!==null?(l[u]=i(p),h=new l,l[u]=null,h[c]=p):h=f(),d===void 0?h:s(h,d)}},function(r,o,t){var i=t(12),s=t(3),a=t(54);r.exports=t(4)?Object.defineProperties:function(c,l){s(c);for(var u,f=a(l),p=f.length,d=0;p>d;)i.f(c,u=f[d++],l[u]);return c}},function(r,o,t){var i=t(55),s=t(17),a=t(13),c=t(32),l=t(8),u=t(26),f=Object.getOwnPropertyDescriptor;o.f=t(4)?f:function(p,d){if(p=a(p),d=c(d,!0),u)try{return f(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(r,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;r.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(r,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");r.exports=function(l,u){var f,p=s(l),d=0,h=[];for(f in p)f!=c&&i(p,f)&&h.push(f);for(;u.length>d;)i(p,f=u[d++])&&(~a(h,f)||h.push(f));return h}},function(r,o,t){var i=t(53),s=t(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,t){var i=t(5);r.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(r,o,t){r.exports=t(5)},function(r,o,t){var i=t(9),s=t(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};r.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,u){try{u=t(7)(Function.call,t(51).f(Object.prototype,"__proto__").set,2),u(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(f,p){return a(f,p),l?f.__proto__=p:u(f,p),f}})({},!1):void 0),check:a}},function(r,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");r.exports=function(u){var f=typeof s[u]=="function"?s[u]:i[u];c&&f&&!f[l]&&a.f(f,l,{configurable:!0,get:function(){return this}})}},function(r,o,t){var i=t(3),s=t(14),a=t(1)("species");r.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(r,o,t){var i=t(20),s=t(15);r.exports=function(a){return function(c,l){var u,f,p=String(s(c)),d=i(l),h=p.length;return d<0||d>=h?a?"":void 0:(u=p.charCodeAt(d),u<55296||u>56319||d+1===h||(f=p.charCodeAt(d+1))<56320||f>57343?a?p.charAt(d):u:a?p.slice(d,d+2):(u-55296<<10)+(f-56320)+65536)}}},function(r,o,t){var i=t(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,t){var i=t(15);r.exports=function(s){return Object(i(s))}},function(r,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);r.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);r.exports=t(27)(Array,"Array",function(l,u){this._t=c(l),this._i=0,this._k=u},function(){var l=this._t,u=this._k,f=this._i++;return!l||f>=l.length?(this._t=void 0,s(1)):u=="keys"?s(0,f):u=="values"?s(0,l[f]):s(0,[f,l[f]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(r,o){},function(r,o,t){"use strict";var i,s,a,c=t(28),l=t(2),u=t(7),f=t(21),p=t(23),d=t(9),h=(t(3),t(14)),v=t(38),E=t(40),O=(t(58).set,t(60)),R=t(30).set,b=t(48)(),_="Promise",S=l.TypeError,k=l.process,g=l[_],k=l.process,P=f(k)=="process",D=function(){},H=!!(function(){try{var y=g.resolve(1),w=(y.constructor={})[t(1)("species")]=function(x){x(D,D)};return(P||typeof PromiseRejectionEvent=="function")&&y.then(D)instanceof w}catch{}})(),ae=function(y,w){return y===w||y===g&&w===a},ce=function(y){var w;return!(!d(y)||typeof(w=y.then)!="function")&&w},X=function(y){return ae(g,y)?new Te(y):new s(y)},Te=s=function(y){var w,x;this.promise=new y(function(L,W){if(w!==void 0||x!==void 0)throw S("Bad Promise constructor");w=L,x=W}),this.resolve=h(w),this.reject=h(x)},st=function(y){try{y()}catch(w){return{error:w}}},Qe=function(y,w){if(!y._n){y._n=!0;var x=y._c;b(function(){for(var L=y._v,W=y._s==1,Je=0,at=function(ke){var me,ln,Ot=W?ke.ok:ke.fail,It=ke.resolve,ct=ke.reject,un=ke.domain;try{Ot?(W||(y._h==2&&_e(y),y._h=1),Ot===!0?me=L:(un&&un.enter(),me=Ot(L),un&&un.exit()),me===ke.promise?ct(S("Promise-chain cycle")):(ln=ce(me))?ln.call(me,It,ct):It(me)):ct(L)}catch(cs){ct(cs)}};x.length>Je;)at(x[Je++]);y._c=[],y._n=!1,w&&!y._h&&_t(y)})}},_t=function(y){R.call(l,function(){var w,x,L,W=y._v;if(q(y)&&(w=st(function(){P?k.emit("unhandledRejection",W,y):(x=l.onunhandledrejection)?x({promise:y,reason:W}):(L=l.console)&&L.error&&L.error("Unhandled promise rejection",W)}),y._h=P||q(y)?2:1),y._a=void 0,w)throw w.error})},q=function(y){if(y._h==1)return!1;for(var w,x=y._a||y._c,L=0;x.length>L;)if(w=x[L++],w.fail||!q(w.promise))return!1;return!0},_e=function(y){R.call(l,function(){var w;P?k.emit("rejectionHandled",y):(w=l.onrejectionhandled)&&w({promise:y,reason:y._v})})},ee=function(y){var w=this;w._d||(w._d=!0,w=w._w||w,w._v=y,w._s=2,w._a||(w._a=w._c.slice()),Qe(w,!0))},kt=function(y){var w,x=this;if(!x._d){x._d=!0,x=x._w||x;try{if(x===y)throw S("Promise can't be resolved itself");(w=ce(y))?b(function(){var L={_w:x,_d:!1};try{w.call(y,u(kt,L,1),u(ee,L,1))}catch(W){ee.call(L,W)}}):(x._v=y,x._s=1,Qe(x,!1))}catch(L){ee.call({_w:x,_d:!1},L)}}};H||(g=function(y){v(this,g,_,"_h"),h(y),i.call(this);try{y(u(kt,this,1),u(ee,this,1))}catch(w){ee.call(this,w)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=t(56)(g.prototype,{then:function(y,w){var x=X(O(this,g));return x.ok=typeof y!="function"||y,x.fail=typeof w=="function"&&w,x.domain=P?k.domain:void 0,this._c.push(x),this._a&&this._a.push(x),this._s&&Qe(this,!1),x.promise},catch:function(y){return this.then(void 0,y)}}),Te=function(){var y=new i;this.promise=y,this.resolve=u(kt,y,1),this.reject=u(ee,y,1)}),p(p.G+p.W+p.F*!H,{Promise:g}),t(18)(g,_),t(59)(_),a=t(6)[_],p(p.S+p.F*!H,_,{reject:function(y){var w=X(this),x=w.reject;return x(y),w.promise}}),p(p.S+p.F*(c||!H),_,{resolve:function(y){if(y instanceof g&&ae(y.constructor,this))return y;var w=X(this),x=w.resolve;return x(y),w.promise}}),p(p.S+p.F*!(H&&t(46)(function(y){g.all(y).catch(D)})),_,{all:function(y){var w=this,x=X(w),L=x.resolve,W=x.reject,Je=st(function(){var at=[],ke=0,me=1;E(y,!1,function(ln){var Ot=ke++,It=!1;at.push(void 0),me++,w.resolve(ln).then(function(ct){It||(It=!0,at[Ot]=ct,--me||L(at))},W)}),--me||L(at)});return Je&&W(Je.error),x.promise},race:function(y){var w=this,x=X(w),L=x.reject,W=st(function(){E(y,!1,function(Je){w.resolve(Je).then(x.resolve,L)})});return W&&L(W.error),x.promise}})},function(r,o,t){"use strict";var i=t(61)(!0);t(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(r,o,t){t(65);for(var i=t(2),s=t(5),a=t(10),c=t(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var f=l[u],p=i[f],d=p&&p.prototype;d&&!d[c]&&s(d,c,f),a[f]=a.Array}},function(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var kr=ne((Cl,Si)=>{Si.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var Ri=ne((Ll,Ei)=>{var Pa=kr();function Ti(e){this.mode=Pa.MODE_8BIT_BYTE,this.data=e}Ti.prototype={getLength:function(){return this.data.length},write:function(e){for(var n=0;n<this.data.length;n++)e.put(this.data.charCodeAt(n),8)}};Ei.exports=Ti});var Or=ne((Ml,xi)=>{var de={glog:function(e){if(e<1)throw new Error("glog("+e+")");return de.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return de.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(F=0;F<8;F++)de.EXP_TABLE[F]=1<<F;var F;for(F=8;F<256;F++)de.EXP_TABLE[F]=de.EXP_TABLE[F-4]^de.EXP_TABLE[F-5]^de.EXP_TABLE[F-6]^de.EXP_TABLE[F-8];var F;for(F=0;F<255;F++)de.LOG_TABLE[de.EXP_TABLE[F]]=F;var F;xi.exports=de});var Ir=ne(($l,bi)=>{var ot=Or();function Fn(e,n){if(e.length===void 0)throw new Error(e.length+"/"+n);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+n);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}Fn.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var n=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)n[r+o]^=ot.gexp(ot.glog(this.get(r))+ot.glog(e.get(o)));return new Fn(n,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var n=ot.glog(this.get(0))-ot.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var t=0;t<e.getLength();t++)r[t]^=ot.gexp(ot.glog(e.get(t))+n);return new Fn(r,0).mod(e)}};bi.exports=Fn});var _i=ne((Nl,Ai)=>{Ai.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Ii=ne((Dl,Oi)=>{var se=kr(),ki=Ir(),Ca=Or(),Ke=_i(),G={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var n=e<<10;G.getBCHDigit(n)-G.getBCHDigit(G.G15)>=0;)n^=G.G15<<G.getBCHDigit(n)-G.getBCHDigit(G.G15);return(e<<10|n)^G.G15_MASK},getBCHTypeNumber:function(e){for(var n=e<<12;G.getBCHDigit(n)-G.getBCHDigit(G.G18)>=0;)n^=G.G18<<G.getBCHDigit(n)-G.getBCHDigit(G.G18);return e<<12|n},getBCHDigit:function(e){for(var n=0;e!==0;)n++,e>>>=1;return n},getPatternPosition:function(e){return G.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,n,r){switch(e){case Ke.PATTERN000:return(n+r)%2===0;case Ke.PATTERN001:return n%2===0;case Ke.PATTERN010:return r%3===0;case Ke.PATTERN011:return(n+r)%3===0;case Ke.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2===0;case Ke.PATTERN101:return n*r%2+n*r%3===0;case Ke.PATTERN110:return(n*r%2+n*r%3)%2===0;case Ke.PATTERN111:return(n*r%3+(n+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var n=new ki([1],0),r=0;r<e;r++)n=n.multiply(new ki([1,Ca.gexp(r)],0));return n},getLengthInBits:function(e,n){if(1<=n&&n<10)switch(e){case se.MODE_NUMBER:return 10;case se.MODE_ALPHA_NUM:return 9;case se.MODE_8BIT_BYTE:return 8;case se.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(n<27)switch(e){case se.MODE_NUMBER:return 12;case se.MODE_ALPHA_NUM:return 11;case se.MODE_8BIT_BYTE:return 16;case se.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(n<41)switch(e){case se.MODE_NUMBER:return 14;case se.MODE_ALPHA_NUM:return 13;case se.MODE_8BIT_BYTE:return 16;case se.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+n)},getLostPoint:function(e){var n=e.getModuleCount(),r=0,o=0,t=0;for(o=0;o<n;o++)for(t=0;t<n;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||n<=o+a))for(var c=-1;c<=1;c++)t+c<0||n<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<n-1;o++)for(t=0;t<n-1;t++){var l=0;e.isDark(o,t)&&l++,e.isDark(o+1,t)&&l++,e.isDark(o,t+1)&&l++,e.isDark(o+1,t+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<n;o++)for(t=0;t<n-6;t++)e.isDark(o,t)&&!e.isDark(o,t+1)&&e.isDark(o,t+2)&&e.isDark(o,t+3)&&e.isDark(o,t+4)&&!e.isDark(o,t+5)&&e.isDark(o,t+6)&&(r+=40);for(t=0;t<n;t++)for(o=0;o<n-6;o++)e.isDark(o,t)&&!e.isDark(o+1,t)&&e.isDark(o+2,t)&&e.isDark(o+3,t)&&e.isDark(o+4,t)&&!e.isDark(o+5,t)&&e.isDark(o+6,t)&&(r+=40);var u=0;for(t=0;t<n;t++)for(o=0;o<n;o++)e.isDark(o,t)&&u++;var f=Math.abs(100*u/n/n-50)/5;return r+=f*10,r}};Oi.exports=G});var Pr=ne((Ul,Pi)=>{Pi.exports={L:1,M:0,Q:3,H:2}});var Li=ne((Bl,Ci)=>{var Hn=Pr();function ve(e,n){this.totalCount=e,this.dataCount=n}ve.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];ve.getRSBlocks=function(e,n){var r=ve.getRsBlockTable(e,n);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+n);for(var o=r.length/3,t=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)t.push(new ve(a,c));return t};ve.getRsBlockTable=function(e,n){switch(n){case Hn.L:return ve.RS_BLOCK_TABLE[(e-1)*4+0];case Hn.M:return ve.RS_BLOCK_TABLE[(e-1)*4+1];case Hn.Q:return ve.RS_BLOCK_TABLE[(e-1)*4+2];case Hn.H:return ve.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};Ci.exports=ve});var Ni=ne((Fl,$i)=>{function Mi(){this.buffer=[],this.length=0}Mi.prototype={get:function(e){var n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)==1},put:function(e,n){for(var r=0;r<n;r++)this.putBit((e>>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}};$i.exports=Mi});var Fi=ne((Hl,Bi)=>{var La=Ri(),je=Ii(),Ma=Ir(),Di=Li(),Ui=Ni();function Se(e,n){this.typeNumber=e,this.errorCorrectLevel=n,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Se.prototype={addData:function(e){var n=new La(e);this.dataList.push(n),this.dataCache=null},isDark:function(e,n){if(e<0||this.moduleCount<=e||n<0||this.moduleCount<=n)throw new Error(e+","+n);return this.modules[e][n]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var n=Di.getRSBlocks(e,this.errorCorrectLevel),r=new Ui,o=0,t=0;t<n.length;t++)o+=n[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),je.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,n){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,n),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Se.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,n)},setupPositionProbePattern:function(e,n){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)n+o<=-1||this.moduleCount<=n+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][n+o]=!0:this.modules[e+r][n+o]=!1)},getBestMaskPattern:function(){for(var e=0,n=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=je.getLostPoint(this);(r===0||e>o)&&(e=o,n=r)}return n},createMovieClip:function(e,n,r){var o=e.createEmptyMovieClip(n,r),t=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*t,a=0;a<this.modules[i].length;a++){var c=a*t,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+t,s),o.lineTo(c+t,s+t),o.lineTo(c,s+t),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var n=8;n<this.moduleCount-8;n++)this.modules[6][n]===null&&(this.modules[6][n]=n%2===0)},setupPositionAdjustPattern:function(){for(var e=je.getPatternPosition(this.typeNumber),n=0;n<e.length;n++)for(var r=0;r<e.length;r++){var o=e[n],t=e[r];if(this.modules[o][t]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][t+s]=!0:this.modules[o+i][t+s]=!1}},setupTypeNumber:function(e){for(var n=je.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(n>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var t=0;t<18;t++)r=!e&&(n>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=r},setupTypeInfo:function(e,n){for(var r=this.errorCorrectLevel<<3|n,o=je.getBCHTypeInfo(r),t,i=0;i<15;i++)t=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=t:i<8?this.modules[i+1][8]=t:this.modules[this.moduleCount-15+i][8]=t;for(var s=0;s<15;s++)t=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=t:s<9?this.modules[8][15-s-1+1]=t:this.modules[8][15-s-1]=t;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,n){for(var r=-1,o=this.moduleCount-1,t=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>t&1)===1);var l=je.getMask(n,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};Se.PAD0=236;Se.PAD1=17;Se.createData=function(e,n,r){for(var o=Di.getRSBlocks(e,n),t=new Ui,i=0;i<r.length;i++){var s=r[i];t.put(s.mode,4),t.put(s.getLength(),je.getLengthInBits(s.mode,e)),s.write(t)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(t.getLengthInBits()>a*8)throw new Error("code length overflow. ("+t.getLengthInBits()+">"+a*8+")");for(t.getLengthInBits()+4<=a*8&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(!1);for(;!(t.getLengthInBits()>=a*8||(t.put(Se.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Se.PAD1,8);return Se.createBytes(t,o)};Se.createBytes=function(e,n){for(var r=0,o=0,t=0,i=new Array(n.length),s=new Array(n.length),a=0;a<n.length;a++){var c=n[a].dataCount,l=n[a].totalCount-c;o=Math.max(o,c),t=Math.max(t,l),i[a]=new Array(c);for(var u=0;u<i[a].length;u++)i[a][u]=255&e.buffer[u+r];r+=c;var f=je.getErrorCorrectPolynomial(l),p=new Ma(i[a],f.getLength()-1),d=p.mod(f);s[a]=new Array(f.getLength()-1);for(var h=0;h<s[a].length;h++){var v=h+d.getLength()-s[a].length;s[a][h]=v>=0?d.get(v):0}}for(var E=0,O=0;O<n.length;O++)E+=n[O].totalCount;for(var R=new Array(E),b=0,_=0;_<o;_++)for(var S=0;S<n.length;S++)_<i[S].length&&(R[b++]=i[S][_]);for(var g=0;g<t;g++)for(var k=0;k<n.length;k++)g<s[k].length&&(R[b++]=s[k][g]);return R};Bi.exports=Se});var ji=ne((Kl,Ki)=>{var $a=Fi(),Hi=Pr(),Na="\x1B[40m \x1B[0m",Kn="\x1B[47m \x1B[0m",Da=function(e){return e?Na:Kn},Cr=function(e){return{times:function(n){return new Array(n).join(e)}}},Ua=function(e,n){for(var r=new Array(e),o=0;o<e;o++)r[o]=n;return r};Ki.exports={error:Hi.L,generate:function(e,n,r){typeof n=="function"&&(r=n,n={});var o=new $a(-1,this.error);o.addData(e),o.make();var t="";if(n&&n.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(Ua(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=Cr(u.BLACK_WHITE).times(a+3),p=Cr(u.WHITE_BLACK).times(a+3);t+=f+`
6
+ Right-click to open / quit`}function Hi(){let{port:e,tunnelUrl:n}=Ct,r=process.platform==="win32",o=n?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:Xa(),title:r?`9Remote - Port ${e}`:"",tooltip:Bi(),items:[{title:o,tooltip:n||`http://localhost:${e}`,checked:!1,enabled:!1},{title:"Open Web UI",tooltip:`Open http://localhost:${e} in your browser`,checked:!1,enabled:!0},{title:"Shutdown",tooltip:"Stop 9Remote server, tunnel and quit",checked:!1,enabled:!0}]}}function za(){try{let e=require(Te.default.join(Fi,"systray2"));return e.default?.default||e.default||e}catch{return null}}function ec({port:e,onQuit:n,onOpenUI:r}){let o=Li(Ui),t=Li(qa);if(!o||!t)return null;let i;try{i=(0,Ce.spawn)("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-InputFormat","Text","-OutputFormat","Text","-File",t,"-IconPath",o,"-Tooltip",`9Remote - Port ${e}`],{windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch{return null}let s=c=>{try{i.stdin.writable&&i.stdin.write(`${JSON.stringify(c)}
7
+ `,"utf8")}catch{}};return Mi.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?r?.():l.index===1&&(n?.(),pn(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function Hr({port:e,onQuit:n,onOpenUI:r}){if(!Za())return null;if(process.platform==="win32")return Ct={port:e,tunnelUrl:"",running:!0},X=ec({port:e,onQuit:n,onOpenUI:r}),X;try{let o=za();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=Te.default.join(Fi,"systray2","traybin",i);if(!Ot.default.existsSync(s))return null;if(process.platform!=="win32")try{Ot.default.chmodSync(s,493)}catch{}return Ct={port:e,tunnelUrl:"",running:!0},X=new o({menu:Hi(),debug:!1,copyDir:!0}),X.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(n?.(),pn(),setTimeout(()=>process.exit(0),500))}),typeof X.ready=="function"?X.ready().catch(()=>{}):(X.onReady(()=>{}),X.onError(()=>{})),X}catch{return null}}function qn({tunnelUrl:e,running:n}={}){if(e!==void 0&&(Ct.tunnelUrl=e),n!==void 0&&(Ct.running=n),!!X){if(X._isWin){X._setTooltip?.(Bi());return}try{X.sendAction({type:"update-menu",menu:Hi(),seq_id:-1})}catch{}}}function pn(){let e=X;if(X=null,e)try{e.kill(!0)}catch{}}function jr({title:e="9Remote",message:n}){let r=process.platform;if(n){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;"),t=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(n)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${t(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${t(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${t(e)}';`,`$n.BalloonTipText = '${t(n)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,Ce.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(n)}" with title "${o(e)}"`;(0,Ce.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,Ce.spawn)("notify-send",[e,n],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function dn(e){let n=process.platform;if(n==="win32"){try{(0,Ce.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,Ce.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(n==="darwin"){try{(0,Ce.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,t]of r)try{(0,Ce.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var Ce,Mi,Ot,Te,Ni,Di,Fi,X,Ct,Qn,$i,Ui,qa,$t=Us(()=>{Ce=require("child_process"),Mi=A(require("readline"),1),Ot=A(require("fs"),1),Te=A(require("path"),1),Ni=A(require("os"),1),Di=require("url"),Fi=(0,Te.join)(Ni.default.homedir(),".9remote","runtime","node_modules"),X=null,Ct={port:0,tunnelUrl:"",running:!1},Qn=Te.default.dirname((0,Di.fileURLToPath)(__importMetaUrl)),$i="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAFw0lEQVR4nOWbaWwUVQDHf2+2tXRbCqmoKGgAuRIJoBwKkSAoDVKamDYLxUYUBSJHNCD30RhAbVWQqKCgXFGodKUfqGLljERsRaNQQoKoCKGFRhBp6XZ7sPv8MF0o7NTO7hzb4/dt5/9m3v/9d/fNO2YEOpEZiQnUeZMRYjQwAOgGdASi9V7DIuqAq8BZBMeQ8iDeuK/F7svX9JwsmiogJ8b0RjgWIkkHnAbN2kUVkIPDly121Pz+fwUbDUC6iEWJXQniVSDKbIc2UQdyLbHeTLGVaq0CmgHIZ2N64XPkAf0stWcfRUSTKj6vuni7EBSATHc+jORb4C5brNmFpASHSBY5nuKGh28JoP6bP0Jra3wASQlSDBFuT1ngkHJDe4F2+BxuWmvjAQRdccivpIvYwKEbAeCNXYV6e2vdSAahOBcFPgqov9XhOEnL7e1DpRK/6CXcnjL1FyAcC2k7jQeIR5GZAEJmJCZwvfoiLWeQYxYevM57Feq8ybS9xgPE4fSMU+rH9m0TKUZHEUrPH9cBnp4F9/SA4/vg+53WmbOH/lFAd11FHVGwvAC69Vc/j5gEPQfD1vnW2bMaSQ8FSNBVuO/wm40PMHYmpC7SLt8SEHRQgDsMXWTCchgz1RxD9hOjNF2mnlM/wNlibW3KGngs1SRP9qI/AN91eDsNLp3TuIoDZm+CAU+ZaM0e9AcAcOUCvJEC5X8Ha1F3wNwc6P2oSdbsIbQAAMr+hOw08FYGazFOmO+GLn1MsGYPoQcAcOYXeNcFdTXBWvs7YWk+dHrAoDV7CC8AgJOH4f3nwe8L1hK7wLJ8SGj+SwvhBwDwUz5snqOtde4JC76EdvGGqrAaYwEA7N8EuSu1tZ6DYd5OiI4xXI1VGA8AIC8L9nygrfV7AmZsAGFOVWZjnqvPFsN327W14S6Ystq0qszEvACkhI2z4NhebT1perOcN5j7u/TVwXsZ8Fuhtj5huTqdbkaY/8esqVKHzOdOaOuTs2BYmunVhos1PZOnXB0tXj4frAkFZn4SPLWOENZ1zVdK4c0UqLgcrEXHwJMvWlZ1KDTPe5ONWBdAYhdYkg8JnYK1uho4sNmyqkPBmgDaJ8KS3dDp/mBN+mH9tMYXV2zG/ABinDAvF7r21da3LYTCXaZXGy7mBuCIhjnboc8wbT13BRSsN7VKo5gXgBAwfR0MTNLW926EvGzTqjML8wJ4LgtGZmhrR3Jhy2umVWUm5gSQthjGzdbWThyCj19WO79miPEAxkwF1zJt7Y+fYXW69tJZM8FYAENS1D0BLUpOQdYzUK2xeNqMCD+Ah0bCK9vUPYHbuVKqNr7yXwPW7CG8AB4cpN7rtZa6rv0Dq8ZrT4SaIaEHEFjsjNVY7KypgndccOG0CdbsIbTnghLvU5e7O9wdrF2vhTWT4PSPobt4fCIMSIJoA/u0UkLpKfhmnTod14n+ABxRsGCX9oaH3wcfvgTH9+u+3A1SF6krRWYxOAWWjlD3MnWg/y+g9XxAgC1zoShP96VuYeyM8M5rjG79Va86UYBaQxXmroR9nxq6RASpUYAKXUW1ng8oWK/uCRih4CNj59/O2WLVqx4k5UJOdB4Fhug6waqHpCLXCRYJme7ciGRa+DW3aDYoSHkw0i4ihzwgpIt4FGcZEBdpOzbjwV/VWRFuKoEvIu3GdgQ7hJtKdRzg8GWjvn7WVqhF8WdB/UBIfbVMro2sJzuRa8SO6jPQcCQY680EiiJlyTYEhVR4X7/5sQHSFdcZRR4FNBb0WwUX8Muhwu0tDRy4ZS4g3J4yFDEeSYn93iznPH4xtmHjQWMyJHI8xUjlERCH7fNmMYJC/GKocHuC9uw1Z4PCXXmJCk8SsALwWO3PQmoRvEV51aiG7wo2pOmXp9V+IROYTMsZLHmA7Tj82YHevjGaDCCAdBGPIzYZKUYBA5F0R9ARo4/bG6cWyVUEfyH4Fb88hPTuqR/gNcl/yU6WmseVCn8AAAAASUVORK5CYII=",Ui=[Te.default.join(Qn,"assets","trayIcon.ico"),Te.default.join(Qn,"..","assets","trayIcon.ico")],qa=[Te.default.join(Qn,"assets","tray.ps1"),Te.default.join(Qn,"..","assets","tray.ps1")]});var Vr=se((mu,Qi)=>{Qi.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var Zi=se((hu,Xi)=>{var rc=Vr();function qi(e){this.mode=rc.MODE_8BIT_BYTE,this.data=e}qi.prototype={getLength:function(){return this.data.length},write:function(e){for(var n=0;n<this.data.length;n++)e.put(this.data.charCodeAt(n),8)}};Xi.exports=qi});var Yr=se((gu,zi)=>{var ge={glog:function(e){if(e<1)throw new Error("glog("+e+")");return ge.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return ge.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(B=0;B<8;B++)ge.EXP_TABLE[B]=1<<B;var B;for(B=8;B<256;B++)ge.EXP_TABLE[B]=ge.EXP_TABLE[B-4]^ge.EXP_TABLE[B-5]^ge.EXP_TABLE[B-6]^ge.EXP_TABLE[B-8];var B;for(B=0;B<255;B++)ge.LOG_TABLE[ge.EXP_TABLE[B]]=B;var B;zi.exports=ge});var Jr=se((yu,es)=>{var ct=Yr();function Zn(e,n){if(e.length===void 0)throw new Error(e.length+"/"+n);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+n);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}Zn.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var n=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)n[r+o]^=ct.gexp(ct.glog(this.get(r))+ct.glog(e.get(o)));return new Zn(n,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var n=ct.glog(this.get(0))-ct.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var t=0;t<e.getLength();t++)r[t]^=ct.gexp(ct.glog(e.get(t))+n);return new Zn(r,0).mod(e)}};es.exports=Zn});var ns=se((wu,ts)=>{ts.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var is=se((vu,os)=>{var ue=Vr(),rs=Jr(),oc=Yr(),Je=ns(),W={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var n=e<<10;W.getBCHDigit(n)-W.getBCHDigit(W.G15)>=0;)n^=W.G15<<W.getBCHDigit(n)-W.getBCHDigit(W.G15);return(e<<10|n)^W.G15_MASK},getBCHTypeNumber:function(e){for(var n=e<<12;W.getBCHDigit(n)-W.getBCHDigit(W.G18)>=0;)n^=W.G18<<W.getBCHDigit(n)-W.getBCHDigit(W.G18);return e<<12|n},getBCHDigit:function(e){for(var n=0;e!==0;)n++,e>>>=1;return n},getPatternPosition:function(e){return W.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,n,r){switch(e){case Je.PATTERN000:return(n+r)%2===0;case Je.PATTERN001:return n%2===0;case Je.PATTERN010:return r%3===0;case Je.PATTERN011:return(n+r)%3===0;case Je.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2===0;case Je.PATTERN101:return n*r%2+n*r%3===0;case Je.PATTERN110:return(n*r%2+n*r%3)%2===0;case Je.PATTERN111:return(n*r%3+(n+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var n=new rs([1],0),r=0;r<e;r++)n=n.multiply(new rs([1,oc.gexp(r)],0));return n},getLengthInBits:function(e,n){if(1<=n&&n<10)switch(e){case ue.MODE_NUMBER:return 10;case ue.MODE_ALPHA_NUM:return 9;case ue.MODE_8BIT_BYTE:return 8;case ue.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(n<27)switch(e){case ue.MODE_NUMBER:return 12;case ue.MODE_ALPHA_NUM:return 11;case ue.MODE_8BIT_BYTE:return 16;case ue.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(n<41)switch(e){case ue.MODE_NUMBER:return 14;case ue.MODE_ALPHA_NUM:return 13;case ue.MODE_8BIT_BYTE:return 16;case ue.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+n)},getLostPoint:function(e){var n=e.getModuleCount(),r=0,o=0,t=0;for(o=0;o<n;o++)for(t=0;t<n;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||n<=o+a))for(var c=-1;c<=1;c++)t+c<0||n<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<n-1;o++)for(t=0;t<n-1;t++){var l=0;e.isDark(o,t)&&l++,e.isDark(o+1,t)&&l++,e.isDark(o,t+1)&&l++,e.isDark(o+1,t+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<n;o++)for(t=0;t<n-6;t++)e.isDark(o,t)&&!e.isDark(o,t+1)&&e.isDark(o,t+2)&&e.isDark(o,t+3)&&e.isDark(o,t+4)&&!e.isDark(o,t+5)&&e.isDark(o,t+6)&&(r+=40);for(t=0;t<n;t++)for(o=0;o<n-6;o++)e.isDark(o,t)&&!e.isDark(o+1,t)&&e.isDark(o+2,t)&&e.isDark(o+3,t)&&e.isDark(o+4,t)&&!e.isDark(o+5,t)&&e.isDark(o+6,t)&&(r+=40);var u=0;for(t=0;t<n;t++)for(o=0;o<n;o++)e.isDark(o,t)&&u++;var f=Math.abs(100*u/n/n-50)/5;return r+=f*10,r}};os.exports=W});var Qr=se((Su,ss)=>{ss.exports={L:1,M:0,Q:3,H:2}});var cs=se((Eu,as)=>{var zn=Qr();function Re(e,n){this.totalCount=e,this.dataCount=n}Re.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];Re.getRSBlocks=function(e,n){var r=Re.getRsBlockTable(e,n);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+n);for(var o=r.length/3,t=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)t.push(new Re(a,c));return t};Re.getRsBlockTable=function(e,n){switch(n){case zn.L:return Re.RS_BLOCK_TABLE[(e-1)*4+0];case zn.M:return Re.RS_BLOCK_TABLE[(e-1)*4+1];case zn.Q:return Re.RS_BLOCK_TABLE[(e-1)*4+2];case zn.H:return Re.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};as.exports=Re});var fs=se((Tu,us)=>{function ls(){this.buffer=[],this.length=0}ls.prototype={get:function(e){var n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)==1},put:function(e,n){for(var r=0;r<n;r++)this.putBit((e>>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}};us.exports=ls});var hs=se((Ru,ms)=>{var ic=Zi(),Qe=is(),sc=Jr(),ps=cs(),ds=fs();function xe(e,n){this.typeNumber=e,this.errorCorrectLevel=n,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}xe.prototype={addData:function(e){var n=new ic(e);this.dataList.push(n),this.dataCache=null},isDark:function(e,n){if(e<0||this.moduleCount<=e||n<0||this.moduleCount<=n)throw new Error(e+","+n);return this.modules[e][n]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var n=ps.getRSBlocks(e,this.errorCorrectLevel),r=new ds,o=0,t=0;t<n.length;t++)o+=n[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),Qe.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,n){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,n),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=xe.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,n)},setupPositionProbePattern:function(e,n){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)n+o<=-1||this.moduleCount<=n+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][n+o]=!0:this.modules[e+r][n+o]=!1)},getBestMaskPattern:function(){for(var e=0,n=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=Qe.getLostPoint(this);(r===0||e>o)&&(e=o,n=r)}return n},createMovieClip:function(e,n,r){var o=e.createEmptyMovieClip(n,r),t=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*t,a=0;a<this.modules[i].length;a++){var c=a*t,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+t,s),o.lineTo(c+t,s+t),o.lineTo(c,s+t),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var n=8;n<this.moduleCount-8;n++)this.modules[6][n]===null&&(this.modules[6][n]=n%2===0)},setupPositionAdjustPattern:function(){for(var e=Qe.getPatternPosition(this.typeNumber),n=0;n<e.length;n++)for(var r=0;r<e.length;r++){var o=e[n],t=e[r];if(this.modules[o][t]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][t+s]=!0:this.modules[o+i][t+s]=!1}},setupTypeNumber:function(e){for(var n=Qe.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(n>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var t=0;t<18;t++)r=!e&&(n>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=r},setupTypeInfo:function(e,n){for(var r=this.errorCorrectLevel<<3|n,o=Qe.getBCHTypeInfo(r),t,i=0;i<15;i++)t=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=t:i<8?this.modules[i+1][8]=t:this.modules[this.moduleCount-15+i][8]=t;for(var s=0;s<15;s++)t=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=t:s<9?this.modules[8][15-s-1+1]=t:this.modules[8][15-s-1]=t;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,n){for(var r=-1,o=this.moduleCount-1,t=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>t&1)===1);var l=Qe.getMask(n,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};xe.PAD0=236;xe.PAD1=17;xe.createData=function(e,n,r){for(var o=ps.getRSBlocks(e,n),t=new ds,i=0;i<r.length;i++){var s=r[i];t.put(s.mode,4),t.put(s.getLength(),Qe.getLengthInBits(s.mode,e)),s.write(t)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(t.getLengthInBits()>a*8)throw new Error("code length overflow. ("+t.getLengthInBits()+">"+a*8+")");for(t.getLengthInBits()+4<=a*8&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(!1);for(;!(t.getLengthInBits()>=a*8||(t.put(xe.PAD0,8),t.getLengthInBits()>=a*8));)t.put(xe.PAD1,8);return xe.createBytes(t,o)};xe.createBytes=function(e,n){for(var r=0,o=0,t=0,i=new Array(n.length),s=new Array(n.length),a=0;a<n.length;a++){var c=n[a].dataCount,l=n[a].totalCount-c;o=Math.max(o,c),t=Math.max(t,l),i[a]=new Array(c);for(var u=0;u<i[a].length;u++)i[a][u]=255&e.buffer[u+r];r+=c;var f=Qe.getErrorCorrectPolynomial(l),p=new sc(i[a],f.getLength()-1),d=p.mod(f);s[a]=new Array(f.getLength()-1);for(var h=0;h<s[a].length;h++){var v=h+d.getLength()-s[a].length;s[a][h]=v>=0?d.get(v):0}}for(var T=0,P=0;P<n.length;P++)T+=n[P].totalCount;for(var R=new Array(T),b=0,k=0;k<o;k++)for(var S=0;S<n.length;S++)k<i[S].length&&(R[b++]=i[S][k]);for(var g=0;g<t;g++)for(var _=0;_<n.length;_++)g<s[_].length&&(R[b++]=s[_][g]);return R};ms.exports=xe});var ws=se((xu,ys)=>{var ac=hs(),gs=Qr(),cc="\x1B[40m \x1B[0m",er="\x1B[47m \x1B[0m",lc=function(e){return e?cc:er},qr=function(e){return{times:function(n){return new Array(n).join(e)}}},uc=function(e,n){for(var r=new Array(e),o=0;o<e;o++)r[o]=n;return r};ys.exports={error:gs.L,generate:function(e,n,r){typeof n=="function"&&(r=n,n={});var o=new ac(-1,this.error);o.addData(e),o.make();var t="";if(n&&n.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(uc(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=qr(u.BLACK_WHITE).times(a+3),p=qr(u.WHITE_BLACK).times(a+3);t+=f+`
7
8
  `;for(var d=0;d<a;d+=2){t+=u.WHITE_ALL;for(var h=0;h<a;h++)c[d][h]===s&&c[d+1][h]===s?t+=u.WHITE_ALL:c[d][h]===s&&c[d+1][h]===i?t+=u.WHITE_BLACK:c[d][h]===i&&c[d+1][h]===s?t+=u.BLACK_WHITE:t+=u.BLACK_ALL;t+=u.WHITE_ALL+`
8
- `}l||(t+=p)}else{var v=Cr(Kn).times(o.getModuleCount()+3);t+=v+`
9
- `,o.modules.forEach(function(E){t+=Kn,t+=E.map(Da).join(""),t+=Kn+`
10
- `}),t+=v}r?r(t):console.log(t)},setErrorLevel:function(e){this.error=Hi[e]||this.error}}});var pn=require("fs"),Ct=require("path"),Wr=require("url"),Yr=A(require("os"),1);var fn=A(require("dns"),1),Ee=A(require("path"),1),Br=A(require("os"),1),Oe=Ee.default.join(Br.default.homedir(),".9remote"),he={ROOT:Oe,LOGS:Ee.default.join(Oe,"logs"),STATE:Ee.default.join(Oe,"state"),CONFIG:Ee.default.join(Oe,"config"),BIN:Ee.default.join(Oe,"bin"),PIDS:Ee.default.join(Oe,"pids"),BUFFERS:Ee.default.join(Oe,"buffers"),DAEMON:Ee.default.join(Oe,"daemon")},Fr=new fn.default.promises.Resolver;Fr.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var Wn=fn.default.lookup,ys=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;fn.default.lookup=(e,n,r)=>{if(typeof n=="function"&&(r=n,n={}),e==="localhost"||ys.test(e))return Wn(e,n,r);Fr.resolve4(e).then(o=>{if(!o?.length)return Wn(e,n,r);n.all?r(null,o.map(t=>({address:t,family:4}))):r(null,o[0],4)}).catch(()=>Wn(e,n,r))};var I=2208,Ur=5173,sc=[`http://localhost:${I}`,`http://127.0.0.1:${I}`,`http://localhost:${Ur}`,`http://127.0.0.1:${Ur}`],Pt={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},Hr=60,C={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},Kr={showTunnelUrlInMenu:!1};var jr={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var Gr={checkIntervalMs:3e4,requestTimeoutMs:5e3},re={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},ws={Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache",Pragma:"no-cache","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"};function Y(e,n={}){return fetch(e,{...n,headers:{...ws,...n.headers}})}var vs=(0,Ct.dirname)((0,Wr.fileURLToPath)(__importMetaUrl)),Ss=[(0,Ct.join)(Yr.default.homedir(),".9remote",".env"),(0,Ct.join)(vs,"..",".env")];function Ts(e){for(let n of e.split(`
11
- `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of Ss)if((0,pn.existsSync)(e))try{Ts((0,pn.readFileSync)(e,"utf8"))}catch{}for(let[e,n]of Object.entries(jr))process.env[e]||(process.env[e]=n);var ge=A(require("fs"),1),Vn=A(require("path"),1);var dn=he.LOGS,Mt=Vn.default.join(dn,Pt.fileName),mn=Vn.default.join(dn,Pt.rotatedName),Vr=!1,Qr=null;function Es(){ge.default.existsSync(dn)||ge.default.mkdirSync(dn,{recursive:!0})}function Rs(){try{if(ge.default.statSync(Mt).size<Pt.maxBytes)return;try{ge.default.rmSync(mn,{force:!0})}catch{}ge.default.renameSync(Mt,mn)}catch{}}function xs(){try{let e=ge.default.statSync(mn);Date.now()-e.mtimeMs>Pt.cleanupAfterDays*864e5&&ge.default.rmSync(mn,{force:!0})}catch{}}function Qn(e){try{Rs(),ge.default.appendFileSync(Mt,e+`
12
- `)}catch{}}function Yn(e){return e.map(n=>{if(n instanceof Error)return n.stack||n.message;if(typeof n=="object")try{return JSON.stringify(n)}catch{return String(n)}return String(n)}).join(" ")}function Jr(){let e=new Date,n=(r,o=2)=>String(r).padStart(o,"0");return`${n(e.getHours())}:${n(e.getMinutes())}:${n(e.getSeconds())}.${n(e.getMilliseconds(),3)}`}var bs=/\x1b\[[0-9;]*m/g,As=/https?:\/\/[^\s]+/g;function _s(e){return String(e).replace(bs,"").replace(As,"").replace(/\s+$/g,"")}function Lt(e,n,r){let o=_s(r);if(!o)return;let t=n==="info"?e:`${e}:${n}`,i=`${Jr()} [${t}] ${o}`;if(Qn(i),Qr)try{Qr(i)}catch{}}function ks(){process.on("uncaughtException",e=>Lt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let n=e instanceof Error?e.stack||e.message:String(e);Lt("crash","error",`unhandledRejection: ${n}`)}),process.on("exit",e=>Qn(`${Jr()} [exit] code=${e} pid=${process.pid}`))}function Xr(){Vr||(Vr=!0,Es(),xs(),Qn(`
13
- === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),ks())}function qr(e=60){try{return ge.default.readFileSync(Mt,"utf8").split(`
14
- `).filter(Boolean).slice(-e)}catch{return[]}}function V(e){return{info:(...n)=>Lt(e,"info",Yn(n)),warn:(...n)=>Lt(e,"warn",Yn(n)),error:(...n)=>Lt(e,"error",Yn(n))}}var $t=Mt;var Zr=(e=0)=>n=>`\x1B[${n+e}m`,zr=(e=0)=>n=>`\x1B[${38+e};5;${n}m`,eo=(e=0)=>(n,r,o)=>`\x1B[${38+e};2;${n};${r};${o}m`,M={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},fc=Object.keys(M.modifier),Os=Object.keys(M.color),Is=Object.keys(M.bgColor),pc=[...Os,...Is];function Ps(){let e=new Map;for(let[n,r]of Object.entries(M)){for(let[o,t]of Object.entries(r))M[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},r[o]=M[o],e.set(t[0],t[1]);Object.defineProperty(M,n,{value:r,enumerable:!1})}return Object.defineProperty(M,"codes",{value:e,enumerable:!1}),M.color.close="\x1B[39m",M.bgColor.close="\x1B[49m",M.color.ansi=Zr(),M.color.ansi256=zr(),M.color.ansi16m=eo(),M.bgColor.ansi=Zr(10),M.bgColor.ansi256=zr(10),M.bgColor.ansi16m=eo(10),Object.defineProperties(M,{rgbToAnsi256:{value(n,r,o){return n===r&&r===o?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(n){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(n.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(i=>i+i).join(""));let t=Number.parseInt(o,16);return[t>>16&255,t>>8&255,t&255]},enumerable:!1},hexToAnsi256:{value:n=>M.rgbToAnsi256(...M.hexToRgb(n)),enumerable:!1},ansi256ToAnsi:{value(n){if(n<8)return 30+n;if(n<16)return 90+(n-8);let r,o,t;if(n>=232)r=((n-232)*10+8)/255,o=r,t=r;else{n-=16;let a=n%36;r=Math.floor(n/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(r,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(n,r,o)=>M.ansi256ToAnsi(M.rgbToAnsi256(n,r,o)),enumerable:!1},hexToAnsi:{value:n=>M.ansi256ToAnsi(M.hexToAnsi256(n)),enumerable:!1}}),M}var Cs=Ps(),le=Cs;var gn=A(require("node:process"),1),no=A(require("node:os"),1),Jn=A(require("node:tty"),1);function oe(e,n=globalThis.Deno?globalThis.Deno.args:gn.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=n.indexOf(r+e),t=n.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:$}=gn.default,hn;oe("no-color")||oe("no-colors")||oe("color=false")||oe("color=never")?hn=0:(oe("color")||oe("colors")||oe("color=true")||oe("color=always"))&&(hn=1);function Ls(){if("FORCE_COLOR"in $)return $.FORCE_COLOR==="true"?1:$.FORCE_COLOR==="false"?0:$.FORCE_COLOR.length===0?1:Math.min(Number.parseInt($.FORCE_COLOR,10),3)}function Ms(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function $s(e,{streamIsTTY:n,sniffFlags:r=!0}={}){let o=Ls();o!==void 0&&(hn=o);let t=r?hn:o;if(t===0)return 0;if(r){if(oe("color=16m")||oe("color=full")||oe("color=truecolor"))return 3;if(oe("color=256"))return 2}if("TF_BUILD"in $&&"AGENT_NAME"in $)return 1;if(e&&!n&&t===void 0)return 0;let i=t||0;if($.TERM==="dumb")return i;if(gn.default.platform==="win32"){let s=no.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in $)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in $)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in $)||$.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in $)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test($.TEAMCITY_VERSION)?1:0;if($.COLORTERM==="truecolor"||$.TERM==="xterm-kitty"||$.TERM==="xterm-ghostty"||$.TERM==="wezterm")return 3;if("TERM_PROGRAM"in $){let s=Number.parseInt(($.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch($.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test($.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test($.TERM)||"COLORTERM"in $?1:i}function to(e,n={}){let r=$s(e,{streamIsTTY:e&&e.isTTY,...n});return Ms(r)}var Ns={stdout:to({isTTY:Jn.default.isatty(1)}),stderr:to({isTTY:Jn.default.isatty(2)})},ro=Ns;function oo(e,n,r){let o=e.indexOf(n);if(o===-1)return e;let t=n.length,i=0,s="";do s+=e.slice(i,o)+n+r,i=o+t,o=e.indexOf(n,i);while(o!==-1);return s+=e.slice(i),s}function io(e,n,r,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+n+(s?`\r
9
+ `}l||(t+=p)}else{var v=qr(er).times(o.getModuleCount()+3);t+=v+`
10
+ `,o.modules.forEach(function(T){t+=er,t+=T.map(lc).join(""),t+=er+`
11
+ `}),t+=v}r?r(t):console.log(t)},setErrorLevel:function(e){this.error=gs[e]||this.error}}});var Rn=require("fs"),jt=require("path"),co=require("url"),lo=A(require("os"),1);var Tn=A(require("dns"),1),Ae=A(require("path"),1),no=A(require("os"),1),ee="9remote",or=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${ee}/latest`,ke=`${ee}@latest`,De=Ae.default.join(no.default.homedir(),".9remote"),te={ROOT:De,LOGS:Ae.default.join(De,"logs"),STATE:Ae.default.join(De,"state"),CONFIG:Ae.default.join(De,"config"),BIN:Ae.default.join(De,"bin"),PIDS:Ae.default.join(De,"pids"),BUFFERS:Ae.default.join(De,"buffers"),DAEMON:Ae.default.join(De,"daemon")},ro=new Tn.default.promises.Resolver;ro.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var rr=Tn.default.lookup,js=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;Tn.default.lookup=(e,n,r)=>{if(typeof n=="function"&&(r=n,n={}),e==="localhost"||js.test(e))return rr(e,n,r);ro.resolve4(e).then(o=>{if(!o?.length)return rr(e,n,r);n.all?r(null,o.map(t=>({address:t,family:4}))):r(null,o[0],4)}).catch(()=>rr(e,n,r))};var I=2208,to=5173;var Oc=[`http://localhost:${I}`,`http://127.0.0.1:${I}`,`http://localhost:${to}`,`http://127.0.0.1:${to}`],Ht={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},oo=60,C={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},io={showTunnelUrlInMenu:!1};var so={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var ao={checkIntervalMs:3e4,requestTimeoutMs:5e3},ae={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},Ks={Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache",Pragma:"no-cache","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"};function K(e,n={}){return fetch(e,{...n,headers:{...Ks,...n.headers}})}var Gs=(0,jt.dirname)((0,co.fileURLToPath)(__importMetaUrl)),Ws=[(0,jt.join)(lo.default.homedir(),".9remote",".env"),(0,jt.join)(Gs,"..",".env")];function Vs(e){for(let n of e.split(`
12
+ `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of Ws)if((0,Rn.existsSync)(e))try{Vs((0,Rn.readFileSync)(e,"utf8"))}catch{}for(let[e,n]of Object.entries(so))process.env[e]||(process.env[e]=n);var lr=A(require("path"),1),yo=A(require("fs"),1),wo=require("url");var fo=A(uo(),1),sr=A(require("crypto"),1),{machineIdSync:Ys}=fo.default;async function dt(e=null){let n=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=Ys();return sr.default.createHash("sha256").update(r+n).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),sr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var po=A(require("crypto"),1),Js=process.env.API_KEY_SECRET||"9remote-api-key-secret";function Qs(){let e="abcdefghijklmnopqrstuvwxyz0123456789",n="";for(let r=0;r<4;r++)n+=e.charAt(Math.floor(Math.random()*e.length));return n}function qs(e,n){return po.default.createHmac("sha256",Js).update(e+n).digest("hex").slice(0,6)}function mt(e){let n=e.slice(0,8),r=Qs(),o=qs(n,r);return{key:`sk-${n}-${r}-${o}`,keyId:r}}function xn(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var ie=A(require("fs"),1),Gt=A(require("path"),1);var Dc=te.STATE,ar=Gt.default.join(te.STATE,"state.json"),cr=Gt.default.join(te.ROOT,"keys.json"),bn=Gt.default.join(te.STATE,"cmd.json"),Fc=Gt.default.join(te.STATE,"settings.json");function An(){for(let e of[te.ROOT,te.STATE])ie.default.existsSync(e)||ie.default.mkdirSync(e,{recursive:!0})}function kn(e){try{An(),ie.default.writeFileSync(ar,JSON.stringify(e,null,2),{mode:384})}catch(n){console.error("Error saving state:",n)}}function mo(){try{ie.default.existsSync(ar)&&ie.default.unlinkSync(ar)}catch{}}function _n(){try{return An(),ie.default.existsSync(cr)?JSON.parse(ie.default.readFileSync(cr,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function ht(e){try{An(),ie.default.writeFileSync(bn,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function ho(){try{if(!ie.default.existsSync(bn))return null;let e=JSON.parse(ie.default.readFileSync(bn,"utf8"));return ie.default.unlinkSync(bn),e.cmd}catch{return null}}function et(e,n,r="Default"){try{An();let o={machineId:e,key:n,name:r,createdAt:new Date().toISOString()};return ie.default.writeFileSync(cr,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}function go(){return process.env.CODESPACES==="true"}var Xs=lr.default.dirname((0,wo.fileURLToPath)(__importMetaUrl));async function Fe(){let e=await dt();if(go()&&process.env.NREMOTE_API_KEY)return et(e,process.env.NREMOTE_API_KEY,"Codespace");let n=_n();if(!n.key){let{key:r}=mt(e);n=et(e,r,"Default")}return n}function we(){return"2.0.55"}var ve=A(require("fs"),1),fr=A(require("path"),1);var Pn=te.LOGS,Vt=fr.default.join(Pn,Ht.fileName),In=fr.default.join(Pn,Ht.rotatedName),vo=!1,So=null;function Zs(){ve.default.existsSync(Pn)||ve.default.mkdirSync(Pn,{recursive:!0})}function zs(){try{if(ve.default.statSync(Vt).size<Ht.maxBytes)return;try{ve.default.rmSync(In,{force:!0})}catch{}ve.default.renameSync(Vt,In)}catch{}}function ea(){try{let e=ve.default.statSync(In);Date.now()-e.mtimeMs>Ht.cleanupAfterDays*864e5&&ve.default.rmSync(In,{force:!0})}catch{}}function pr(e){try{zs(),ve.default.appendFileSync(Vt,e+`
13
+ `)}catch{}}function ur(e){return e.map(n=>{if(n instanceof Error)return n.stack||n.message;if(typeof n=="object")try{return JSON.stringify(n)}catch{return String(n)}return String(n)}).join(" ")}function Eo(){let e=new Date,n=(r,o=2)=>String(r).padStart(o,"0");return`${n(e.getHours())}:${n(e.getMinutes())}:${n(e.getSeconds())}.${n(e.getMilliseconds(),3)}`}var ta=/\x1b\[[0-9;]*m/g,na=/https?:\/\/[^\s]+/g;function ra(e){return String(e).replace(ta,"").replace(na,"").replace(/\s+$/g,"")}function Wt(e,n,r){let o=ra(r);if(!o)return;let t=n==="info"?e:`${e}:${n}`,i=`${Eo()} [${t}] ${o}`;if(pr(i),So)try{So(i)}catch{}}function oa(){process.on("uncaughtException",e=>Wt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let n=e instanceof Error?e.stack||e.message:String(e);Wt("crash","error",`unhandledRejection: ${n}`)}),process.on("exit",e=>pr(`${Eo()} [exit] code=${e} pid=${process.pid}`))}function To(){vo||(vo=!0,Zs(),ea(),pr(`
14
+ === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),oa())}function Ro(e=60){try{return ve.default.readFileSync(Vt,"utf8").split(`
15
+ `).filter(Boolean).slice(-e)}catch{return[]}}function Y(e){return{info:(...n)=>Wt(e,"info",ur(n)),warn:(...n)=>Wt(e,"warn",ur(n)),error:(...n)=>Wt(e,"error",ur(n))}}var Yt=Vt;var xo=(e=0)=>n=>`\x1B[${n+e}m`,bo=(e=0)=>n=>`\x1B[${38+e};5;${n}m`,Ao=(e=0)=>(n,r,o)=>`\x1B[${38+e};2;${n};${r};${o}m`,L={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Jc=Object.keys(L.modifier),ia=Object.keys(L.color),sa=Object.keys(L.bgColor),Qc=[...ia,...sa];function aa(){let e=new Map;for(let[n,r]of Object.entries(L)){for(let[o,t]of Object.entries(r))L[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},r[o]=L[o],e.set(t[0],t[1]);Object.defineProperty(L,n,{value:r,enumerable:!1})}return Object.defineProperty(L,"codes",{value:e,enumerable:!1}),L.color.close="\x1B[39m",L.bgColor.close="\x1B[49m",L.color.ansi=xo(),L.color.ansi256=bo(),L.color.ansi16m=Ao(),L.bgColor.ansi=xo(10),L.bgColor.ansi256=bo(10),L.bgColor.ansi16m=Ao(10),Object.defineProperties(L,{rgbToAnsi256:{value(n,r,o){return n===r&&r===o?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(n){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(n.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(i=>i+i).join(""));let t=Number.parseInt(o,16);return[t>>16&255,t>>8&255,t&255]},enumerable:!1},hexToAnsi256:{value:n=>L.rgbToAnsi256(...L.hexToRgb(n)),enumerable:!1},ansi256ToAnsi:{value(n){if(n<8)return 30+n;if(n<16)return 90+(n-8);let r,o,t;if(n>=232)r=((n-232)*10+8)/255,o=r,t=r;else{n-=16;let a=n%36;r=Math.floor(n/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(r,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(n,r,o)=>L.ansi256ToAnsi(L.rgbToAnsi256(n,r,o)),enumerable:!1},hexToAnsi:{value:n=>L.ansi256ToAnsi(L.hexToAnsi256(n)),enumerable:!1}}),L}var ca=aa(),de=ca;var Cn=A(require("node:process"),1),_o=A(require("node:os"),1),dr=A(require("node:tty"),1);function ce(e,n=globalThis.Deno?globalThis.Deno.args:Cn.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=n.indexOf(r+e),t=n.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:M}=Cn.default,On;ce("no-color")||ce("no-colors")||ce("color=false")||ce("color=never")?On=0:(ce("color")||ce("colors")||ce("color=true")||ce("color=always"))&&(On=1);function la(){if("FORCE_COLOR"in M)return M.FORCE_COLOR==="true"?1:M.FORCE_COLOR==="false"?0:M.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(M.FORCE_COLOR,10),3)}function ua(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function fa(e,{streamIsTTY:n,sniffFlags:r=!0}={}){let o=la();o!==void 0&&(On=o);let t=r?On:o;if(t===0)return 0;if(r){if(ce("color=16m")||ce("color=full")||ce("color=truecolor"))return 3;if(ce("color=256"))return 2}if("TF_BUILD"in M&&"AGENT_NAME"in M)return 1;if(e&&!n&&t===void 0)return 0;let i=t||0;if(M.TERM==="dumb")return i;if(Cn.default.platform==="win32"){let s=_o.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in M)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in M)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in M)||M.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in M)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(M.TEAMCITY_VERSION)?1:0;if(M.COLORTERM==="truecolor"||M.TERM==="xterm-kitty"||M.TERM==="xterm-ghostty"||M.TERM==="wezterm")return 3;if("TERM_PROGRAM"in M){let s=Number.parseInt((M.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(M.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(M.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(M.TERM)||"COLORTERM"in M?1:i}function ko(e,n={}){let r=fa(e,{streamIsTTY:e&&e.isTTY,...n});return ua(r)}var pa={stdout:ko({isTTY:dr.default.isatty(1)}),stderr:ko({isTTY:dr.default.isatty(2)})},Po=pa;function Io(e,n,r){let o=e.indexOf(n);if(o===-1)return e;let t=n.length,i=0,s="";do s+=e.slice(i,o)+n+r,i=o+t,o=e.indexOf(n,i);while(o!==-1);return s+=e.slice(i),s}function Oo(e,n,r,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+n+(s?`\r
15
16
  `:`
16
17
  `)+r,t=o+1,o=e.indexOf(`
17
- `,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:so,stderr:ao}=ro,Xn=Symbol("GENERATOR"),lt=Symbol("STYLER"),Nt=Symbol("IS_EMPTY"),co=["ansi","ansi","ansi256","ansi16m"],ut=Object.create(null),Ds=(e,n={})=>{if(n.level&&!(Number.isInteger(n.level)&&n.level>=0&&n.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=so?so.level:0;e.level=n.level===void 0?r:n.level};var Us=e=>{let n=(...r)=>r.join(" ");return Ds(n,e),Object.setPrototypeOf(n,Dt.prototype),n};function Dt(e){return Us(e)}Object.setPrototypeOf(Dt.prototype,Function.prototype);for(let[e,n]of Object.entries(le))ut[e]={get(){let r=yn(this,Zn(n.open,n.close,this[lt]),this[Nt]);return Object.defineProperty(this,e,{value:r}),r}};ut.visible={get(){let e=yn(this,this[lt],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var qn=(e,n,r,...o)=>e==="rgb"?n==="ansi16m"?le[r].ansi16m(...o):n==="ansi256"?le[r].ansi256(le.rgbToAnsi256(...o)):le[r].ansi(le.rgbToAnsi(...o)):e==="hex"?qn("rgb",n,r,...le.hexToRgb(...o)):le[r][e](...o),Bs=["rgb","hex","ansi256"];for(let e of Bs){ut[e]={get(){let{level:r}=this;return function(...o){let t=Zn(qn(e,co[r],"color",...o),le.color.close,this[lt]);return yn(this,t,this[Nt])}}};let n="bg"+e[0].toUpperCase()+e.slice(1);ut[n]={get(){let{level:r}=this;return function(...o){let t=Zn(qn(e,co[r],"bgColor",...o),le.bgColor.close,this[lt]);return yn(this,t,this[Nt])}}}}var Fs=Object.defineProperties(()=>{},{...ut,level:{enumerable:!0,get(){return this[Xn].level},set(e){this[Xn].level=e}}}),Zn=(e,n,r)=>{let o,t;return r===void 0?(o=e,t=n):(o=r.openAll+e,t=n+r.closeAll),{open:e,close:n,openAll:o,closeAll:t,parent:r}},yn=(e,n,r)=>{let o=(...t)=>Hs(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,Fs),o[Xn]=e,o[lt]=n,o[Nt]=r,o},Hs=(e,n)=>{if(e.level<=0||!n)return e[Nt]?"":n;let r=e[lt];if(r===void 0)return n;let{openAll:o,closeAll:t}=r;if(n.includes("\x1B"))for(;r!==void 0;)n=oo(n,r.close,r.open),r=r.parent;let i=n.indexOf(`
18
- `);return i!==-1&&(n=io(n,t,o,i)),o+n+t};Object.defineProperties(Dt.prototype,ut);var Ks=Dt(),vc=Dt({level:ao?ao.level:0});var m=Ks;var Ce=require("fs"),ho=require("url"),vn=require("child_process"),Sn=A(require("path"),1),go=A(require("os"),1);var ft=A(require("fs"),1),er=A(require("path"),1),lo=A(require("os"),1),uo=require("child_process"),zn=er.default.join(lo.default.homedir(),".9remote","pids");function js(){try{ft.default.existsSync(zn)||ft.default.mkdirSync(zn,{recursive:!0})}catch{}}function tr(e){return er.default.join(zn,`${e}.pid`)}function Ie(e,n){if(n)try{js(),ft.default.writeFileSync(tr(e),String(n))}catch{}}function wn(e){try{let n=ft.default.readFileSync(tr(e),"utf8").trim(),r=parseInt(n,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function Pe(e){try{ft.default.unlinkSync(tr(e))}catch{}}function fo(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Gs(e){let n=wn(e);if(Pe(e),!n)return!1;try{process.platform==="win32"?(0,uo.execSync)(`taskkill /F /T /PID ${n}`,{stdio:"ignore",windowsHide:!0}):process.kill(n,"SIGKILL")}catch{}return!0}var Ws=["cloudflared","agent"];function po(){for(let e of Ws)Gs(e)}var Ys=Sn.default.dirname((0,ho.fileURLToPath)(__importMetaUrl)),Vs="9remote",Qs=`https://registry.npmjs.org/${Vs}/latest`,Js=3e3;var mo=2208,nr=Sn.default.join(go.default.homedir(),".9remote","cloudflared.pid");function Xs(){try{po()}catch{}try{if((0,Ce.existsSync)(nr)){let e=parseInt((0,Ce.readFileSync)(nr,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,Ce.unlinkSync)(nr)}catch{}}}catch{}try{process.platform==="win32"?(0,vn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${mo}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,vn.execSync)(`lsof -ti:${mo} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function qs(){return"2.0.31"}function Zs(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function Tn(){Xs()}async function yo(){try{let e=qs();if(!e)return null;let n=await Y(Qs,{signal:AbortSignal.timeout(Js)});if(!n.ok)return null;let{version:r}=await n.json();return r&&Zs(e,r)?{current:e,latest:r}:null}catch{return null}}var te=A(require("fs"),1),Ut=A(require("path"),1);var _c=he.STATE,rr=Ut.default.join(he.STATE,"state.json"),or=Ut.default.join(he.ROOT,"keys.json"),En=Ut.default.join(he.STATE,"cmd.json"),kc=Ut.default.join(he.STATE,"settings.json");function Rn(){for(let e of[he.ROOT,he.STATE])te.default.existsSync(e)||te.default.mkdirSync(e,{recursive:!0})}function xn(e){try{Rn(),te.default.writeFileSync(rr,JSON.stringify(e,null,2),{mode:384})}catch(n){console.error("Error saving state:",n)}}function wo(){try{te.default.existsSync(rr)&&te.default.unlinkSync(rr)}catch{}}function bn(){try{return Rn(),te.default.existsSync(or)?JSON.parse(te.default.readFileSync(or,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function pt(e){try{Rn(),te.default.writeFileSync(En,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function vo(){try{if(!te.default.existsSync(En))return null;let e=JSON.parse(te.default.readFileSync(En,"utf8"));return te.default.unlinkSync(En),e.cmd}catch{return null}}function Xe(e,n,r="Default"){try{Rn();let o={machineId:e,key:n,name:r,createdAt:new Date().toISOString()};return te.default.writeFileSync(or,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}var Lo=A(require("os"),1);var On=A(require("readline"),1),Eo=A(require("http"),1);var ir=require("child_process"),zs={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function An(e){let n=zs[e];n&&process.platform==="darwin"&&(0,ir.exec)(`open "${n}"`,()=>{})}function ue({strategy:e,baseMs:n,maxMs:r},o){let t=Math.max(1,o),i=e==="exp"?n*Math.pow(2,t-1):n*t;return Math.min(i,r)}async function So({config:e,task:n,label:r="task",log:o=()=>{},ctx:t={}}){let i=0;for(;!t.cancelled;){i++;try{if(await n(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(t.cancelled)return!1;let s=ue(e,i);o(`\u{1F504} ${r} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var T={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",orange:"\x1B[38;2;230;138;110m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",white:"\x1B[37m"},Ro=()=>Math.min(44,process.stdout.columns||44);function ar(e,n=null){let o=Ro()-2,t=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return T.orange+"\u2551"+T.reset+a+" ".repeat(l)+T.orange+"\u2551"+T.reset},i=(a,c=l=>l)=>{let l=a.replace(/\x1b\[[0-9;]*m/g,""),u=Math.floor((o-l.length)/2),f=o-l.length-u;return T.orange+"\u2551"+T.reset+" ".repeat(u)+c(a)+" ".repeat(f)+T.orange+"\u2551"+T.reset},s=["",T.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+T.reset,t(),i(`\u{1F680} 9Remote v${e}`,a=>T.bold+T.orange+a+T.reset),i("Remote terminal access from anywhere",a=>T.dim+a+T.reset),t()];return n&&(s.push(i(`\u2B06 New version v${n} available!`,a=>T.yellow+T.bold+a+T.reset)),s.push(i("Run: npm i -g 9remote@latest",a=>T.dim+a+T.reset)),s.push(t())),s.push(T.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+T.reset),s.push(""),s.join(`
19
- `)}function mt(e,n=null){console.log(ar(e,n))}var To=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],sr=[{label:"Preparing",desc:"Checking dependencies"},{label:"Connecting",desc:"Creating session"},{label:"Starting tunnel",desc:"Spawning tunnel"},{label:"Verifying tunnel",desc:"Health check"},{label:"Ready",desc:"Tunnel is live"}],ea=process.platform==="win32",ta=ea?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var xo=(e,n)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(n)};process.on("SIGINT",()=>xo("SIGINT",130));process.on("SIGTERM",()=>xo("SIGTERM",143));var Re=0,qe=null,_n=0,ye=-1,Bt=null,dt=null,kn=!1;function bo(){let e=[],n=ye===sr.length-1;return sr.forEach((r,o)=>{let t=o===ye&&Bt?Bt:r.desc;if(o<ye||n&&o===ye)e.push(` ${T.green}\u2713${T.reset} ${T.dim}${r.label}${T.reset}`),dt&&o===dt.afterIdx&&e.push(` ${T.green}\u2713${T.reset} ${T.cyan}${dt.text}${T.reset}`);else if(o===ye){let i=To[_n%To.length];e.push(` ${T.orange}${i}${T.reset} ${T.bold}${r.label}${T.reset} ${T.dim}${t}${T.reset}`)}else e.push(` ${T.dim}\u25CB ${r.label}${T.reset}`)}),e}function Ao(){let e=bo();Re>0&&process.stdout.write(`\x1B[${Re}A\x1B[0J`),process.stdout.write(e.join(`
18
+ `,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:Co,stderr:$o}=Po,mr=Symbol("GENERATOR"),gt=Symbol("STYLER"),Jt=Symbol("IS_EMPTY"),Lo=["ansi","ansi","ansi256","ansi16m"],yt=Object.create(null),da=(e,n={})=>{if(n.level&&!(Number.isInteger(n.level)&&n.level>=0&&n.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Co?Co.level:0;e.level=n.level===void 0?r:n.level};var ma=e=>{let n=(...r)=>r.join(" ");return da(n,e),Object.setPrototypeOf(n,Qt.prototype),n};function Qt(e){return ma(e)}Object.setPrototypeOf(Qt.prototype,Function.prototype);for(let[e,n]of Object.entries(de))yt[e]={get(){let r=$n(this,gr(n.open,n.close,this[gt]),this[Jt]);return Object.defineProperty(this,e,{value:r}),r}};yt.visible={get(){let e=$n(this,this[gt],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var hr=(e,n,r,...o)=>e==="rgb"?n==="ansi16m"?de[r].ansi16m(...o):n==="ansi256"?de[r].ansi256(de.rgbToAnsi256(...o)):de[r].ansi(de.rgbToAnsi(...o)):e==="hex"?hr("rgb",n,r,...de.hexToRgb(...o)):de[r][e](...o),ha=["rgb","hex","ansi256"];for(let e of ha){yt[e]={get(){let{level:r}=this;return function(...o){let t=gr(hr(e,Lo[r],"color",...o),de.color.close,this[gt]);return $n(this,t,this[Jt])}}};let n="bg"+e[0].toUpperCase()+e.slice(1);yt[n]={get(){let{level:r}=this;return function(...o){let t=gr(hr(e,Lo[r],"bgColor",...o),de.bgColor.close,this[gt]);return $n(this,t,this[Jt])}}}}var ga=Object.defineProperties(()=>{},{...yt,level:{enumerable:!0,get(){return this[mr].level},set(e){this[mr].level=e}}}),gr=(e,n,r)=>{let o,t;return r===void 0?(o=e,t=n):(o=r.openAll+e,t=n+r.closeAll),{open:e,close:n,openAll:o,closeAll:t,parent:r}},$n=(e,n,r)=>{let o=(...t)=>ya(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,ga),o[mr]=e,o[gt]=n,o[Jt]=r,o},ya=(e,n)=>{if(e.level<=0||!n)return e[Jt]?"":n;let r=e[gt];if(r===void 0)return n;let{openAll:o,closeAll:t}=r;if(n.includes("\x1B"))for(;r!==void 0;)n=Io(n,r.close,r.open),r=r.parent;let i=n.indexOf(`
19
+ `);return i!==-1&&(n=Oo(n,t,o,i)),o+n+t};Object.defineProperties(Qt.prototype,yt);var wa=Qt(),nl=Qt({level:$o?$o.level:0});var m=wa;var J=require("fs"),Jo=require("url"),Xt=require("child_process"),Ie=A(require("path"),1),Tt=A(require("os"),1);var wt=A(require("fs"),1),yr=A(require("path"),1),Mo=A(require("os"),1),No=require("child_process"),Ln=yr.default.join(Mo.default.homedir(),".9remote","pids");function va(){try{wt.default.existsSync(Ln)||wt.default.mkdirSync(Ln,{recursive:!0})}catch{}}function wr(e){return yr.default.join(Ln,`${e}.pid`)}function Ue(e,n){if(n)try{va(),wt.default.writeFileSync(wr(e),String(n))}catch{}}function Mn(e){try{let n=wt.default.readFileSync(wr(e),"utf8").trim(),r=parseInt(n,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function Be(e){try{wt.default.unlinkSync(wr(e))}catch{}}function Do(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Sa(e){let n=Mn(e);if(Be(e),!n)return!1;try{process.platform==="win32"?(0,No.execSync)(`taskkill /F /T /PID ${n}`,{stdio:"ignore",windowsHide:!0}):process.kill(n,"SIGKILL")}catch{}return!0}var Ea=["cloudflared","agent"];function Fo(){for(let e of Ea)Sa(e)}function Uo(){return Ln}var qt=require("child_process"),_e=require("fs"),St=require("path"),Er=A(require("os"),1),vt=A(require("path"),1),Ho=require("url");var sl=(0,St.join)(te.LOGS,"autostart.log"),vr="cc.9remote.agent";var Sr=Er.default.homedir(),Bo=vt.default.dirname((0,Ho.fileURLToPath)(__importMetaUrl)),al={darwin:(0,St.join)(Sr,"Library","LaunchAgents",`${vr}.plist`),linux:(0,St.join)(Sr,".config","autostart",`${vr}.desktop`),linuxSystemd:(0,St.join)(Sr,".config","systemd","user",`${vr}.service`)};function Tr(){for(let e=Bo,n=null;e!==n;n=e,e=vt.default.dirname(e)){let r=vt.default.join(e,"package.json");if((0,_e.existsSync)(r)){try{let o=JSON.parse((0,_e.readFileSync)(r,"utf8"));if(o.name!==ee)continue;let t=typeof o.bin=="string"?o.bin:o.bin?.[ee];if(t){let i=vt.default.resolve(e,t);if((0,_e.existsSync)(i))return i}}catch{}break}}return process.argv[1]||vt.default.resolve(Bo,"..","index.js")}function Rr(){return process.execPath}function jo(e){let n=Rr(),r=Tr();if(process.platform==="win32"){let t=e.join(" "),i=(0,St.join)(Er.default.tmpdir(),`${ee}-launch.vbs`);return(0,_e.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${n}"" ""${r}"" ${t}", 0, False
20
+ `),(0,qt.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,qt.spawn)(n,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}var N="https://9remote.cc",Ko=3e4,Go=500,xr=300,me={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},He={intervalMs:2e3,timeoutMs:18e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},ne={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400},Pe={maxLogLines:200,headerWidth:44},Et={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"},Wo=5e3,Vo=2,Yo=3e4,le={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var Ta=Ie.default.dirname((0,Jo.fileURLToPath)(__importMetaUrl)),Qo=3e3;var Dn=2208,br=Ie.default.join(Tt.default.homedir(),".9remote","cloudflared.pid");function Ra(){try{Fo()}catch{}try{if((0,J.existsSync)(br)){let e=parseInt((0,J.readFileSync)(br,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,J.unlinkSync)(br)}catch{}}}catch{}try{process.platform==="win32"?(0,Xt.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Dn}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,Xt.execSync)(`lsof -ti:${Dn} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function qo(){return"2.0.55"}function Xo(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function xa(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,J.existsSync)("/.dockerenv")?"Docker":null}function Fn(){Ra()}async function Zo(){try{let e=qo();if(!e)return null;let n=await K(or,{signal:AbortSignal.timeout(Qo)});if(!n.ok)return null;let{version:r}=await n.json();return r&&Xo(e,r)?{current:e,latest:r}:null}catch{return null}}var Nn=Ie.default.join(te.STATE,Et.lockFile);function ba(){try{if((0,J.existsSync)(Nn)){let{pid:e,ts:n}=JSON.parse((0,J.readFileSync)(Nn,"utf8")),r=Date.now()-n<Et.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,J.writeFileSync)(Nn,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function Aa(){try{let e=await K(or,{signal:AbortSignal.timeout(Qo)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function ka(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function _a({currentVersion:e,latest:n,agentPid:r}){let o=Uo(),t=ka(),i=Rr(),s=Tr(),a=Nn,c=`--prefer-online --no-audit --no-fund ${t}`.trim();if(process.platform==="win32"){let f=Ie.default.join(Tt.default.tmpdir(),`${ee}-restart.vbs`),p=`@echo off
21
+ setlocal EnableDelayedExpansion
22
+ set "NODE=${i}"
23
+ set "CLI=${s}"
24
+
25
+ :waitloop
26
+ tasklist /FI "PID eq ${r}" 2>nul | find "${r}" >nul
27
+ if not errorlevel 1 (
28
+ timeout /t 1 /nobreak >nul
29
+ goto waitloop
30
+ )
31
+
32
+ for %%N in (cloudflared agent) do (
33
+ if exist "${o}\\%%N.pid" (
34
+ for /f %%P in ('type "${o}\\%%N.pid"') do taskkill /F /T /PID %%P >nul 2>&1
35
+ del /f /q "${o}\\%%N.pid" >nul 2>&1
36
+ )
37
+ )
38
+ for /f "tokens=5" %%a in ('netstat -aon ^| findstr :${Dn}') do taskkill /F /PID %%a >nul 2>&1
39
+ timeout /t 3 /nobreak >nul
40
+
41
+ set ATTEMPT=0
42
+ :installloop
43
+ set /a ATTEMPT+=1
44
+ call npm install -g ${ke} ${c} >nul 2>&1
45
+ if !ERRORLEVEL! EQU 0 goto verify
46
+ if !ATTEMPT! GEQ ${Et.maxRetry} (
47
+ call npm install -g ${ke} ${c} --omit=optional >nul 2>&1
48
+ goto verify
49
+ )
50
+ timeout /t 3 /nobreak >nul
51
+ goto installloop
52
+
53
+ :verify
54
+ set "NEWVER="
55
+ set "VERFILE=%TEMP%\\${ee}-ver.txt"
56
+ "%NODE%" "%CLI%" --version > "%VERFILE%" 2>nul
57
+ REM Read first line + strip surrounding whitespace/CR via for/f tokens
58
+ for /f "usebackq tokens=* delims= " %%V in ("%VERFILE%") do (
59
+ set "NEWVER=%%V"
60
+ goto :gotver
61
+ )
62
+ :gotver
63
+ del /f /q "%VERFILE%" >nul 2>&1
64
+ if defined NEWVER set "NEWVER=!NEWVER: =!"
65
+ if not "!NEWVER!"=="${n}" (
66
+ call npm install -g ${ee}@${e} ${c} >nul 2>&1
67
+ )
68
+ del /f /q "${a}" >nul 2>&1
69
+
70
+ wscript "${f}"
71
+ exit /b 0
72
+ `,d=Ie.default.join(Tt.default.tmpdir(),`${ee}-update.bat`);(0,J.writeFileSync)(d,p),(0,J.writeFileSync)(f,'CreateObject("WScript.Shell").Run """%NODE%"" ""%CLI%"" --tray --skip-update --start", 0, False'.replace("%NODE%",i).replace("%CLI%",s)+`
73
+ `);let h=Ie.default.join(Tt.default.tmpdir(),`${ee}-update.vbs`);return(0,J.writeFileSync)(h,`CreateObject("WScript.Shell").Run "cmd /c ""${d}""", 0, False
74
+ `),{shellCmd:["wscript.exe",[h]],windowsVerbatim:!1}}let l=`#!/bin/bash
75
+ # Wait for agent to exit so it releases the cli.cjs file lock
76
+ while kill -0 ${r} 2>/dev/null; do sleep 1; done
77
+
78
+ # Kill tracked PIDs only (never ptyDaemon \u2192 sessions survive)
79
+ for name in cloudflared agent; do
80
+ f="${o}/\${name}.pid"
81
+ if [ -f "$f" ]; then
82
+ pid=$(cat "$f" 2>/dev/null)
83
+ [ -n "$pid" ] && kill -9 "$pid" 2>/dev/null || true
84
+ rm -f "$f"
85
+ fi
86
+ done
87
+ lsof -ti:${Dn} | xargs kill -9 2>/dev/null || true
88
+ sleep 2
89
+
90
+ attempt=0
91
+ while [ $attempt -lt ${Et.maxRetry} ]; do
92
+ attempt=$((attempt+1))
93
+ echo "Installing (attempt $attempt)..."
94
+ if npm install -g ${ke} ${c}; then break; fi
95
+ if [ $attempt -eq ${Et.maxRetry} ]; then
96
+ npm install -g ${ke} ${c} --omit=optional || true
97
+ fi
98
+ sleep 3
99
+ done
100
+
101
+ # Verify version == latest; roll back if the new binary is broken/wrong (R2)
102
+ # Take first line + strip ANSI escapes so trailing cursor codes don't corrupt compare
103
+ NEWVER=$("${i}" "${s}" --version 2>/dev/null | head -1 | sed 's/\x1B[[0-9;?]*[a-zA-Z]//g' | tr -d '[:space:]')
104
+ if [ "$NEWVER" != "${n}" ]; then
105
+ echo "Verify failed (got $NEWVER, want ${n}), rolling back to ${e}..."
106
+ npm install -g ${ee}@${e} ${c} || true
107
+ fi
108
+
109
+ rm -f "${a}"
110
+ "${i}" "${s}" --tray --skip-update --start
111
+ `,u=Ie.default.join(Tt.default.tmpdir(),`${ee}-update.sh`);return(0,J.writeFileSync)(u,l,{mode:493}),{shellCmd:["sh",[u]],windowsVerbatim:!1}}async function zo(){let e=qo();if(!e||xa())return!1;let n=await Aa();if(!n||!Xo(e,n)||!ba())return!1;let{shellCmd:r,windowsVerbatim:o}=_a({currentVersion:e,latest:n,agentPid:process.pid});return(0,Xt.spawn)(r[0],r[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:o}).unref(),setTimeout(()=>process.exit(0),500),!0}var di=A(require("os"),1);var jn=A(require("readline"),1),ni=A(require("http"),1);var Ar=require("child_process"),Pa={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function Un(e){let n=Pa[e];n&&process.platform==="darwin"&&(0,Ar.exec)(`open "${n}"`,()=>{})}function he({strategy:e,baseMs:n,maxMs:r},o){let t=Math.max(1,o),i=e==="exp"?n*Math.pow(2,t-1):n*t;return Math.min(i,r)}async function ei({config:e,task:n,label:r="task",log:o=()=>{},ctx:t={}}){let i=0;for(;!t.cancelled;){i++;try{if(await n(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(t.cancelled)return!1;let s=he(e,i);o(`\u{1F504} ${r} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var E={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",orange:"\x1B[38;2;230;138;110m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",white:"\x1B[37m"},ri=()=>Math.min(44,process.stdout.columns||44);function _r(e,n=null){let o=ri()-2,t=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return E.orange+"\u2551"+E.reset+a+" ".repeat(l)+E.orange+"\u2551"+E.reset},i=(a,c=l=>l)=>{let l=a.replace(/\x1b\[[0-9;]*m/g,""),u=Math.floor((o-l.length)/2),f=o-l.length-u;return E.orange+"\u2551"+E.reset+" ".repeat(u)+c(a)+" ".repeat(f)+E.orange+"\u2551"+E.reset},s=["",E.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+E.reset,t(),i(`\u{1F680} 9Remote v${e}`,a=>E.bold+E.orange+a+E.reset),i("Remote terminal access from anywhere",a=>E.dim+a+E.reset),t()];return n&&(s.push(i(`\u2B06 New version v${n} available!`,a=>E.yellow+E.bold+a+E.reset)),s.push(i(`Run: npm i -g ${ke}`,a=>E.dim+a+E.reset)),s.push(t())),s.push(E.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+E.reset),s.push(""),s.join(`
112
+ `)}function xt(e,n=null){console.log(_r(e,n))}var ti=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],kr=[{label:"Preparing",desc:"Checking dependencies"},{label:"Connecting",desc:"Creating session"},{label:"Starting tunnel",desc:"Spawning tunnel"},{label:"Verifying tunnel",desc:"Health check"},{label:"Ready",desc:"Tunnel is live"}],Ia=process.platform==="win32",Oa=Ia?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var oi=(e,n)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(n)};process.on("SIGINT",()=>oi("SIGINT",130));process.on("SIGTERM",()=>oi("SIGTERM",143));var Oe=0,tt=null,Bn=0,Se=-1,Zt=null,Rt=null,Hn=!1;function ii(){let e=[],n=Se===kr.length-1;return kr.forEach((r,o)=>{let t=o===Se&&Zt?Zt:r.desc;if(o<Se||n&&o===Se)e.push(` ${E.green}\u2713${E.reset} ${E.dim}${r.label}${E.reset}`),Rt&&o===Rt.afterIdx&&e.push(` ${E.green}\u2713${E.reset} ${E.cyan}${Rt.text}${E.reset}`);else if(o===Se){let i=ti[Bn%ti.length];e.push(` ${E.orange}${i}${E.reset} ${E.bold}${r.label}${E.reset} ${E.dim}${t}${E.reset}`)}else e.push(` ${E.dim}\u25CB ${r.label}${E.reset}`)}),e}function si(){let e=ii();Oe>0&&process.stdout.write(`\x1B[${Oe}A\x1B[0J`),process.stdout.write(e.join(`
20
113
  `)+`
21
- `),Re=e.length}function _o(){if(Re===0||ye<0)return;let e=bo();if(e.length!==Re){Ao();return}let n=ye+(dt&&dt.afterIdx<ye?1:0),r=Re-n;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[n]}\x1B[${r}B\r`)}function na(){kn||(process.stdout.write("\x1B[?25l"),kn=!0)}function ko(){kn&&(process.stdout.write("\x1B[?25h"),kn=!1)}function Oo(e,n=!1,r=null){qe&&(clearInterval(qe),qe=null),ye=e,Bt=r,_n=0,n||(Re=0),Ao(),e<sr.length-1?(na(),qe=setInterval(()=>{_n++,_o()},ta)):ko()}function ht(e){Bt=e,Re>0&&_o()}function Io(){qe&&(clearInterval(qe),qe=null),ko(),Re=0,ye=-1,Bt=null,dt=null,_n=0}function we(e,n,r=0,o="",t=null,i=null){return new Promise(s=>{let a=r,c=!0,l=!0,u=process.platform==="win32",f=()=>{if(!c)return;process.stdout.write(l?"\x1B[2J\x1B[H":"\x1B[H"),l=!1;let v=typeof o=="function"?o():o;if(v)for(let E of v.split(`
22
- `))process.stdout.write(E+`\x1B[K
23
- `);e&&process.stdout.write(`${T.dim}${e}${T.reset}\x1B[K
114
+ `),Oe=e.length}function ai(){if(Oe===0||Se<0)return;let e=ii();if(e.length!==Oe){si();return}let n=Se+(Rt&&Rt.afterIdx<Se?1:0),r=Oe-n;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[n]}\x1B[${r}B\r`)}function Ca(){Hn||(process.stdout.write("\x1B[?25l"),Hn=!0)}function ci(){Hn&&(process.stdout.write("\x1B[?25h"),Hn=!1)}function li(e,n=!1,r=null){tt&&(clearInterval(tt),tt=null),Se=e,Zt=r,Bn=0,n||(Oe=0),si(),e<kr.length-1?(Ca(),tt=setInterval(()=>{Bn++,ai()},Oa)):ci()}function bt(e){Zt=e,Oe>0&&ai()}function ui(){tt&&(clearInterval(tt),tt=null),ci(),Oe=0,Se=-1,Zt=null,Rt=null,Bn=0}function Ee(e,n,r=0,o="",t=null,i=null){return new Promise(s=>{let a=r,c=!0,l=!0,u=process.platform==="win32",f=()=>{if(!c)return;process.stdout.write(l?"\x1B[2J\x1B[H":"\x1B[H"),l=!1;let v=typeof o=="function"?o():o;if(v)for(let T of v.split(`
115
+ `))process.stdout.write(T+`\x1B[K
116
+ `);e&&process.stdout.write(`${E.dim}${e}${E.reset}\x1B[K
24
117
  \x1B[K
25
- `),n.forEach((E,O)=>{let R=O===a?u?">":"\u2605":u?" ":"\u2606",b=O===a?` \x1B[7m${T.bold}${R} ${E.label}${T.reset}`:` ${R} ${E.label}`;process.stdout.write(b+`\x1B[K
26
- `)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(v,E)=>{!c||!E||(E.name==="up"?(a=(a-1+n.length)%n.length,f()):E.name==="down"?(a=(a+1)%n.length,f()):E.name==="return"?(p(),s(a)):E.name==="escape"?(p(),s(-1)):E.ctrl&&E.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),On.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{s(-1);return}process.stdin.on("keypress",d),process.stdin.resume(),f(),t&&t(f,()=>{c&&(p(),s(-2))})})}function cr(e){return new Promise(n=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),On.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,t)=>{if(!t)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),t.ctrl&&t.name==="c"&&(process.stdout.write(`
118
+ `),n.forEach((T,P)=>{let R=P===a?u?">":"\u2605":u?" ":"\u2606",b=P===a?` \x1B[7m${E.bold}${R} ${T.label}${E.reset}`:` ${R} ${T.label}`;process.stdout.write(b+`\x1B[K
119
+ `)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(v,T)=>{!c||!T||(T.name==="up"?(a=(a-1+n.length)%n.length,f()):T.name==="down"?(a=(a+1)%n.length,f()):T.name==="return"?(p(),s(a)):T.name==="escape"?(p(),s(-1)):T.ctrl&&T.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),jn.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{s(-1);return}process.stdin.on("keypress",d),process.stdin.resume(),f(),t&&t(f,()=>{c&&(p(),s(-2))})})}function Pr(e){return new Promise(n=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),jn.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,t)=>{if(!t)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),t.ctrl&&t.name==="c"&&(process.stdout.write(`
27
120
  `),process.exit(0));let i=(t.name||"").toLowerCase()==="y";process.stdout.write((i?"y":"n")+`
28
- `),n(i)};process.stdin.on("keypress",r)})}function Po(e,n){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",t=Ro(),i=process.stdin.listeners("keypress").slice();if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause();let s=`${T.orange}${"\u2550".repeat(t)}${T.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
121
+ `),n(i)};process.stdin.on("keypress",r)})}function fi(e,n){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",t=ri(),i=process.stdin.listeners("keypress").slice();if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause();let s=`${E.orange}${"\u2550".repeat(t)}${E.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
29
122
  ${s}
30
- ${T.orange}${T.bold} \u{1F514} New Device Connection${T.reset}
123
+ ${E.orange}${E.bold} \u{1F514} New Device Connection${E.reset}
31
124
  ${s}
32
- Device: ${T.cyan}${o}...${T.reset}
33
- IP: ${T.cyan}${n}${T.reset}
125
+ Device: ${E.cyan}${o}...${E.reset}
126
+ IP: ${E.cyan}${n}${E.reset}
34
127
  ${s}
35
128
 
36
- Allow this device? ${T.dim}(y/n)${T.reset} `),On.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let a=()=>{for(let l of i)process.stdin.on("keypress",l);if(i.length>0){if(process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume()}},c=(l,u)=>{if(!u)return;let f=(u.name||"").toLowerCase(),p=f==="y"||u.name==="return",d=f==="n"||u.name==="escape",h=u.ctrl&&u.name==="c";if(!p&&!d&&!h)return;try{if(process.stdin.removeListener("keypress",c),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause()}catch{}h&&process.exit(0);let v=p,E=v?`${T.green}y${T.reset}
129
+ Allow this device? ${E.dim}(y/n)${E.reset} `),jn.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let a=()=>{for(let l of i)process.stdin.on("keypress",l);if(i.length>0){if(process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume()}},c=(l,u)=>{if(!u)return;let f=(u.name||"").toLowerCase(),p=f==="y"||u.name==="return",d=f==="n"||u.name==="escape",h=u.ctrl&&u.name==="c";if(!p&&!d&&!h)return;try{if(process.stdin.removeListener("keypress",c),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause()}catch{}h&&process.exit(0);let v=p,T=v?`${E.green}y${E.reset}
37
130
 
38
- ${T.green}\u2713 Device approved${T.reset}
39
- `:`${T.red}n${T.reset}
131
+ ${E.green}\u2713 Device approved${E.reset}
132
+ `:`${E.red}n${E.reset}
40
133
 
41
- ${T.red}\u2717 Device rejected${T.reset}
42
- `;process.stdout.write(E),setTimeout(()=>{try{a()}catch{}r(v)},500)};process.stdin.on("keypress",c)})}function Co(e,n){let r=null,o=!1,t=null,i=45e3,s=()=>{t&&clearTimeout(t),t=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=()=>{o||(r=Eo.default.get(`http://localhost:${e}/api/ui/events`,c=>{let l="";s(),c.on("data",u=>{s(),l+=u.toString();let f=l.split(`
43
- `);l=f.pop();let p="";for(let d of f)if(d.startsWith("data: "))p=d.slice(6);else if(d===""&&p){try{let h=JSON.parse(p);n(h.type,h)}catch{}p=""}}),c.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,ue(re.sse,1))})}),r.on("error",()=>{t&&clearTimeout(t),o||setTimeout(a,ue(re.sse,1))}))};return a(),()=>{o=!0,t&&clearTimeout(t),r?.destroy()}}var lr=!1;function Mo(e){lr=e}async function J(e,n){try{return await fetch(`http://localhost:${I}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}catch{return null}}async function j(e){try{let n=await fetch(`http://localhost:${I}${e}`);return n.ok?await n.json():null}catch{return null}}async function U(e){await J("/api/ui/state",e)}async function K(e,n={}){lr&&Oo(e-1,e>C.PREPARING),await U({step:e,stepDesc:"",...n})}function In({phase:e,percent:n}){let r=e==="download"?`Downloading tunnel binary ${n??0}%`:"Extracting tunnel binary";lr&&ht(r),U({stepDesc:r})}async function Z(){return!!await j("/api/health")}async function ur(){let[e,n,r,o]=await Promise.all([j("/api/ui/state"),j("/api/device/auto-approve"),j("/api/autostart"),j("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!n?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function $o(){let e=Lo.default.networkInterfaces();for(let n of Object.values(e))for(let r of n)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var tn=require("child_process"),nn=A(require("path"),1),Rr=A(require("fs"),1),di=require("url");var B=A(require("fs"),1),$e=A(require("path"),1),Sr=A(require("https"),1),Ne=A(require("os"),1),qo=A(require("net"),1),et=require("child_process");var No=A(require("dns"),1),Do=require("child_process");var ra=2e3,oa=5e3,Uo=new No.default.promises.Resolver;Uo.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function gt(){process.platform==="win32"&&(0,Do.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function fr(e,n=ra){let r=Date.now();try{return{ok:!0,addrs:await Promise.race([Uo.resolve4(e),new Promise((t,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),n))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function Pn(e,{flushDns:n=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(n&&gt(),o){let t=await fr(o);if(!t.ok)return gt(),{ok:!1,dnsCode:t.code,elapsedMs:Date.now()-r}}try{let t=await Y(`${e}/api/health`,{signal:AbortSignal.timeout(oa)});return{ok:t.ok,httpStatus:t.status,elapsedMs:Date.now()-r}}catch(t){return{ok:!1,dnsCode:t.cause?.code||t.code||t.message,elapsedMs:Date.now()-r}}}var N="https://9remote.cc",Bo=3e4,Fo=500,pr=300,fe={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},Le={intervalMs:2e3,timeoutMs:18e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},z={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400},xe={maxLogLines:200,headerWidth:44},Ho=5e3,Ko=2,jo=3e4,ie={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var ia=V("tunnel"),Ft=null,Ht=null,yt=null,Ze=null,Me=0,dr=!1;async function mr(e){try{await fetch(`http://localhost:${I}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}async function Go(){if(!Ht||dr)return;let e=await Pn(Ht),n=e.ok?"healthy":"unreachable";if(n===yt){Ze=null,Me=0;return}if(n!==Ze){Ze=n,Me=1;return}Me++,!(Me<Ko)&&(ia.info(`\u{1FA7A} ${yt??"init"} \u2192 ${n}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),yt=n,Ze=null,Me=0,await mr({tunnelHealth:{status:n,checkedAt:Date.now()}}))}function Wo(e){if(!e)return jt();e!==Ht&&(Ht=e,yt=null,Ze=null,Me=0,gt(),Ft||(Ft=setInterval(Go,Gr.checkIntervalMs)),Go())}var Yo=Wo,wt=Wo;function Vo(){dr=!0}function Qo(){dr=!1}function Kt(e){yt=e,Ze=null,Me=0,mr({tunnelHealth:{status:e,checkedAt:Date.now()}})}function jt(){Ft&&(clearInterval(Ft),Ft=null),Ht=null,yt=null,Ze=null,Me=0,mr({tunnelHealth:{status:"unknown",checkedAt:null}})}var Q=V("tunnel"),Yt={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443},Vt=null,Cn=null,Ln=null,Qt=null,St=!1,Gt=0,wr=!1,Jt=null,Mn=0,hr=0,gr=!1,sa=3e4,aa=5e3,Wt=$e.default.join(Ne.default.homedir(),".9remote","bin"),Jo="cloudflared",Xt=Ne.default.platform()==="win32",ca=Xt?`${Jo}.exe`:Jo,vt=$e.default.join(Wt,ca),yr=$e.default.join(Ne.default.homedir(),".9remote","cloudflared.pid"),ze=!1,la="2026.6.1",Zo=`https://github.com/cloudflare/cloudflared/releases/download/${la}`;function zo(){return new Promise(e=>{let n=new qo.default.Socket,r=!1,o=t=>{if(!r){r=!0;try{n.destroy()}catch{}e(t)}};n.setTimeout(Yt.internetCheckTimeoutMs),n.once("connect",()=>o(!0)),n.once("timeout",()=>o(!1)),n.once("error",()=>o(!1));try{n.connect(Yt.internetCheckPort,Yt.internetCheckHost)}catch{o(!1)}})}async function ua(){wr=!0;try{let e=0;for(;;){if(e++,await zo())return;await new Promise(n=>setTimeout(n,ue(re.internet,e)))}}finally{wr=!1}}async function $n(e,n){if(!Qt){Q.warn("\u26A0\uFE0F No restartCallback registered \u2014 skip");return}if(St){Q.info(`\u23ED restart already in flight, skip (${n})`);return}if(Date.now()-hr<aa){Q.info(`\u23ED restart debounced, skip (${n})`);return}hr=Date.now(),St=!0;try{await ua();let r=ue(re.tunnelRestart,Gt+1);await new Promise(o=>setTimeout(o,r)),await Qt(e),Gt=0,hr=0}catch(r){Gt++,Q.error(`\u274C restart failed (#${Gt}): ${r?.message||r}`),setImmediate(()=>{St=!1,$n(e,"retry after fail")});return}finally{St=!1}}var fa={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function pa(){let e=Ne.default.platform(),n=Ne.default.arch(),r=fa[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[n];if(!o)throw new Error(`Unsupported architecture: ${n} for platform ${e}`);return`${Zo}/${o}`}var da=150;async function ei(e,n,r){return new Promise((o,t)=>{let i=B.default.createWriteStream(n);Sr.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),B.default.unlinkSync(n),ei(s.headers.location,n,r).then(o).catch(t);return}if(s.statusCode!==200){i.close(),B.default.unlinkSync(n),t(new Error(`Download failed with status ${s.statusCode}`));return}let a=parseInt(s.headers["content-length"]||"0",10),c=0,l=0,u=-1;s.on("data",f=>{if(c+=f.length,!r||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==u&&p-l>=da&&(l=p,u=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(n))}),i.on("error",f=>{i.close(),B.default.unlinkSync(n),t(f)})}).on("error",s=>{i.close(),B.default.existsSync(n)&&B.default.unlinkSync(n),t(s)})})}async function qt(e){if(B.default.existsSync(Wt)||B.default.mkdirSync(Wt,{recursive:!0}),B.default.existsSync(vt))return Xt||B.default.chmodSync(vt,"755"),vt;let n=pa(),r=n.endsWith(".tgz"),o=r?$e.default.join(Wt,"cloudflared.tgz"):vt;try{return e?.({phase:"download",percent:0}),await ei(n,o,t=>{e?.({phase:"download",percent:t})}),await ma(n,o),r&&(e?.({phase:"extract"}),(0,et.execSync)(`tar -xzf "${o}" -C "${Wt}"`,{stdio:"pipe",windowsHide:!0}),B.default.unlinkSync(o)),Xt||B.default.chmodSync(vt,"755"),vt}catch(t){try{B.default.existsSync(o)&&B.default.unlinkSync(o)}catch{}throw console.error("\u274C Failed to download cloudflared:",t.message),t}}function ti(e){return new Promise((n,r)=>{Sr.default.get(e,o=>{if([301,302].includes(o.statusCode))return ti(o.headers.location).then(n).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let t="";o.on("data",i=>t+=i),o.on("end",()=>n(t))}).on("error",r)})}async function ma(e,n){let r=$e.default.basename(e),o;try{o=await ti(`${Zo}/sha256sum.txt`)}catch(c){Q.warn(`\u26A0\uFE0F sha256 manifest unavailable (${c.message}), skipping verify`);return}let t=o.split(`
44
- `).find(c=>c.includes(r));if(!t){Q.warn(`\u26A0\uFE0F No sha256 entry for ${r}, skipping verify`);return}let i=t.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(B.default.readFileSync(n)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`);Q.info("\u2713 cloudflared SHA256 verified")}function ha(e){let n=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(n))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function ni(e,n=null,r=null){let o=await qt();r&&(Qt=r),Ln=e;let t=B.default.mkdtempSync($e.default.join(Ne.default.tmpdir(),"9remote-quick-")),i=$e.default.join(t,"config.yml");B.default.writeFileSync(i,`# quick-tunnel
45
- `,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{B.default.rmSync(t,{recursive:!0,force:!0})}catch{}}},c=(0,et.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Ie("cloudflared",c.pid),ze=!1,new Promise((l,u)=>{let f=!1,p=null,d="",h=setTimeout(()=>{f||(f=!0,a(),u(new Error("Quick tunnel timed out after 90s")))},9e4),v=E=>{let O=E.toString();d+=O,d.length>4096&&(d=d.slice(-4096));let R=ha(O);if(R){if(!f){f=!0,p=R,Jt=R,Mn=Date.now(),clearTimeout(h),a(),wa(),Q.info(`\u2705 tunnel ready: ${R}`),l({child:c,tunnelUrl:R});return}R!==p&&(Q.info(`\u{1F504} URL rotated: ${R}`),p=R,Jt=R,Mn=Date.now(),n?.(R))}};c.stdout.on("data",v),c.stderr.on("data",v),c.on("error",E=>{f||(f=!0,clearTimeout(h),a(),u(E))}),c.on("exit",(E,O)=>{if(a(),Q.info(`\u{1F4A5} cloudflared exit pid=${c.pid} code=${E} signal=${O} intentional=${ze}`),ze||Kt("unreachable"),!f){f=!0,clearTimeout(h);let R=d.trim().split(`
46
- `).slice(-5).join(" | ");u(new Error(`cloudflared exited (code=${E}, signal=${O}) output: ${R||"(empty)"}`)),ze||$n(e,`initial spawn failed (code ${E})`);return}ze||$n(e,`quick tunnel exit code ${E}`)})})}function vr(e){if(Xt)try{(0,et.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function ga(e){try{let n=[];if(Xt){let r=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;n=(0,et.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(t=>+t.trim()).filter(Boolean)}else n=(0,et.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
47
- `).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(n))vr(r),Q.info(`\u2705 killed orphan cloudflared pid=${r}`)}catch{}}function tt(){if(!gr){gr=!0;try{try{if(B.default.existsSync(yr)){let n=parseInt(B.default.readFileSync(yr,"utf8"));Number.isFinite(n)&&(ze=!0,vr(n)),B.default.unlinkSync(yr)}}catch{}let e=wn("cloudflared");ze=!0,e&&(vr(e),Q.info("\u2705 Cloudflared killed"),Pe("cloudflared")),ga(I)}finally{setTimeout(()=>{gr=!1},2e3)}}}function ri(){Gt=0,St=!1,Qt=null,Ln=null,Jt=null,va()}var ya=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function Xo(){let e=Ne.default.networkInterfaces(),n=[];for(let[r,o]of Object.entries(e))if(o&&!ya.test(r))for(let t of o)!t.internal&&t.family==="IPv4"&&n.push(`${r}:${t.address}`);return n.sort().join("|")}function wa(){Vt||(Cn=Xo(),Vt=setInterval(async()=>{if(wr||St||!Qt||Ln==null)return;let e=Xo(),n=e!==Cn;Cn=e;let r=wn("cloudflared"),o=!r||!fo(r);if(!(!n&&!o)){if(n&&!o&&Mn&&Date.now()-Mn<sa){Q.info("\u23F8 Network change in cooldown, skip");return}if(n&&Q.info("\u{1F504} Network change detected"),o&&Q.info("\u{1F50D} Liveness watchdog: cloudflared not alive"),Kt("unreachable"),await new Promise(t=>setTimeout(t,Yt.networkRestoreDelayMs)),!!await zo()){if(n&&!o&&Jt){let t=!1;for(let i=0;i<2;i++){if((await Pn(Jt)).ok){t=!0;break}i===0&&await new Promise(a=>setTimeout(a,2e3))}if(t){Q.info("\u2705 Tunnel survived network change, skip restart");return}}n&&!o&&tt(),$n(Ln,n?"network change":"liveness watchdog")}}},Yt.networkCheckIntervalMs))}function va(){Vt&&(clearInterval(Vt),Vt=null),Cn=null}Tt();var be=V("server"),mi=nn.default.dirname((0,di.fileURLToPath)(__importMetaUrl)),ba=nn.default.resolve(mi,"./server.cjs"),fi=nn.default.resolve(mi,"../../index.js");function Un(e){try{process.platform==="win32"?(0,tn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,tn.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function Be(e,n,r){let o=null,t=!1,i=!0,s=0,a=null,c=()=>{i&&(Un(I),i=!1);let l=process.env.NODE_ENV==="development"&&Rr.default.existsSync(fi),u=l?fi:ba;Rr.default.existsSync(u)||(be.error(`\u274C Server not found: ${u}`),process.exit(1));let f={...process.env,PORT:String(I)};l||delete f.NODE_ENV,o=(0,tn.spawn)("node",[u],{cwd:nn.default.dirname(u),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:f}),a&&clearTimeout(a),a=setTimeout(()=>{s=0},Bo),o.on("exit",(p,d)=>{if(a&&(clearTimeout(a),a=null),t)return;be.error(`\u{1F4A5} Server exited unexpectedly (code: ${p}, signal: ${d})`),s++;let h=ue(re.server,s);be.warn(`\u{1F504} Restarting server in ${h}ms (fail#${s})`),n&&(be.info("\u2705 Restarting tunnel connection..."),n()),setTimeout(()=>{c(),r?.()},h)}),o.on("error",p=>{be.error(`\u274C Server error: ${p.message}`)}),e?.(o)};return c(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}}}}function nt({serverManager:e,tunnelProcess:n,exit:r=!0,code:o=0}={}){try{jt()}catch{}try{e?.shutdown?.()}catch{}try{n?.kill?.()}catch{}try{tt()}catch{}try{Dn()}catch{}try{Un(I)}catch{}try{ri()}catch{}try{wo()}catch{}try{Pe("agent")}catch{}try{Pe("cloudflared")}catch{}r&&setTimeout(()=>process.exit(o),Fo)}var pi=!1;function Fe(e,n){if(pi)return;pi=!0;let r=!1,o=t=>{r||(r=!0,be.info(`\u{1F6D1} Stopping 9Remote (${t})...`),nt({serverManager:e,tunnelProcess:n}),be.info("\u2705 Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:t})=>{t({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",t=>{be.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),pr)}),process.on("unhandledRejection",t=>{be.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),pr)})}Tt();var gi=A(hi(),1),br=A(require("crypto"),1),{machineIdSync:Aa}=gi.default;async function Et(e=null){let n=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=Aa();return br.default.createHash("sha256").update(r+n).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),br.default.randomUUID().replace(/-/g,"").substring(0,16)}}var yi=A(require("crypto"),1),_a=process.env.API_KEY_SECRET||"9remote-api-key-secret";function ka(){let e="abcdefghijklmnopqrstuvwxyz0123456789",n="";for(let r=0;r<4;r++)n+=e.charAt(Math.floor(Math.random()*e.length));return n}function Oa(e,n){return yi.default.createHmac("sha256",_a).update(e+n).digest("hex").slice(0,6)}function Rt(e){let n=e.slice(0,8),r=ka(),o=Oa(n,r);return{key:`sk-${n}-${r}-${o}`,keyId:r}}function Bn(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var Ar=V("tunnel");async function rt(e,n,r){let o=0;for(;;){o++;try{return await ni(e,n,r)}catch(t){let i=ue(re.tunnelSpawn,o);Ar.warn(`\u26A0\uFE0F spawn attempt ${o} failed: ${t?.message||t} \u2014 retry in ${i}ms`),await new Promise(s=>setTimeout(s,i))}}}function xt({onUrlUpdate:e,setTunnel:n}){return async r=>{try{let o=await rt(r,e);n(o.child),await e(o.tunnelUrl),Ar.info(`\u2705 Tunnel restarted: ${o.tunnelUrl}`)}catch(o){Ar.error(`\u274C Tunnel restart failed: ${o?.message||o}`)}}}async function He(e,n={}){let r=n.intervalMs??Le.intervalMs,o=n.timeoutMs??Le.timeoutMs,t=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await U({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=u=>{c.push(u);let f=c.length>Le.maxLogEntries?c.slice(-Le.maxLogEntries):c;U({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,gt(),i){let f=await fr(i,Le.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;ht(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(h=>setTimeout(h,r));continue}}let u=Date.now();try{let f=await Y(t,{signal:AbortSignal.timeout(Le.fetchTimeoutMs)}),p=Date.now()-u;if(ht(`#${a} \u2192 ${f.status}`),l({attempt:a,status:String(f.status),elapsedMs:p,ok:f.ok,time:Date.now()}),f.ok)return await U({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,Le.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",v=h?"connecting...":d;ht(`#${a} \u2192 ${v}`),l({attempt:a,status:v,elapsedMs:p,ok:!1,waiting:h,time:Date.now()})}await new Promise(f=>setTimeout(f,r))}return await U({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var sn=V("tunnel"),_r=null,wi=null,vi=0;async function Ae(e,n){if(n&&n===wi&&Date.now()-vi<Ho){sn.info(`\u23ED urlSync debounced (same URL): ${n}`);return}_r&&(_r.cancelled=!0);let r={cancelled:!1};_r=r;let o=$o();So({config:re.urlSync,label:`urlSync ${n}`,log:t=>sn.warn(t),ctx:r,task:async()=>{let t=await Y(`${N}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,tunnelUrl:n,localIp:o?`${o}:${I}`:null})});if(r.cancelled)return!0;if(t.ok)return wi=n,vi=Date.now(),sn.info("\u2705 urlSync ok"),Ia(n),!0;let i=await t.text().catch(()=>"");return sn.warn(`\u26A0\uFE0F urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),n&&Yo(n)}var on=null;async function Ia(e){if(on?.url===e)return;let n={url:e};on=n,Vo();try{let r=await He(e,{timeoutMs:jo});if(on!==n)return;r&&(Kt("healthy"),sn.info("\u2705 fast probe healthy"))}catch{}finally{on===n&&(on=null),Qo()}}var Lr=A(ji(),1);var Ba=30;async function bt(e,n){try{let r=await Y(`${n}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,expiryMinutes:Ba})});if(!r.ok){let o=await r.json();throw new Error(o.error||"Failed to create temp key")}return await r.json()}catch(r){return console.error("Error creating temp key:",r),null}}function Fa(e,n="\u{1F4F1} Scan QR to connect:"){console.log(ie.orange(`
48
- ${n}`)),Lr.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{console.log(r.trim())})}function Ha(e){return new Promise(n=>{Lr.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{n(ie.orangeDim("\u{1F4F1} Scan QR to connect:")+`
49
- `+r.trim())})})}async function jn(e,n){let r=await bt(e,N);if(!r){console.log(m.red("\u274C Failed to create temp key"));return}let o=`${N}/login?k=${r.tempKey}`,t=Math.min(xe.headerWidth,process.stdout.columns||55);await K(C.READY,{tunnelUrl:n,oneTimeKey:r.tempKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:o,workerUrl:N}),Fa(o),console.log(m.gray(`
134
+ ${E.red}\u2717 Device rejected${E.reset}
135
+ `;process.stdout.write(T),setTimeout(()=>{try{a()}catch{}r(v)},500)};process.stdin.on("keypress",c)})}function pi(e,n){let r=null,o=!1,t=null,i=45e3,s=()=>{t&&clearTimeout(t),t=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=()=>{o||(r=ni.default.get(`http://localhost:${e}/api/ui/events`,c=>{let l="";s(),c.on("data",u=>{s(),l+=u.toString();let f=l.split(`
136
+ `);l=f.pop();let p="";for(let d of f)if(d.startsWith("data: "))p=d.slice(6);else if(d===""&&p){try{let h=JSON.parse(p);n(h.type,h)}catch{}p=""}}),c.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,he(ae.sse,1))})}),r.on("error",()=>{t&&clearTimeout(t),o||setTimeout(a,he(ae.sse,1))}))};return a(),()=>{o=!0,t&&clearTimeout(t),r?.destroy()}}var Ir=!1;function mi(e){Ir=e}async function q(e,n){try{return await fetch(`http://localhost:${I}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}catch{return null}}async function G(e){try{let n=await fetch(`http://localhost:${I}${e}`);return n.ok?await n.json():null}catch{return null}}async function F(e){await q("/api/ui/state",e)}async function j(e,n={}){Ir&&li(e-1,e>C.PREPARING),await F({step:e,stepDesc:"",...n})}function Kn({phase:e,percent:n}){let r=e==="download"?`Downloading tunnel binary ${n??0}%`:"Extracting tunnel binary";Ir&&bt(r),F({stepDesc:r})}async function re(){return!!await G("/api/health")}async function Or(){let[e,n,r,o]=await Promise.all([G("/api/ui/state"),G("/api/device/auto-approve"),G("/api/autostart"),G("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!n?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function hi(){let e=di.default.networkInterfaces();for(let n of Object.values(e))for(let r of n)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var mn=require("child_process"),hn=A(require("path"),1),Kr=A(require("fs"),1),Wi=require("url");var U=A(require("fs"),1),Ke=A(require("path"),1),Br=A(require("https"),1),Ge=A(require("os"),1),Ai=A(require("net"),1),ot=require("child_process");var gi=A(require("dns"),1),yi=require("child_process");var $a=2e3,La=5e3,wi=new gi.default.promises.Resolver;wi.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function At(){process.platform==="win32"&&(0,yi.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function Cr(e,n=$a){let r=Date.now();try{return{ok:!0,addrs:await Promise.race([wi.resolve4(e),new Promise((t,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),n))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function Gn(e,{flushDns:n=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(n&&At(),o){let t=await Cr(o);if(!t.ok)return At(),{ok:!1,dnsCode:t.code,elapsedMs:Date.now()-r}}try{let t=await K(`${e}/api/health`,{signal:AbortSignal.timeout(La)});return{ok:t.ok,httpStatus:t.status,elapsedMs:Date.now()-r}}catch(t){return{ok:!1,dnsCode:t.cause?.code||t.code||t.message,elapsedMs:Date.now()-r}}}var Ma=Y("tunnel"),zt=null,en=null,kt=null,nt=null,je=0,$r=!1;async function Lr(e){try{await fetch(`http://localhost:${I}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}async function vi(){if(!en||$r)return;let e=await Gn(en),n=e.ok?"healthy":"unreachable";if(n===kt){nt=null,je=0;return}if(n!==nt){nt=n,je=1;return}je++,!(je<Vo)&&(Ma.info(`\u{1FA7A} ${kt??"init"} \u2192 ${n}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),kt=n,nt=null,je=0,await Lr({tunnelHealth:{status:n,checkedAt:Date.now()}}))}function Si(e){if(!e)return nn();e!==en&&(en=e,kt=null,nt=null,je=0,At(),zt||(zt=setInterval(vi,ao.checkIntervalMs)),vi())}var Ei=Si,_t=Si;function Ti(){$r=!0}function Ri(){$r=!1}function tn(e){kt=e,nt=null,je=0,Lr({tunnelHealth:{status:e,checkedAt:Date.now()}})}function nn(){zt&&(clearInterval(zt),zt=null),en=null,kt=null,nt=null,je=0,Lr({tunnelHealth:{status:"unknown",checkedAt:null}})}var Q=Y("tunnel"),sn={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443},an=null,Wn=null,Vn=null,cn=null,It=!1,rn=0,Fr=!1,ln=null,Yn=0,Mr=0,Nr=!1,Na=3e4,Da=5e3,on=Ke.default.join(Ge.default.homedir(),".9remote","bin"),xi="cloudflared",un=Ge.default.platform()==="win32",Fa=un?`${xi}.exe`:xi,Pt=Ke.default.join(on,Fa),Dr=Ke.default.join(Ge.default.homedir(),".9remote","cloudflared.pid"),rt=!1,Ua="2026.6.1",ki=`https://github.com/cloudflare/cloudflared/releases/download/${Ua}`;function _i(){return new Promise(e=>{let n=new Ai.default.Socket,r=!1,o=t=>{if(!r){r=!0;try{n.destroy()}catch{}e(t)}};n.setTimeout(sn.internetCheckTimeoutMs),n.once("connect",()=>o(!0)),n.once("timeout",()=>o(!1)),n.once("error",()=>o(!1));try{n.connect(sn.internetCheckPort,sn.internetCheckHost)}catch{o(!1)}})}async function Ba(){Fr=!0;try{let e=0;for(;;){if(e++,await _i())return;await new Promise(n=>setTimeout(n,he(ae.internet,e)))}}finally{Fr=!1}}async function Jn(e,n){if(!cn){Q.warn("\u26A0\uFE0F No restartCallback registered \u2014 skip");return}if(It){Q.info(`\u23ED restart already in flight, skip (${n})`);return}if(Date.now()-Mr<Da){Q.info(`\u23ED restart debounced, skip (${n})`);return}Mr=Date.now(),It=!0;try{await Ba();let r=he(ae.tunnelRestart,rn+1);await new Promise(o=>setTimeout(o,r)),await cn(e),rn=0,Mr=0}catch(r){rn++,Q.error(`\u274C restart failed (#${rn}): ${r?.message||r}`),setImmediate(()=>{It=!1,Jn(e,"retry after fail")});return}finally{It=!1}}var Ha={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function ja(){let e=Ge.default.platform(),n=Ge.default.arch(),r=Ha[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[n];if(!o)throw new Error(`Unsupported architecture: ${n} for platform ${e}`);return`${ki}/${o}`}var Ka=150;async function Pi(e,n,r){return new Promise((o,t)=>{let i=U.default.createWriteStream(n);Br.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),U.default.unlinkSync(n),Pi(s.headers.location,n,r).then(o).catch(t);return}if(s.statusCode!==200){i.close(),U.default.unlinkSync(n),t(new Error(`Download failed with status ${s.statusCode}`));return}let a=parseInt(s.headers["content-length"]||"0",10),c=0,l=0,u=-1;s.on("data",f=>{if(c+=f.length,!r||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==u&&p-l>=Ka&&(l=p,u=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(n))}),i.on("error",f=>{i.close(),U.default.unlinkSync(n),t(f)})}).on("error",s=>{i.close(),U.default.existsSync(n)&&U.default.unlinkSync(n),t(s)})})}async function fn(e){if(U.default.existsSync(on)||U.default.mkdirSync(on,{recursive:!0}),U.default.existsSync(Pt))return un||U.default.chmodSync(Pt,"755"),Pt;let n=ja(),r=n.endsWith(".tgz"),o=r?Ke.default.join(on,"cloudflared.tgz"):Pt;try{return e?.({phase:"download",percent:0}),await Pi(n,o,t=>{e?.({phase:"download",percent:t})}),await Ga(n,o),r&&(e?.({phase:"extract"}),(0,ot.execSync)(`tar -xzf "${o}" -C "${on}"`,{stdio:"pipe",windowsHide:!0}),U.default.unlinkSync(o)),un||U.default.chmodSync(Pt,"755"),Pt}catch(t){try{U.default.existsSync(o)&&U.default.unlinkSync(o)}catch{}throw console.error("\u274C Failed to download cloudflared:",t.message),t}}function Ii(e){return new Promise((n,r)=>{Br.default.get(e,o=>{if([301,302].includes(o.statusCode))return Ii(o.headers.location).then(n).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let t="";o.on("data",i=>t+=i),o.on("end",()=>n(t))}).on("error",r)})}async function Ga(e,n){let r=Ke.default.basename(e),o;try{o=await Ii(`${ki}/sha256sum.txt`)}catch(c){Q.warn(`\u26A0\uFE0F sha256 manifest unavailable (${c.message}), skipping verify`);return}let t=o.split(`
137
+ `).find(c=>c.includes(r));if(!t){Q.warn(`\u26A0\uFE0F No sha256 entry for ${r}, skipping verify`);return}let i=t.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(U.default.readFileSync(n)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`);Q.info("\u2713 cloudflared SHA256 verified")}function Wa(e){let n=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(n))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function Oi(e,n=null,r=null){let o=await fn();r&&(cn=r),Vn=e;let t=U.default.mkdtempSync(Ke.default.join(Ge.default.tmpdir(),"9remote-quick-")),i=Ke.default.join(t,"config.yml");U.default.writeFileSync(i,`# quick-tunnel
138
+ `,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{U.default.rmSync(t,{recursive:!0,force:!0})}catch{}}},c=(0,ot.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Ue("cloudflared",c.pid),rt=!1,new Promise((l,u)=>{let f=!1,p=null,d="",h=setTimeout(()=>{f||(f=!0,a(),u(new Error("Quick tunnel timed out after 90s")))},9e4),v=T=>{let P=T.toString();d+=P,d.length>4096&&(d=d.slice(-4096));let R=Wa(P);if(R){if(!f){f=!0,p=R,ln=R,Yn=Date.now(),clearTimeout(h),a(),Ja(),Q.info(`\u2705 tunnel ready: ${R}`),l({child:c,tunnelUrl:R});return}R!==p&&(Q.info(`\u{1F504} URL rotated: ${R}`),p=R,ln=R,Yn=Date.now(),n?.(R))}};c.stdout.on("data",v),c.stderr.on("data",v),c.on("error",T=>{f||(f=!0,clearTimeout(h),a(),u(T))}),c.on("exit",(T,P)=>{if(a(),Q.info(`\u{1F4A5} cloudflared exit pid=${c.pid} code=${T} signal=${P} intentional=${rt}`),rt||tn("unreachable"),!f){f=!0,clearTimeout(h);let R=d.trim().split(`
139
+ `).slice(-5).join(" | ");u(new Error(`cloudflared exited (code=${T}, signal=${P}) output: ${R||"(empty)"}`)),rt||Jn(e,`initial spawn failed (code ${T})`);return}rt||Jn(e,`quick tunnel exit code ${T}`)})})}function Ur(e){if(un)try{(0,ot.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function Va(e){try{let n=[];if(un){let r=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;n=(0,ot.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(t=>+t.trim()).filter(Boolean)}else n=(0,ot.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
140
+ `).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(n))Ur(r),Q.info(`\u2705 killed orphan cloudflared pid=${r}`)}catch{}}function it(){if(!Nr){Nr=!0;try{try{if(U.default.existsSync(Dr)){let n=parseInt(U.default.readFileSync(Dr,"utf8"));Number.isFinite(n)&&(rt=!0,Ur(n)),U.default.unlinkSync(Dr)}}catch{}let e=Mn("cloudflared");rt=!0,e&&(Ur(e),Q.info("\u2705 Cloudflared killed"),Be("cloudflared")),Va(I)}finally{setTimeout(()=>{Nr=!1},2e3)}}}function Ci(){rn=0,It=!1,cn=null,Vn=null,ln=null,Qa()}var Ya=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function bi(){let e=Ge.default.networkInterfaces(),n=[];for(let[r,o]of Object.entries(e))if(o&&!Ya.test(r))for(let t of o)!t.internal&&t.family==="IPv4"&&n.push(`${r}:${t.address}`);return n.sort().join("|")}function Ja(){an||(Wn=bi(),an=setInterval(async()=>{if(Fr||It||!cn||Vn==null)return;let e=bi(),n=e!==Wn;Wn=e;let r=Mn("cloudflared"),o=!r||!Do(r);if(!(!n&&!o)){if(n&&!o&&Yn&&Date.now()-Yn<Na){Q.info("\u23F8 Network change in cooldown, skip");return}if(n&&Q.info("\u{1F504} Network change detected"),o&&Q.info("\u{1F50D} Liveness watchdog: cloudflared not alive"),tn("unreachable"),await new Promise(t=>setTimeout(t,sn.networkRestoreDelayMs)),!!await _i()){if(n&&!o&&ln){let t=!1;for(let i=0;i<2;i++){if((await Gn(ln)).ok){t=!0;break}i===0&&await new Promise(a=>setTimeout(a,2e3))}if(t){Q.info("\u2705 Tunnel survived network change, skip restart");return}}n&&!o&&it(),Jn(Vn,n?"network change":"liveness watchdog")}}},sn.networkCheckIntervalMs))}function Qa(){an&&(clearInterval(an),an=null),Wn=null}$t();var $e=Y("server"),Vi=hn.default.dirname((0,Wi.fileURLToPath)(__importMetaUrl)),tc=hn.default.resolve(Vi,"./server.cjs"),Ki=hn.default.resolve(Vi,"../../index.js");function Xn(e){try{process.platform==="win32"?(0,mn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,mn.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function We(e,n,r){let o=null,t=!1,i=!0,s=0,a=null,c=()=>{i&&(Xn(I),i=!1);let l=process.env.NODE_ENV==="development"&&Kr.default.existsSync(Ki),u=l?Ki:tc;Kr.default.existsSync(u)||($e.error(`\u274C Server not found: ${u}`),process.exit(1));let f={...process.env,PORT:String(I)};l||delete f.NODE_ENV,o=(0,mn.spawn)("node",[u],{cwd:hn.default.dirname(u),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:f}),a&&clearTimeout(a),a=setTimeout(()=>{s=0},Ko),o.on("exit",(p,d)=>{if(a&&(clearTimeout(a),a=null),t)return;$e.error(`\u{1F4A5} Server exited unexpectedly (code: ${p}, signal: ${d})`),s++;let h=he(ae.server,s);$e.warn(`\u{1F504} Restarting server in ${h}ms (fail#${s})`),n&&($e.info("\u2705 Restarting tunnel connection..."),n()),setTimeout(()=>{c(),r?.()},h)}),o.on("error",p=>{$e.error(`\u274C Server error: ${p.message}`)}),e?.(o)};return c(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}}}}function st({serverManager:e,tunnelProcess:n,exit:r=!0,code:o=0}={}){try{nn()}catch{}try{e?.shutdown?.()}catch{}try{n?.kill?.()}catch{}try{it()}catch{}try{pn()}catch{}try{Xn(I)}catch{}try{Ci()}catch{}try{mo()}catch{}try{Be("agent")}catch{}try{Be("cloudflared")}catch{}r&&setTimeout(()=>process.exit(o),Go)}var Gi=!1;function Ve(e,n){if(Gi)return;Gi=!0;let r=!1,o=t=>{r||(r=!0,$e.info(`\u{1F6D1} Stopping 9Remote (${t})...`),st({serverManager:e,tunnelProcess:n}),$e.info("\u2705 Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:t})=>{t({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",t=>{$e.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),xr)}),process.on("unhandledRejection",t=>{$e.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),xr)})}$t();var Gr=Y("tunnel");async function at(e,n,r){let o=0;for(;;){o++;try{return await Oi(e,n,r)}catch(t){let i=he(ae.tunnelSpawn,o);Gr.warn(`\u26A0\uFE0F spawn attempt ${o} failed: ${t?.message||t} \u2014 retry in ${i}ms`),await new Promise(s=>setTimeout(s,i))}}}function Lt({onUrlUpdate:e,setTunnel:n}){return async r=>{try{let o=await at(r,e);n(o.child),await e(o.tunnelUrl),Gr.info(`\u2705 Tunnel restarted: ${o.tunnelUrl}`)}catch(o){Gr.error(`\u274C Tunnel restart failed: ${o?.message||o}`)}}}async function Ye(e,n={}){let r=n.intervalMs??He.intervalMs,o=n.timeoutMs??He.timeoutMs,t=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await F({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=u=>{c.push(u);let f=c.length>He.maxLogEntries?c.slice(-He.maxLogEntries):c;F({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,At(),i){let f=await Cr(i,He.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;bt(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(h=>setTimeout(h,r));continue}}let u=Date.now();try{let f=await K(t,{signal:AbortSignal.timeout(He.fetchTimeoutMs)}),p=Date.now()-u;if(bt(`#${a} \u2192 ${f.status}`),l({attempt:a,status:String(f.status),elapsedMs:p,ok:f.ok,time:Date.now()}),f.ok)return await F({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,He.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",v=h?"connecting...":d;bt(`#${a} \u2192 ${v}`),l({attempt:a,status:v,elapsedMs:p,ok:!1,waiting:h,time:Date.now()})}await new Promise(f=>setTimeout(f,r))}return await F({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var yn=Y("tunnel"),Wr=null,Yi=null,Ji=0;async function Le(e,n){if(n&&n===Yi&&Date.now()-Ji<Wo){yn.info(`\u23ED urlSync debounced (same URL): ${n}`);return}Wr&&(Wr.cancelled=!0);let r={cancelled:!1};Wr=r;let o=hi();ei({config:ae.urlSync,label:`urlSync ${n}`,log:t=>yn.warn(t),ctx:r,task:async()=>{let t=await K(`${N}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,tunnelUrl:n,localIp:o?`${o}:${I}`:null})});if(r.cancelled)return!0;if(t.ok)return Yi=n,Ji=Date.now(),yn.info("\u2705 urlSync ok"),nc(n),!0;let i=await t.text().catch(()=>"");return yn.warn(`\u26A0\uFE0F urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),n&&Ei(n)}var gn=null;async function nc(e){if(gn?.url===e)return;let n={url:e};gn=n,Ti();try{let r=await Ye(e,{timeoutMs:Yo});if(gn!==n)return;r&&(tn("healthy"),yn.info("\u2705 fast probe healthy"))}catch{}finally{gn===n&&(gn=null),Ri()}}var Xr=A(ws(),1);var fc=30;async function Mt(e,n){try{let r=await K(`${n}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,expiryMinutes:fc})});if(!r.ok){let o=await r.json();throw new Error(o.error||"Failed to create temp key")}return await r.json()}catch(r){return console.error("Error creating temp key:",r),null}}function pc(e,n="\u{1F4F1} Scan QR to connect:"){console.log(le.orange(`
141
+ ${n}`)),Xr.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{console.log(r.trim())})}function dc(e){return new Promise(n=>{Xr.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{n(le.orangeDim("\u{1F4F1} Scan QR to connect:")+`
142
+ `+r.trim())})})}async function tr(e,n){let r=await Mt(e,N);if(!r){console.log(m.red("\u274C Failed to create temp key"));return}let o=`${N}/login?k=${r.tempKey}`,t=Math.min(Pe.headerWidth,process.stdout.columns||55);await j(C.READY,{tunnelUrl:n,oneTimeKey:r.tempKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:o,workerUrl:N}),pc(o),console.log(m.gray(`
50
143
  QR will expire in 30 minutes (one-time use)
51
- `)),console.log(ie.orange("\u2550".repeat(t))),console.log(m.white("App URL".padEnd(14))+m.gray(`${N}/login`)),console.log(m.white("One-Time Key".padEnd(14))+ie.orange.bold(r.tempKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(ie.orange("\u2550".repeat(t)))}async function an(e,n,r,o=""){let t=Math.min(xe.headerWidth,process.stdout.columns||xe.headerWidth),i=[];return e&&r?(i.push(await Ha(r)),i.push(m.gray(`
144
+ `)),console.log(le.orange("\u2550".repeat(t))),console.log(m.white("App URL".padEnd(14))+m.gray(`${N}/login`)),console.log(m.white("One-Time Key".padEnd(14))+le.orange.bold(r.tempKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(le.orange("\u2550".repeat(t)))}async function wn(e,n,r,o=""){let t=Math.min(Pe.headerWidth,process.stdout.columns||Pe.headerWidth),i=[];return e&&r?(i.push(await dc(r)),i.push(m.gray(`
52
145
  QR expires in 30 minutes (one-time use)
53
146
  `))):i.push(m.gray(`
54
147
  (One-time key used \u2014 generate a new one from menu)
55
- `)),i.push(ie.orange("\u2550".repeat(t)),m.white("App URL".padEnd(14))+m.gray(`${N}/login`)),Kr.showTunnelUrlInMenu&&i.push(m.white("Tunnel".padEnd(14))+(o?m.cyan(o):m.gray("\u2014"))),i.push(m.white("One-Time Key".padEnd(14))+(e?ie.orange.bold(e)+m.dim(" (expires in 30m)"):m.gray("\u2014")),m.white("Key".padEnd(14))+m.dim(n),ie.orange("\u2550".repeat(t))),i.join(`
56
- `)}var it=V("cmd");function Ge(e,n,r){let o=!1;setInterval(async()=>{if(o)return;let t=vo();if(t){o=!0;try{if(t==="stop-tunnel")await Gi(e,n);else if(t==="restart-tunnel")await Gi(e,n),await Wi(e,n,r);else if(t==="start-tunnel"){if(await Wi(e,n,r)==="alreadyRunning"){o=!1;return}}else t==="regenerate-key"?await Ka():t==="shutdown"&&ja(e,n)}finally{o=!1}}},fe.cmdMs)}async function Gi(e,n){jt();let r=e();r&&(r.kill(),n(null),it.info("\u{1F6D1} Tunnel stopped")),await K(C.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),Nn({tunnelUrl:"",running:!0})}async function Wi(e,n,r){let o=e();if(o)if(o.killed||o.exitCode!=null)n(null);else{let t=await j("/api/ui/state");return await K(C.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}it.info("\u{1F680} Starting tunnel...");try{await K(C.PREPARING),await qt(In),await K(C.CONNECTING);let t=await Y(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await K(C.TUNNELING);let i=async c=>{await Ae(r,c),await U({tunnelUrl:c}),wt(c)},s=await rt(I,i,xt({onUrlUpdate:i,setTunnel:c=>n(c)}));n(s.child),await K(C.VERIFYING),await He(s.tunnelUrl)||it.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Ae(r,s.tunnelUrl),Nn({tunnelUrl:s.tunnelUrl,running:!0}),await new Promise(c=>setTimeout(c,z.postReadyHoldMs)),await jn(r,s.tunnelUrl)}catch(t){it.error(`\u274C Failed to start tunnel: ${t.message}`),await K(C.STOPPED)}}async function Ka(){let e=await Et(),{key:n}=Rt(e),r=bn();Xe(e,n,r?.name||"Default"),await U({permanentKey:n}),it.info(`\u2705 Key regenerated: ${Bn(n)}`)}function ja(e,n){it.info("\u{1F6D1} Shutting down 9Remote completely...");let r=e();n(null),nt({tunnelProcess:r}),it.info("\u2705 9Remote stopped")}var Mr=A(require("path"),1),Vi=A(require("fs"),1),Qi=require("url");function Yi(){return process.env.CODESPACES==="true"}var Ga=Mr.default.dirname((0,Qi.fileURLToPath)(__importMetaUrl));async function We(){let e=await Et();if(Yi()&&process.env.NREMOTE_API_KEY)return Xe(e,process.env.NREMOTE_API_KEY,"Codespace");let n=bn();if(!n.key){let{key:r}=Rt(e);n=Xe(e,r,"Default")}return n}function Ye(){return"2.0.31"}async function Ji(){Ie("agent",process.pid),mt(Ye());let e=await We(),n=process.argv.find(a=>a.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await Z(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Be(null,null);o||await new Promise(a=>setTimeout(a,z.serverBootMs));let i=`http://localhost:${I}`;console.log(m.green(`
57
- \u{1F310} UI ready at ${i}`));let s=null;await U({permanentKey:e.key,step:C.STOPPED,theme:r}),Fe(t,null),Ge(()=>s,a=>{s=a},e.key),process.argv.includes("--start")&&pt("start-tunnel"),await new Promise(()=>{})}Tt();async function Xi(){Ie("agent",process.pid);let e=await We(),n=process.argv.find(l=>l.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await Z(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Be(null,null);o||await new Promise(l=>setTimeout(l,z.serverBootMs));let i=`http://localhost:${I}`,s=null;await U({permanentKey:e.key,step:C.STOPPED,theme:r});let a=()=>{let l=s;s=null,nt({serverManager:t,tunnelProcess:l,exit:!1})};Fe(t,null),Ge(()=>s,l=>{s=l},e.key);try{Pe("cloudflared")}catch{}process.argv.includes("--start")&&pt("start-tunnel"),await Tr({port:I,onQuit:a,onOpenUI:()=>en(i)})&&Er({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var Ve=V("mode");async function Wa(e){Ve.info("\u{1F680} Starting server..."),await K(C.PREPARING);try{tt(),await new Promise(s=>setTimeout(s,z.killCloudflaredMs))}catch{}try{let s=await Y(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e})});if(!s.ok)return Ve.error(`\u274C Session create failed: ${s.status}`),null}catch(s){return Ve.error(`\u274C Session create failed: ${s.message}`),null}let n=await Z(),r=n?{getProcess:()=>null,shutdown:()=>{}}:Be(null,null);n||await new Promise(s=>setTimeout(s,z.serverBootMs)),Ve.info("\u2705 Starting tunnel..."),await K(C.CONNECTING);let o={current:null},t,i=async s=>{Ve.info(`\u{1F504} Tunnel URL rotated: ${s}`),await Ae(e,s),U({tunnelUrl:s}),wt(s)};try{let s=await rt(I,i,xt({onUrlUpdate:i,setTunnel:a=>{o.current=a}}));o.current=s.child,t=s.tunnelUrl}catch(s){return Ve.error(`\u274C Failed to start tunnel: ${s.message}`),r.shutdown(),null}return await He(t)||Ve.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Ae(e,t),xn({apiKey:e,tunnelUrl:t,serverPid:r.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:r,tunnelRef:o,tunnelUrl:t}}async function qi(){mt(Ye());let e=await We();Ve.info(`Using key: ${Bn(e.key)} (${e.name})`);let n=await Wa(e.key);n||process.exit(1);let{serverManager:r,tunnelRef:o,tunnelUrl:t}=n;await jn(e.key,t),Fe(r,o.current),Ge(()=>o.current,s=>{o.current=s},e.key);let i=Date.now();setInterval(()=>{let s=Math.floor((Date.now()-i)/1e3),a=Math.floor(s/3600),c=Math.floor(s%3600/60),l=s%60;U({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},fe.statsMs),await new Promise(()=>{})}var Zi=require("child_process"),$r=A(require("path"),1),zi=A(require("fs"),1),es=require("url");Tt();var mf=$r.default.dirname((0,es.fileURLToPath)(__importMetaUrl));async function ts(){let e=`http://localhost:${I}`;await Z()&&(Un(I),await new Promise(l=>setTimeout(l,500)));let r=[process.argv[1],"--tray"],o=process.argv.find(l=>l.startsWith("--theme="));o&&r.push(o);let t=$t;try{zi.default.mkdirSync($r.default.dirname(t),{recursive:!0})}catch{}let i=null;try{let l=(0,Zi.spawn)(process.execPath,r,{detached:!0,windowsHide:!0,stdio:"ignore",env:{...process.env}});l.unref(),i=l.pid,l.pid&&Ie("agent",l.pid)}catch(l){console.log(m.red(`
58
- \u274C Failed to launch background: ${l.message}`)),process.exit(1)}let s=Date.now()+fe.bgServerReadyTimeoutMs,a=!1;for(;Date.now()<s;){if(await Z()){a=!0;break}await new Promise(l=>setTimeout(l,fe.bgServerReadyIntervalMs))}a||(console.log(m.red(`
59
- \u274C Background server failed to start.`)),console.log(m.gray(` Check log: ${t}
60
- `)),process.exit(1)),pt("start-tunnel"),en(e);let c=i?` (PID: ${i})`:"";console.log(m.green(`
61
- \u{1F310} 9Remote running at ${e}${c}`)),console.log(m.gray(`\u{1F4A1} Log: ${t}
62
- `)),await new Promise(l=>setTimeout(l,z.bgSpawnFlushMs)),process.exit(0)}var ns=A(require("readline"),1);var Nr=V("mode"),At=null;async function rs(){console.clear(),Io(),Mo(!0),await K(C.PREPARING);let e=await We(),n=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await Z()){r=Be(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{ns.default.emitKeypressEvents(process.stdin)}catch{}n?.()});let S=Date.now()+fe.serverReadyTimeoutMs;for(;Date.now()<S&&!await Z();)await new Promise(g=>setTimeout(g,fe.serverReadyIntervalMs))}try{tt(),await new Promise(S=>setTimeout(S,z.killCloudflaredTuiMs))}catch{}await qt(In),await K(C.CONNECTING);try{let S=await Y(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e.key})});if(!S.ok)throw new Error(`Session create failed: ${S.status}`)}catch(S){Nr.error(`\u274C Failed to connect: ${S.message}`),process.exit(1)}await K(C.TUNNELING);let t,i,s={current:null},a=async S=>{await Ae(e.key,S),await U({tunnelUrl:S}),wt(S)};try{let S=await rt(I,a,xt({onUrlUpdate:a,setTunnel:g=>{s.current=g}}));t=S.child,i=S.tunnelUrl,s.current=t}catch(S){Nr.error(`\u274C Tunnel failed: ${S.message}`),process.exit(1)}await K(C.VERIFYING),await He(i)||Nr.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Ae(e.key,i),xn({apiKey:e.key,tunnelUrl:i,tunnelPid:t.pid});let c=await bt(e.key,N),l=c?`${N}/login?k=${c.tempKey}`:`${N}/login`;await K(C.READY,{tunnelUrl:i,oneTimeKey:c?.tempKey||"",oneTimeKeyExpiresAt:c?.expiresAt||null,permanentKey:e.key,qrUrl:l,workerUrl:N}),await new Promise(S=>setTimeout(S,z.trayReadyMs));let u=c?.tempKey||"",f=l,p=i,d=await an(u,e.key,f,p),h=[],v=!1,E=()=>{v||n?.()},O=async(S,g,k)=>{if(!v){v=!0;try{let P=await Po(g,k);await J(`/api/device/${P?"approve":"reject"}`,{socketId:S})}catch{}finally{v=!1,n?.()}}},R=Co(I,async(S,g)=>{if(S==="log"&&g.message)h.push(g.message),h.length>xe.maxLogLines&&h.shift();else if(S==="state"){let k=g.permanentKey||e.key,P=g.oneTimeKey!==void 0?g.oneTimeKey:u,D=g.qrUrl!==void 0?g.qrUrl:f,H=g.tunnelUrl!==void 0?g.tunnelUrl:p;(P!==u||k!==e.key||H!==p)&&(u=P,f=D,p=H,g.permanentKey&&(e={...e,key:g.permanentKey}),d=await an(u,e.key,f,p),E())}else S==="permissions"||S==="autostart"||S==="sleepInhibit"?(v||At?.(),E()):S==="deviceApproval"&&g.action==="pending"&&await O(g.socketId,g.deviceId,g.ip)}),b=setInterval(async()=>{if(v)return;let g=(await j("/api/device/pending"))?.pending?.[0];g&&await O(g.socketId,g.deviceId,g.ip)},fe.pendingApprovalMs);Fe({getProcess:r.getProcess,shutdown:()=>{r.shutdown(),R(),clearInterval(b)}},t),Ge(()=>s.current,S=>{s.current=S},e.key),await Ya(e,i,()=>d,S=>{d=S},S=>{n=S},()=>{try{R()}catch{}try{clearInterval(b)}catch{}nt({serverManager:r,tunnelProcess:t,exit:!1})},h)}async function Ya(e,n,r,o,t,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await ur(),u=[{label:"Open Web UI",action:"webui"},{label:"Keys \u25B6",action:"keys"}];c&&u.push({label:`Remote Desktop: ${a?m.green("ON"):m.gray("OFF")} \u25B6`,action:"desktop"}),u.push({label:`Manage Devices \u25B6 ${m.dim("(Auto-approve:")} ${l?m.green("ON"):m.gray("OFF")}${m.dim(")")}`,action:"devices"},{label:"Settings \u25B6",action:"settings"},{label:"View Logs",action:"logs"},{label:m.gray("Exit"),action:"exit"});let f=null;t(()=>f?.());let p=await we("",u,0,r,h=>{f=h},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let h=`http://localhost:${I}`,{openBrowser:v}=await Promise.resolve().then(()=>(Tt(),ui));v(h),console.log(m.green(`
148
+ `)),i.push(le.orange("\u2550".repeat(t)),m.white("App URL".padEnd(14))+m.gray(`${N}/login`)),io.showTunnelUrlInMenu&&i.push(m.white("Tunnel".padEnd(14))+(o?m.cyan(o):m.gray("\u2014"))),i.push(m.white("One-Time Key".padEnd(14))+(e?le.orange.bold(e)+m.dim(" (expires in 30m)"):m.gray("\u2014")),m.white("Key".padEnd(14))+m.dim(n),le.orange("\u2550".repeat(t))),i.join(`
149
+ `)}var lt=Y("cmd");function qe(e,n,r){let o=!1;setInterval(async()=>{if(o)return;let t=ho();if(t){o=!0;try{if(t==="stop-tunnel")await vs(e,n);else if(t==="restart-tunnel")await vs(e,n),await Ss(e,n,r);else if(t==="start-tunnel"){if(await Ss(e,n,r)==="alreadyRunning"){o=!1;return}}else t==="regenerate-key"?await mc():t==="shutdown"?hc(e,n):t==="update"&&await zo()}finally{o=!1}}},me.cmdMs)}async function vs(e,n){nn();let r=e();r&&(r.kill(),n(null),lt.info("\u{1F6D1} Tunnel stopped")),await j(C.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),qn({tunnelUrl:"",running:!0})}async function Ss(e,n,r){let o=e();if(o)if(o.killed||o.exitCode!=null)n(null);else{let t=await G("/api/ui/state");return await j(C.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}lt.info("\u{1F680} Starting tunnel...");try{await j(C.PREPARING),await fn(Kn),await j(C.CONNECTING);let t=await K(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await j(C.TUNNELING);let i=async c=>{await Le(r,c),await F({tunnelUrl:c}),_t(c)},s=await at(I,i,Lt({onUrlUpdate:i,setTunnel:c=>n(c)}));n(s.child),await j(C.VERIFYING),await Ye(s.tunnelUrl)||lt.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Le(r,s.tunnelUrl),qn({tunnelUrl:s.tunnelUrl,running:!0}),await new Promise(c=>setTimeout(c,ne.postReadyHoldMs)),await tr(r,s.tunnelUrl)}catch(t){lt.error(`\u274C Failed to start tunnel: ${t.message}`),await j(C.STOPPED)}}async function mc(){let e=await dt(),{key:n}=mt(e),r=_n();et(e,n,r?.name||"Default"),await F({permanentKey:n}),lt.info(`\u2705 Key regenerated: ${xn(n)}`)}function hc(e,n){lt.info("\u{1F6D1} Shutting down 9Remote completely...");let r=e();n(null),st({tunnelProcess:r}),lt.info("\u2705 9Remote stopped")}async function Es(){Ue("agent",process.pid),xt(we());let e=await Fe(),n=process.argv.find(a=>a.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await re(),t=o?{getProcess:()=>null,shutdown:()=>{}}:We(null,null);o||await new Promise(a=>setTimeout(a,ne.serverBootMs));let i=`http://localhost:${I}`;console.log(m.green(`
150
+ \u{1F310} UI ready at ${i}`));let s=null;await F({permanentKey:e.key,step:C.STOPPED,theme:r}),Ve(t,null),qe(()=>s,a=>{s=a},e.key),process.argv.includes("--start")&&ht("start-tunnel"),await new Promise(()=>{})}$t();async function Ts(){Ue("agent",process.pid);let e=await Fe(),n=process.argv.find(l=>l.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await re(),t=o?{getProcess:()=>null,shutdown:()=>{}}:We(null,null);o||await new Promise(l=>setTimeout(l,ne.serverBootMs));let i=`http://localhost:${I}`,s=null;await F({permanentKey:e.key,step:C.STOPPED,theme:r});let a=()=>{let l=s;s=null,st({serverManager:t,tunnelProcess:l,exit:!1})};Ve(t,null),qe(()=>s,l=>{s=l},e.key);try{Be("cloudflared")}catch{}process.argv.includes("--start")&&ht("start-tunnel"),await Hr({port:I,onQuit:a,onOpenUI:()=>dn(i)})&&jr({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var Xe=Y("mode");async function gc(e){Xe.info("\u{1F680} Starting server..."),await j(C.PREPARING);try{it(),await new Promise(s=>setTimeout(s,ne.killCloudflaredMs))}catch{}try{let s=await K(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e})});if(!s.ok)return Xe.error(`\u274C Session create failed: ${s.status}`),null}catch(s){return Xe.error(`\u274C Session create failed: ${s.message}`),null}let n=await re(),r=n?{getProcess:()=>null,shutdown:()=>{}}:We(null,null);n||await new Promise(s=>setTimeout(s,ne.serverBootMs)),Xe.info("\u2705 Starting tunnel..."),await j(C.CONNECTING);let o={current:null},t,i=async s=>{Xe.info(`\u{1F504} Tunnel URL rotated: ${s}`),await Le(e,s),F({tunnelUrl:s}),_t(s)};try{let s=await at(I,i,Lt({onUrlUpdate:i,setTunnel:a=>{o.current=a}}));o.current=s.child,t=s.tunnelUrl}catch(s){return Xe.error(`\u274C Failed to start tunnel: ${s.message}`),r.shutdown(),null}return await Ye(t)||Xe.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Le(e,t),kn({apiKey:e,tunnelUrl:t,serverPid:r.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:r,tunnelRef:o,tunnelUrl:t}}async function Rs(){xt(we());let e=await Fe();Xe.info(`Using key: ${xn(e.key)} (${e.name})`);let n=await gc(e.key);n||process.exit(1);let{serverManager:r,tunnelRef:o,tunnelUrl:t}=n;await tr(e.key,t),Ve(r,o.current),qe(()=>o.current,s=>{o.current=s},e.key);let i=Date.now();setInterval(()=>{let s=Math.floor((Date.now()-i)/1e3),a=Math.floor(s/3600),c=Math.floor(s%3600/60),l=s%60;F({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},me.statsMs),await new Promise(()=>{})}var xs=A(require("path"),1),bs=A(require("fs"),1);$t();async function As(){let e=`http://localhost:${I}`;await re()&&(Xn(I),await new Promise(c=>setTimeout(c,500)));let n=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&n.push(r);let o=Yt;try{bs.default.mkdirSync(xs.default.dirname(o),{recursive:!0})}catch{}let t=null;try{t=jo(n),t&&Ue("agent",t)}catch(c){console.log(m.red(`
151
+ \u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+me.bgServerReadyTimeoutMs,s=!1;for(;Date.now()<i;){if(await re()){s=!0;break}await new Promise(c=>setTimeout(c,me.bgServerReadyIntervalMs))}s||(console.log(m.red(`
152
+ \u274C Background server failed to start.`)),console.log(m.gray(` Check log: ${o}
153
+ `)),process.exit(1)),ht("start-tunnel"),dn(e);let a=t?` (PID: ${t})`:"";console.log(m.green(`
154
+ \u{1F310} 9Remote running at ${e}${a}`)),console.log(m.gray(`\u{1F4A1} Log: ${o}
155
+ `)),await new Promise(c=>setTimeout(c,ne.bgSpawnFlushMs)),process.exit(0)}var ks=A(require("readline"),1);var Zr=Y("mode"),Nt=null;async function _s(){console.clear(),ui(),mi(!0),await j(C.PREPARING);let e=await Fe(),n=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await re()){r=We(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{ks.default.emitKeypressEvents(process.stdin)}catch{}n?.()});let S=Date.now()+me.serverReadyTimeoutMs;for(;Date.now()<S&&!await re();)await new Promise(g=>setTimeout(g,me.serverReadyIntervalMs))}try{it(),await new Promise(S=>setTimeout(S,ne.killCloudflaredTuiMs))}catch{}await fn(Kn),await j(C.CONNECTING);try{let S=await K(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e.key})});if(!S.ok)throw new Error(`Session create failed: ${S.status}`)}catch(S){Zr.error(`\u274C Failed to connect: ${S.message}`),process.exit(1)}await j(C.TUNNELING);let t,i,s={current:null},a=async S=>{await Le(e.key,S),await F({tunnelUrl:S}),_t(S)};try{let S=await at(I,a,Lt({onUrlUpdate:a,setTunnel:g=>{s.current=g}}));t=S.child,i=S.tunnelUrl,s.current=t}catch(S){Zr.error(`\u274C Tunnel failed: ${S.message}`),process.exit(1)}await j(C.VERIFYING),await Ye(i)||Zr.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Le(e.key,i),kn({apiKey:e.key,tunnelUrl:i,tunnelPid:t.pid});let c=await Mt(e.key,N),l=c?`${N}/login?k=${c.tempKey}`:`${N}/login`;await j(C.READY,{tunnelUrl:i,oneTimeKey:c?.tempKey||"",oneTimeKeyExpiresAt:c?.expiresAt||null,permanentKey:e.key,qrUrl:l,workerUrl:N}),await new Promise(S=>setTimeout(S,ne.trayReadyMs));let u=c?.tempKey||"",f=l,p=i,d=await wn(u,e.key,f,p),h=[],v=!1,T=()=>{v||n?.()},P=async(S,g,_)=>{if(!v){v=!0;try{let O=await fi(g,_);await q(`/api/device/${O?"approve":"reject"}`,{socketId:S})}catch{}finally{v=!1,n?.()}}},R=pi(I,async(S,g)=>{if(S==="log"&&g.message)h.push(g.message),h.length>Pe.maxLogLines&&h.shift();else if(S==="state"){let _=g.permanentKey||e.key,O=g.oneTimeKey!==void 0?g.oneTimeKey:u,D=g.qrUrl!==void 0?g.qrUrl:f,H=g.tunnelUrl!==void 0?g.tunnelUrl:p;(O!==u||_!==e.key||H!==p)&&(u=O,f=D,p=H,g.permanentKey&&(e={...e,key:g.permanentKey}),d=await wn(u,e.key,f,p),T())}else S==="permissions"||S==="autostart"||S==="sleepInhibit"?(v||Nt?.(),T()):S==="deviceApproval"&&g.action==="pending"&&await P(g.socketId,g.deviceId,g.ip)}),b=setInterval(async()=>{if(v)return;let g=(await G("/api/device/pending"))?.pending?.[0];g&&await P(g.socketId,g.deviceId,g.ip)},me.pendingApprovalMs);Ve({getProcess:r.getProcess,shutdown:()=>{r.shutdown(),R(),clearInterval(b)}},t),qe(()=>s.current,S=>{s.current=S},e.key),await yc(e,i,()=>d,S=>{d=S},S=>{n=S},()=>{try{R()}catch{}try{clearInterval(b)}catch{}st({serverManager:r,tunnelProcess:t,exit:!1})},h)}async function yc(e,n,r,o,t,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await Or(),u=[{label:"Open Web UI",action:"webui"},{label:"Keys \u25B6",action:"keys"}];c&&u.push({label:`Remote Desktop: ${a?m.green("ON"):m.gray("OFF")} \u25B6`,action:"desktop"}),u.push({label:`Manage Devices \u25B6 ${m.dim("(Auto-approve:")} ${l?m.green("ON"):m.gray("OFF")}${m.dim(")")}`,action:"devices"},{label:"Settings \u25B6",action:"settings"},{label:"View Logs",action:"logs"},{label:m.gray("Exit"),action:"exit"});let f=null;t(()=>f?.());let p=await Ee("",u,0,r,h=>{f=h},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let h=`http://localhost:${I}`,{openBrowser:v}=await Promise.resolve().then(()=>($t(),ji));v(h),console.log(m.green(`
63
156
  \u{1F310} Opening ${h}
64
- `))}else if(d==="keys")await Va(e,n,o,r);else if(d==="desktop")await Xa();else if(d==="devices")await qa();else if(d==="settings")await Ja();else if(d==="logs")await Za();else{try{i?.()}catch{}console.log(m.gray(`
157
+ `))}else if(d==="keys")await wc(e,n,o,r);else if(d==="desktop")await Ec();else if(d==="devices")await Tc();else if(d==="settings")await Sc();else if(d==="logs")await Rc();else{try{i?.()}catch{}console.log(m.gray(`
65
158
  Goodbye!
66
- `)),process.exit(0)}}}async function Va(e,n,r,o){let t=[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:m.gray("\u2190 Back"),action:"back"}],i=await we("Keys",t,0,o),s=i>=0?t[i].action:"back";if(s==="otk"){let a=await bt(e.key,N);if(a){let c=`${N}/login?k=${a.tempKey}`;r(await an(a.tempKey,e.key,c,n)),await U({oneTimeKey:a.tempKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await cr(m.yellow("\u26A0\uFE0F Replace current key and disconnect all sessions? Continue?"))){let c=await Et(),{key:l}=Rt(c),u=Xe(c,l,e.name||"Default");Object.assign(e,u),await U({permanentKey:e.key});let f=await bt(e.key,N);if(f){let p=`${N}/login?k=${f.tempKey}`;r(await an(f.tempKey,e.key,p,n)),await U({oneTimeKey:f.tempKey,oneTimeKeyExpiresAt:f.expiresAt,qrUrl:p})}}}var os={"30m":"Off after 30 min idle","1h":"Off after 1 hour idle","2h":"Off after 2 hours idle","4h":"Off after 4 hours idle","24h":"Off after 24 hours idle",never:"Never off"};async function Qa(e,n){let r=n.map(s=>({label:os[s]||s,action:s}));r.push({label:m.gray("\u2190 Back"),action:"back"});let o=Math.max(0,n.indexOf(e)),t=await we("Prevent sleep",r,o),i=t>=0?r[t].action:"back";i!=="back"&&await J("/api/sleep-inhibit",{mode:i})}async function Ja(){for(;;){let e=!1,n="never",r=[],o=()=>[{label:`Launch on system startup: ${e?m.green("ON"):m.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${m.green(os[n]||n)} \u25B6`,action:"sleep"},{label:m.gray("\u2190 Back"),action:"back"}],t=o(),i=null,s=async()=>{let l=await ur();e=!!l.autoStart,n=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],t=o(),i?.()};await s(),At=s;let a=await we("Settings",t,0,"",l=>{i=l});At=null;let c=a>=0?t[a].action:"back";if(c==="autostart")await J("/api/autostart",{enabled:!e});else if(c==="sleep")await Qa(n,r);else return}}async function Xa(){for(;;){let e=!1,n={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?m.green("ON \u2192 turn OFF"):m.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${n.screenRecording?m.green("\u2713"):m.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${n.accessibility?m.green("\u2713"):m.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:m.gray("\u2190 Back")}],t=null,i=async()=>{let a=await j("/api/ui/state")||{};e=!!a.desktopEnabled,n={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,t?.()};await i(),At=i;let s=await we("Remote Desktop",o,0,"",a=>{t=a});if(At=null,s===0)await J("/api/desktop/toggle",{enabled:!e});else if(s===1&&!n.screenRecording)await J("/api/permissions/request",{type:"screenRecording"})||An("screenRecording");else if(s===2&&!n.accessibility)await J("/api/permissions/request",{type:"accessibility"})||An("accessibility");else if(s===3||s===-1)return}}async function qa(){for(;;){let[e,n]=await Promise.all([j("/api/device/approved"),j("/api/device/auto-approve")]),r=e?.devices||[],o=!!n?.enabled,t=[{label:`Auto-approve new devices: ${o?m.green("ON"):m.gray("OFF")}`,action:"toggle"},...r.map(a=>{let c=a.deviceId.slice(0,8),l=a.approvedAt?new Date(a.approvedAt).toLocaleString():"unknown";return{label:`${c}... ${m.dim(l)}`,action:"remove",deviceId:a.deviceId}}),{label:m.gray("\u2190 Back"),action:"back"}],i=await we(`Approved Devices (${r.length})`,t,0);if(i===-1)return;let s=t[i];if(s.action==="back")return;if(s.action==="toggle"){await J("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await cr(m.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await J("/api/device/remove",{deviceId:s.deviceId})}}async function Za(){let e=qr(Hr),n=e.length?e.join(`
159
+ `)),process.exit(0)}}}async function wc(e,n,r,o){let t=[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:m.gray("\u2190 Back"),action:"back"}],i=await Ee("Keys",t,0,o),s=i>=0?t[i].action:"back";if(s==="otk"){let a=await Mt(e.key,N);if(a){let c=`${N}/login?k=${a.tempKey}`;r(await wn(a.tempKey,e.key,c,n)),await F({oneTimeKey:a.tempKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await Pr(m.yellow("\u26A0\uFE0F Replace current key and disconnect all sessions? Continue?"))){let c=await dt(),{key:l}=mt(c),u=et(c,l,e.name||"Default");Object.assign(e,u),await F({permanentKey:e.key});let f=await Mt(e.key,N);if(f){let p=`${N}/login?k=${f.tempKey}`;r(await wn(f.tempKey,e.key,p,n)),await F({oneTimeKey:f.tempKey,oneTimeKeyExpiresAt:f.expiresAt,qrUrl:p})}}}var Ps={"30m":"Off after 30 min idle","1h":"Off after 1 hour idle","2h":"Off after 2 hours idle","4h":"Off after 4 hours idle","24h":"Off after 24 hours idle",never:"Never off"};async function vc(e,n){let r=n.map(s=>({label:Ps[s]||s,action:s}));r.push({label:m.gray("\u2190 Back"),action:"back"});let o=Math.max(0,n.indexOf(e)),t=await Ee("Prevent sleep",r,o),i=t>=0?r[t].action:"back";i!=="back"&&await q("/api/sleep-inhibit",{mode:i})}async function Sc(){for(;;){let e=!1,n="never",r=[],o=()=>[{label:`Launch on system startup: ${e?m.green("ON"):m.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${m.green(Ps[n]||n)} \u25B6`,action:"sleep"},{label:m.gray("\u2190 Back"),action:"back"}],t=o(),i=null,s=async()=>{let l=await Or();e=!!l.autoStart,n=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],t=o(),i?.()};await s(),Nt=s;let a=await Ee("Settings",t,0,"",l=>{i=l});Nt=null;let c=a>=0?t[a].action:"back";if(c==="autostart")await q("/api/autostart",{enabled:!e});else if(c==="sleep")await vc(n,r);else return}}async function Ec(){for(;;){let e=!1,n={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?m.green("ON \u2192 turn OFF"):m.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${n.screenRecording?m.green("\u2713"):m.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${n.accessibility?m.green("\u2713"):m.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:m.gray("\u2190 Back")}],t=null,i=async()=>{let a=await G("/api/ui/state")||{};e=!!a.desktopEnabled,n={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,t?.()};await i(),Nt=i;let s=await Ee("Remote Desktop",o,0,"",a=>{t=a});if(Nt=null,s===0)await q("/api/desktop/toggle",{enabled:!e});else if(s===1&&!n.screenRecording)await q("/api/permissions/request",{type:"screenRecording"})||Un("screenRecording");else if(s===2&&!n.accessibility)await q("/api/permissions/request",{type:"accessibility"})||Un("accessibility");else if(s===3||s===-1)return}}async function Tc(){for(;;){let[e,n]=await Promise.all([G("/api/device/approved"),G("/api/device/auto-approve")]),r=e?.devices||[],o=!!n?.enabled,t=[{label:`Auto-approve new devices: ${o?m.green("ON"):m.gray("OFF")}`,action:"toggle"},...r.map(a=>{let c=a.deviceId.slice(0,8),l=a.approvedAt?new Date(a.approvedAt).toLocaleString():"unknown";return{label:`${c}... ${m.dim(l)}`,action:"remove",deviceId:a.deviceId}}),{label:m.gray("\u2190 Back"),action:"back"}],i=await Ee(`Approved Devices (${r.length})`,t,0);if(i===-1)return;let s=t[i];if(s.action==="back")return;if(s.action==="toggle"){await q("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await Pr(m.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await q("/api/device/remove",{deviceId:s.deviceId})}}async function Rc(){let e=Ro(oo),n=e.length?e.join(`
67
160
  `):m.gray(" No logs yet"),r=`
68
- ${m.dim("Log file:")} ${m.cyan($t)}
69
- ${m.dim(`Tail: tail -f ${$t}`)}`;await we("Logs",[{label:m.gray("\u2190 Back")}],0,n+r)}async function is(){let e=Ye(),n=await yo(),r=ar(e,n?.latest??null),o=[];n?.latest&&o.push({label:m.yellow(`Update to v${n.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:m.gray("Exit"),action:"exit"});let t=await we("",o,0,r),i=t>=0?o[t].action:"exit";if(i==="update"){let s=Math.min(xe.headerWidth,process.stdout.columns||xe.headerWidth);Tn(),console.log(ie.orange(`
161
+ ${m.dim("Log file:")} ${m.cyan(Yt)}
162
+ ${m.dim(`Tail: tail -f ${Yt}`)}`;await Ee("Logs",[{label:m.gray("\u2190 Back")}],0,n+r)}async function Is(){let e=we(),n=await Zo(),r=_r(e,n?.latest??null),o=[];n?.latest&&o.push({label:m.yellow(`Update to v${n.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:m.gray("Exit"),action:"exit"});let t=await Ee("",o,0,r),i=t>=0?o[t].action:"exit";if(i==="update"){let s=Math.min(Pe.headerWidth,process.stdout.columns||Pe.headerWidth);Fn(),console.log(le.orange(`
70
163
  `+"\u2550".repeat(s))),console.log(m.gray(` \u2713 Stopped running instances
71
164
  `)),console.log(m.yellow(` \u2B06 Run this command to update:
72
- `)),console.log(m.white.bold(` npm i -g 9remote@latest
73
- `)),console.log(ie.orange("\u2550".repeat(s))+`
74
- `),process.exit(0)}else i==="ui"?await ts():i==="tui"?await rs():process.exit(0)}var ss=[["9remote","Interactive menu (TUI). Falls back to help with no TTY."],["9remote start","Run server + tunnel in foreground (headless)."],["9remote key","Show permanent key + connect URL."],["9remote key --new","Regenerate the permanent key."],["9remote otk","Create a fresh one-time connect key + URL."],["9remote devices","List approved devices."],["9remote auto-approve <on|off>","Toggle device auto-approve."],["9remote approve <socketId>","Approve a pending device."],["9remote help","Show this help."]];function Dr(){mt(Ye()),console.log(m.white.bold(`
165
+ `)),console.log(m.white.bold(` npm i -g ${ke}
166
+ `)),console.log(le.orange("\u2550".repeat(s))+`
167
+ `),process.exit(0)}else i==="ui"?await As():i==="tui"?await _s():process.exit(0)}var Os=[["9remote","Interactive menu (TUI). Falls back to help with no TTY."],["9remote start","Run server + tunnel in foreground (headless)."],["9remote key","Show permanent key + connect URL."],["9remote key --new","Regenerate the permanent key."],["9remote otk","Create a fresh one-time connect key + URL."],["9remote devices","List approved devices."],["9remote auto-approve <on|off>","Toggle device auto-approve."],["9remote approve <socketId>","Approve a pending device."],["9remote help","Show this help."]];function zr(){xt(we()),console.log(m.white.bold(`
75
168
  Usage:
76
- `));let e=Math.max(...ss.map(([n])=>n.length))+2;for(let[n,r]of ss)console.log(" "+m.cyan(n.padEnd(e))+m.gray(r));console.log()}async function cn(){return await Z()?!0:(console.log(m.red(`
169
+ `));let e=Math.max(...Os.map(([n])=>n.length))+2;for(let[n,r]of Os)console.log(" "+m.cyan(n.padEnd(e))+m.gray(r));console.log()}async function vn(){return await re()?!0:(console.log(m.red(`
77
170
  \u2717 Server not running. Start it first: `)+m.cyan("9remote start")+`
78
- `),!1)}async function za(e){if(!await cn())return;if(e){let r=await J("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(m.red(`
171
+ `),!1)}async function xc(e){if(!await vn())return;if(e){let r=await q("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(m.red(`
79
172
  \u2717 Regenerate failed
80
173
  `));return}console.log(m.green(`
81
174
  \u2713 New key: `)+m.white.bold(o.permanentKey)+`
82
- `);return}let n=await j("/api/ui/state")||{};if(!n.permanentKey){console.log(m.red(`
175
+ `);return}let n=await G("/api/ui/state")||{};if(!n.permanentKey){console.log(m.red(`
83
176
  \u2717 No key yet. Run: `)+m.cyan("9remote start")+`
84
177
  `);return}console.log(m.white(`
85
178
  Key`.padEnd(14))+m.white.bold(n.permanentKey)),n.qrUrl&&console.log(m.white("Connect URL".padEnd(14))+m.cyan(n.qrUrl)),console.log(m.white("App URL".padEnd(14))+m.gray(`${N}/login`)+`
86
- `)}async function ec(){if(!await cn())return;let e=await J("/api/key/one-time"),n=e&&e.ok?await e.json():null;if(!n?.qrUrl){console.log(m.red(`
179
+ `)}async function bc(){if(!await vn())return;let e=await q("/api/key/one-time"),n=e&&e.ok?await e.json():null;if(!n?.qrUrl){console.log(m.red(`
87
180
  \u2717 Failed to create one-time key
88
181
  `));return}console.log(m.green(`
89
182
  \u2713 One-time key (30 min): `)+m.white.bold(n.oneTimeKey)),console.log(m.white("Connect URL ")+m.cyan(n.qrUrl)+`
90
- `)}async function tc(){if(!await cn())return;let n=(await j("/api/device/approved")||{}).devices||[],r=await j("/api/device/auto-approve")||{};if(console.log(m.white(`
183
+ `)}async function Ac(){if(!await vn())return;let n=(await G("/api/device/approved")||{}).devices||[],r=await G("/api/device/auto-approve")||{};if(console.log(m.white(`
91
184
  Auto-approve: `)+(r.enabled?m.green("ON"):m.gray("OFF"))),!n.length){console.log(m.gray(`No approved devices
92
- `));return}console.log(m.white(`Approved devices (${n.length}):`));for(let o of n)console.log(" "+m.cyan(o.deviceId));console.log()}async function nc(e){if(!await cn())return;let n=e==="on";if(e!=="on"&&e!=="off"){console.log(m.red(`
185
+ `));return}console.log(m.white(`Approved devices (${n.length}):`));for(let o of n)console.log(" "+m.cyan(o.deviceId));console.log()}async function kc(e){if(!await vn())return;let n=e==="on";if(e!=="on"&&e!=="off"){console.log(m.red(`
93
186
  \u2717 Usage: 9remote auto-approve <on|off>
94
- `));return}let r=await J("/api/device/auto-approve",{enabled:n}),o=r&&r.ok?await r.json():null;console.log(m.green(`
187
+ `));return}let r=await q("/api/device/auto-approve",{enabled:n}),o=r&&r.ok?await r.json():null;console.log(m.green(`
95
188
  \u2713 Auto-approve: `)+(o?.enabled?m.green("ON"):m.gray("OFF"))+`
96
- `)}async function rc(e){if(!await cn())return;if(!e){let t=(await j("/api/device/pending")||{}).pending||[];if(!t.length){console.log(m.gray(`
189
+ `)}async function _c(e){if(!await vn())return;if(!e){let t=(await G("/api/device/pending")||{}).pending||[];if(!t.length){console.log(m.gray(`
97
190
  No pending devices
98
191
  `));return}console.log(m.white(`
99
192
  Pending devices (${t.length}):`));for(let i of t)console.log(" "+m.cyan(i.socketId)+m.gray(` ${i.deviceId?.slice(0,8)||""} ${i.ip||""}`));console.log(m.gray(`
100
193
  Approve with: `)+m.cyan("9remote approve <socketId>")+`
101
- `);return}let n=await J("/api/device/approve",{socketId:e}),r=n&&n.ok?await n.json():null;console.log(r?.ok?m.green(`
194
+ `);return}let n=await q("/api/device/approve",{socketId:e}),r=n&&n.ok?await n.json():null;console.log(r?.ok?m.green(`
102
195
  \u2713 Approved
103
196
  `):m.red(`
104
197
  \u2717 Approve failed (invalid socketId?)
105
- `))}async function as(e){let n=e[2],r=e.slice(3);switch(n){case"help":case"-h":case"--help":return Dr(),!0;case"key":return await za(r.includes("--new")),!0;case"otk":return await ec(),!0;case"devices":return await tc(),!0;case"auto-approve":return await nc(r[0]),!0;case"approve":return await rc(r[0]),!0;default:return!1}}Xr();async function oc(){let e=process.argv[2];if(await as(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||Tn(),e==="ui"?await Ji():e==="start"||process.argv.includes("--auto")?await qi():process.argv.includes("--tray")||process.argv.includes("--start")?await Xi():process.stdin.isTTY?await is():Dr()}oc().catch(console.error);
198
+ `))}async function Cs(e){let n=e[2],r=e.slice(3);switch(n){case"help":case"-h":case"--help":return zr(),!0;case"key":return await xc(r.includes("--new")),!0;case"otk":return await bc(),!0;case"devices":return await Ac(),!0;case"auto-approve":return await kc(r[0]),!0;case"approve":return await _c(r[0]),!0;default:return!1}}var eo=process.argv[2];(eo==="version"||eo==="--version"||eo==="-v")&&(process.stdout.write(we()+`
199
+ `),process.exit(0));To();async function Pc(){let e=process.argv[2];if(await Cs(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||Fn(),e==="ui"?await Es():e==="start"||process.argv.includes("--auto")?await Rs():process.argv.includes("--tray")||process.argv.includes("--start")?await Ts():process.stdin.isTTY?await Is():zr()}Pc().catch(console.error);