9remote 3.0.3 → 3.0.4

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.
Files changed (205) hide show
  1. package/dist/cli.cjs +62 -62
  2. package/dist/ptyDaemon.cjs +7 -7
  3. package/dist/server.cjs +206 -187
  4. package/dist/ui/assets/index-B3Etxg9r.js +8 -0
  5. package/dist/ui/index.html +1 -1
  6. package/dist/web/404.html +1 -1
  7. package/dist/web/__next.__PAGE__.txt +2 -2
  8. package/dist/web/__next._full.txt +7 -7
  9. package/dist/web/__next._head.txt +1 -1
  10. package/dist/web/__next._index.txt +6 -6
  11. package/dist/web/__next._tree.txt +2 -2
  12. package/dist/web/_next/static/chunks/1750.a35b00a05b21d196.js +1 -0
  13. package/dist/web/_next/static/chunks/3973-2b22a02354eb3d07.js +1 -0
  14. package/dist/web/_next/static/chunks/6552-5bb346448e83e0a2.js +1 -0
  15. package/dist/web/_next/static/chunks/8529-dc6ec7164d23d48e.js +1 -0
  16. package/dist/web/_next/static/chunks/9958-4e13af15ce454c7a.js +1 -0
  17. package/dist/web/_next/static/chunks/app/admin/admins/{page-5e0e3fd2d0958d9f.js → page-b68025e0c5fe453c.js} +1 -1
  18. package/dist/web/_next/static/chunks/app/admin/login/{page-6c982d868fdac3dc.js → page-38d9b3d31ee14847.js} +1 -1
  19. package/dist/web/_next/static/chunks/app/admin/modes/{page-a65bd6cce18e942b.js → page-7ebdbd17bfde67fd.js} +1 -1
  20. package/dist/web/_next/static/chunks/app/admin/ota/{page-7a552ae27c99ef80.js → page-b237f7c870eeade4.js} +1 -1
  21. package/dist/web/_next/static/chunks/app/admin/{page-065812115a332f39.js → page-a197e50c2b5a08f4.js} +1 -1
  22. package/dist/web/_next/static/chunks/app/admin/turn/{page-c6994ee6f6adeefe.js → page-dc625ee476578675.js} +1 -1
  23. package/dist/web/_next/static/chunks/app/dev/question/page-db919ed1d6babdb4.js +1 -0
  24. package/dist/web/_next/static/chunks/app/{layout-341400810c81f67e.js → layout-ec53a1a0c4b3e99e.js} +1 -1
  25. package/dist/web/_next/static/chunks/app/login/{page-8cddff633dcedaef.js → page-e2c75b449a40fc02.js} +1 -1
  26. package/dist/web/_next/static/chunks/app/{page-165a740d40cb1fef.js → page-24d612a793ea7763.js} +2 -2
  27. package/dist/web/_next/static/chunks/app/workspace/layout-f5d5ba72458fb2a7.js +14 -0
  28. package/dist/web/_next/static/chunks/{webpack-c971919003362f96.js → webpack-210219beafaa52a1.js} +1 -1
  29. package/dist/web/_next/static/css/3bb9c5823a043a03.css +1 -0
  30. package/dist/web/_not-found/__next._full.txt +6 -6
  31. package/dist/web/_not-found/__next._head.txt +1 -1
  32. package/dist/web/_not-found/__next._index.txt +6 -6
  33. package/dist/web/_not-found/__next._not-found.__PAGE__.txt +1 -1
  34. package/dist/web/_not-found/__next._not-found.txt +1 -1
  35. package/dist/web/_not-found/__next._tree.txt +2 -2
  36. package/dist/web/_not-found.html +1 -1
  37. package/dist/web/_not-found.txt +6 -6
  38. package/dist/web/admin/__next._full.txt +7 -7
  39. package/dist/web/admin/__next._head.txt +1 -1
  40. package/dist/web/admin/__next._index.txt +6 -6
  41. package/dist/web/admin/__next._tree.txt +2 -2
  42. package/dist/web/admin/__next.admin.__PAGE__.txt +2 -2
  43. package/dist/web/admin/__next.admin.txt +1 -1
  44. package/dist/web/admin/admins/__next._full.txt +7 -7
  45. package/dist/web/admin/admins/__next._head.txt +1 -1
  46. package/dist/web/admin/admins/__next._index.txt +6 -6
  47. package/dist/web/admin/admins/__next._tree.txt +2 -2
  48. package/dist/web/admin/admins/__next.admin.admins.__PAGE__.txt +2 -2
  49. package/dist/web/admin/admins/__next.admin.admins.txt +1 -1
  50. package/dist/web/admin/admins/__next.admin.txt +1 -1
  51. package/dist/web/admin/admins.html +1 -1
  52. package/dist/web/admin/admins.txt +7 -7
  53. package/dist/web/admin/login/__next._full.txt +7 -7
  54. package/dist/web/admin/login/__next._head.txt +1 -1
  55. package/dist/web/admin/login/__next._index.txt +6 -6
  56. package/dist/web/admin/login/__next._tree.txt +2 -2
  57. package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +2 -2
  58. package/dist/web/admin/login/__next.admin.login.txt +1 -1
  59. package/dist/web/admin/login/__next.admin.txt +1 -1
  60. package/dist/web/admin/login.html +1 -1
  61. package/dist/web/admin/login.txt +7 -7
  62. package/dist/web/admin/modes/__next._full.txt +7 -7
  63. package/dist/web/admin/modes/__next._head.txt +1 -1
  64. package/dist/web/admin/modes/__next._index.txt +6 -6
  65. package/dist/web/admin/modes/__next._tree.txt +2 -2
  66. package/dist/web/admin/modes/__next.admin.modes.__PAGE__.txt +2 -2
  67. package/dist/web/admin/modes/__next.admin.modes.txt +1 -1
  68. package/dist/web/admin/modes/__next.admin.txt +1 -1
  69. package/dist/web/admin/modes.html +1 -1
  70. package/dist/web/admin/modes.txt +7 -7
  71. package/dist/web/admin/ota/__next._full.txt +7 -7
  72. package/dist/web/admin/ota/__next._head.txt +1 -1
  73. package/dist/web/admin/ota/__next._index.txt +6 -6
  74. package/dist/web/admin/ota/__next._tree.txt +2 -2
  75. package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +2 -2
  76. package/dist/web/admin/ota/__next.admin.ota.txt +1 -1
  77. package/dist/web/admin/ota/__next.admin.txt +1 -1
  78. package/dist/web/admin/ota.html +1 -1
  79. package/dist/web/admin/ota.txt +7 -7
  80. package/dist/web/admin/turn/__next._full.txt +7 -7
  81. package/dist/web/admin/turn/__next._head.txt +1 -1
  82. package/dist/web/admin/turn/__next._index.txt +6 -6
  83. package/dist/web/admin/turn/__next._tree.txt +2 -2
  84. package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +2 -2
  85. package/dist/web/admin/turn/__next.admin.turn.txt +1 -1
  86. package/dist/web/admin/turn/__next.admin.txt +1 -1
  87. package/dist/web/admin/turn.html +1 -1
  88. package/dist/web/admin/turn.txt +7 -7
  89. package/dist/web/admin.html +1 -1
  90. package/dist/web/admin.txt +7 -7
  91. package/dist/web/agent-icons/antigravity-ui.png +0 -0
  92. package/dist/web/agent-icons/omp-ui.svg +1 -0
  93. package/dist/web/agent-icons/opencode-ui.png +0 -0
  94. package/dist/web/dev/question/__next._full.txt +7 -7
  95. package/dist/web/dev/question/__next._head.txt +1 -1
  96. package/dist/web/dev/question/__next._index.txt +6 -6
  97. package/dist/web/dev/question/__next._tree.txt +2 -2
  98. package/dist/web/dev/question/__next.dev.question.__PAGE__.txt +2 -2
  99. package/dist/web/dev/question/__next.dev.question.txt +1 -1
  100. package/dist/web/dev/question/__next.dev.txt +1 -1
  101. package/dist/web/dev/question.html +1 -1
  102. package/dist/web/dev/question.txt +7 -7
  103. package/dist/web/index.html +1 -1
  104. package/dist/web/index.txt +7 -7
  105. package/dist/web/login/__next._full.txt +7 -7
  106. package/dist/web/login/__next._head.txt +1 -1
  107. package/dist/web/login/__next._index.txt +6 -6
  108. package/dist/web/login/__next._tree.txt +2 -2
  109. package/dist/web/login/__next.login.__PAGE__.txt +2 -2
  110. package/dist/web/login/__next.login.txt +1 -1
  111. package/dist/web/login.html +1 -1
  112. package/dist/web/login.txt +7 -7
  113. package/dist/web/workspace/__next._full.txt +7 -7
  114. package/dist/web/workspace/__next._head.txt +1 -1
  115. package/dist/web/workspace/__next._index.txt +6 -6
  116. package/dist/web/workspace/__next._tree.txt +2 -2
  117. package/dist/web/workspace/__next.workspace.__PAGE__.txt +1 -1
  118. package/dist/web/workspace/__next.workspace.txt +2 -2
  119. package/dist/web/workspace/browse/__next._full.txt +7 -7
  120. package/dist/web/workspace/browse/__next._head.txt +1 -1
  121. package/dist/web/workspace/browse/__next._index.txt +6 -6
  122. package/dist/web/workspace/browse/__next._tree.txt +2 -2
  123. package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +1 -1
  124. package/dist/web/workspace/browse/__next.workspace.browse.txt +1 -1
  125. package/dist/web/workspace/browse/__next.workspace.txt +2 -2
  126. package/dist/web/workspace/browse.html +1 -1
  127. package/dist/web/workspace/browse.txt +7 -7
  128. package/dist/web/workspace/editor/__next._full.txt +7 -7
  129. package/dist/web/workspace/editor/__next._head.txt +1 -1
  130. package/dist/web/workspace/editor/__next._index.txt +6 -6
  131. package/dist/web/workspace/editor/__next._tree.txt +2 -2
  132. package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +1 -1
  133. package/dist/web/workspace/editor/__next.workspace.editor.txt +1 -1
  134. package/dist/web/workspace/editor/__next.workspace.txt +2 -2
  135. package/dist/web/workspace/editor.html +1 -1
  136. package/dist/web/workspace/editor.txt +7 -7
  137. package/dist/web/workspace/files/__next._full.txt +7 -7
  138. package/dist/web/workspace/files/__next._head.txt +1 -1
  139. package/dist/web/workspace/files/__next._index.txt +6 -6
  140. package/dist/web/workspace/files/__next._tree.txt +2 -2
  141. package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +1 -1
  142. package/dist/web/workspace/files/__next.workspace.files.txt +1 -1
  143. package/dist/web/workspace/files/__next.workspace.txt +2 -2
  144. package/dist/web/workspace/files.html +1 -1
  145. package/dist/web/workspace/files.txt +7 -7
  146. package/dist/web/workspace/git/__next._full.txt +7 -7
  147. package/dist/web/workspace/git/__next._head.txt +1 -1
  148. package/dist/web/workspace/git/__next._index.txt +6 -6
  149. package/dist/web/workspace/git/__next._tree.txt +2 -2
  150. package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +1 -1
  151. package/dist/web/workspace/git/__next.workspace.git.txt +1 -1
  152. package/dist/web/workspace/git/__next.workspace.txt +2 -2
  153. package/dist/web/workspace/git.html +1 -1
  154. package/dist/web/workspace/git.txt +7 -7
  155. package/dist/web/workspace/mobile/__next._full.txt +7 -7
  156. package/dist/web/workspace/mobile/__next._head.txt +1 -1
  157. package/dist/web/workspace/mobile/__next._index.txt +6 -6
  158. package/dist/web/workspace/mobile/__next._tree.txt +2 -2
  159. package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +1 -1
  160. package/dist/web/workspace/mobile/__next.workspace.mobile.txt +1 -1
  161. package/dist/web/workspace/mobile/__next.workspace.txt +2 -2
  162. package/dist/web/workspace/mobile.html +1 -1
  163. package/dist/web/workspace/mobile.txt +7 -7
  164. package/dist/web/workspace/remote/__next._full.txt +7 -7
  165. package/dist/web/workspace/remote/__next._head.txt +1 -1
  166. package/dist/web/workspace/remote/__next._index.txt +6 -6
  167. package/dist/web/workspace/remote/__next._tree.txt +2 -2
  168. package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +1 -1
  169. package/dist/web/workspace/remote/__next.workspace.remote.txt +1 -1
  170. package/dist/web/workspace/remote/__next.workspace.txt +2 -2
  171. package/dist/web/workspace/remote.html +1 -1
  172. package/dist/web/workspace/remote.txt +7 -7
  173. package/dist/web/workspace/terminal/default/__next._full.txt +7 -7
  174. package/dist/web/workspace/terminal/default/__next._head.txt +1 -1
  175. package/dist/web/workspace/terminal/default/__next._index.txt +6 -6
  176. package/dist/web/workspace/terminal/default/__next._tree.txt +2 -2
  177. package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +1 -1
  178. package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +1 -1
  179. package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +1 -1
  180. package/dist/web/workspace/terminal/default/__next.workspace.txt +2 -2
  181. package/dist/web/workspace/terminal/default.html +1 -1
  182. package/dist/web/workspace/terminal/default.txt +7 -7
  183. package/dist/web/workspace/workspaces/__next._full.txt +7 -7
  184. package/dist/web/workspace/workspaces/__next._head.txt +1 -1
  185. package/dist/web/workspace/workspaces/__next._index.txt +6 -6
  186. package/dist/web/workspace/workspaces/__next._tree.txt +2 -2
  187. package/dist/web/workspace/workspaces/__next.workspace.txt +2 -2
  188. package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +1 -1
  189. package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +1 -1
  190. package/dist/web/workspace/workspaces.html +1 -1
  191. package/dist/web/workspace/workspaces.txt +7 -7
  192. package/dist/web/workspace.html +1 -1
  193. package/dist/web/workspace.txt +7 -7
  194. package/package.json +1 -1
  195. package/dist/ui/assets/index-N-7Btpy6.js +0 -8
  196. package/dist/web/_next/static/chunks/1750.f7ba3332b56a8e68.js +0 -1
  197. package/dist/web/_next/static/chunks/3973-0f299c91413d771f.js +0 -1
  198. package/dist/web/_next/static/chunks/6552-a42cab8d91efbdea.js +0 -1
  199. package/dist/web/_next/static/chunks/7629-16de8d4154923623.js +0 -1
  200. package/dist/web/_next/static/chunks/9958-ac2bbbfff1caca81.js +0 -1
  201. package/dist/web/_next/static/chunks/app/dev/question/page-5fd80ae293617365.js +0 -1
  202. package/dist/web/_next/static/chunks/app/workspace/layout-de3e7ac6ee87c001.js +0 -14
  203. package/dist/web/_next/static/css/dceb43a27b274afb.css +0 -1
  204. /package/dist/web/_next/static/{P887YK8-ExWuqlGx2FRuu → -4kBSWRXKHPAs-s1ygA3F}/_buildManifest.js +0 -0
  205. /package/dist/web/_next/static/{P887YK8-ExWuqlGx2FRuu → -4kBSWRXKHPAs-s1ygA3F}/_ssgManifest.js +0 -0
package/dist/cli.cjs CHANGED
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  const __importMetaUrl = require('url').pathToFileURL(__filename).href;
3
- var Ha=Object.create;var Br=Object.defineProperty;var Wa=Object.getOwnPropertyDescriptor;var ja=Object.getOwnPropertyNames;var Ga=Object.getPrototypeOf,Va=Object.prototype.hasOwnProperty;var Ya=(e,t)=>()=>(e&&(t=e(e=0)),t);var ue=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Xa=(e,t)=>{for(var r in t)Br(e,r,{get:t[r],enumerable:!0})},Qa=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ja(t))!Va.call(e,n)&&n!==r&&Br(e,n,{get:()=>t[n],enumerable:!(o=Wa(t,n))||o.enumerable});return e};var R=(e,t,r)=>(r=e!=null?Ha(Ga(e)):{},Qa(t||!e||!e.__esModule?Br(r,"default",{value:e,enumerable:!0}):r,e));var Zo=ue((En,Kr)=>{(function(e,t){typeof En=="object"&&typeof Kr=="object"?Kr.exports=t(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],t):typeof En=="object"?En["electron-machine-id"]=t(require("child_process"),require("crypto")):e["electron-machine-id"]=t(e.child_process,e.crypto)})(En,function(e,t){return(function(r){function o(i){if(n[i])return n[i].exports;var s=n[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var n={};return o.m=r,o.c=n,o.p="",o(0)})([function(r,o,n){r.exports=n(34)},function(r,o,n){var i=n(29)("wks"),s=n(33),a=n(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 n=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=n)},function(r,o,n){var i=n(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,n){r.exports=!n(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,n){var i=n(12),s=n(17);r.exports=n(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 n=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=n)},function(r,o,n){var i=n(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 n={}.hasOwnProperty;r.exports=function(i,s){return n.call(i,s)}},function(r,o){r.exports=function(n){return typeof n=="object"?n!==null:typeof n=="function"}},function(r,o){r.exports={}},function(r,o){var n={}.toString;r.exports=function(i){return n.call(i).slice(8,-1)}},function(r,o,n){var i=n(3),s=n(26),a=n(32),c=Object.defineProperty;o.f=n(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,n){var i=n(42),s=n(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(n){if(typeof n!="function")throw TypeError(n+" is not a function!");return n}},function(r,o){r.exports=function(n){if(n==null)throw TypeError("Can't call method on "+n);return n}},function(r,o,n){var i=n(9),s=n(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(n,i){return{enumerable:!(1&n),configurable:!(2&n),writable:!(4&n),value:i}}},function(r,o,n){var i=n(12).f,s=n(8),a=n(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,n){var i=n(29)("keys"),s=n(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var n=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:n)(s)}},function(r,o,n){var i=n(11),s=n(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,n){var i=n(2),s=n(6),a=n(7),c=n(5),l="prototype",u=function(f,p,d){var h,w,S,O=f&u.F,A=f&u.G,P=f&u.S,g=f&u.P,b=f&u.B,T=f&u.W,I=A?s:s[p]||(s[p]={}),_=I[l],U=A?i:P?i[p]:(i[p]||{})[l];A&&(d=p);for(h in d)w=!O&&U&&U[h]!==void 0,w&&h in I||(S=w?U[h]:d[h],I[h]=A&&typeof U[h]!="function"?d[h]:b&&w?a(S,i):T&&U[h]==S?(function(J){var ge=function(ye,ne,Ne){if(this instanceof J){switch(arguments.length){case 0:return new J;case 1:return new J(ye);case 2:return new J(ye,ne)}return new J(ye,ne,Ne)}return J.apply(this,arguments)};return ge[l]=J[l],ge})(S):g&&typeof S=="function"?a(Function.call,S):S,g&&((I.virtual||(I.virtual={}))[h]=S,f&u.R&&_&&!_[h]&&c(_,h,S)))};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(n){try{return!!n()}catch{return!0}}},function(r,o,n){r.exports=n(2).document&&document.documentElement},function(r,o,n){r.exports=!n(4)&&!n(24)(function(){return Object.defineProperty(n(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,o,n){"use strict";var i=n(28),s=n(23),a=n(57),c=n(5),l=n(8),u=n(10),f=n(45),p=n(18),d=n(52),h=n(1)("iterator"),w=!([].keys&&"next"in[].keys()),S="@@iterator",O="keys",A="values",P=function(){return this};r.exports=function(g,b,T,I,_,U,J){f(T,b,I);var ge,ye,ne,Ne=function(v){if(!w&&v in re)return re[v];switch(v){case O:return function(){return new T(this,v)};case A:return function(){return new T(this,v)}}return function(){return new T(this,v)}},Ot=b+" Iterator",gt=_==A,mn=!1,re=g.prototype,qe=re[h]||re[S]||_&&re[_],ae=qe||Ne(_),hn=_?gt?Ne("entries"):ae:void 0,y=b=="Array"&&re.entries||qe;if(y&&(ne=d(y.call(new g)),ne!==Object.prototype&&(p(ne,Ot,!0),i||l(ne,h)||c(ne,h,P))),gt&&qe&&qe.name!==A&&(mn=!0,ae=function(){return qe.call(this)}),i&&!J||!w&&!mn&&re[h]||c(re,h,ae),u[b]=ae,u[Ot]=P,_)if(ge={values:gt?ae:Ne(A),keys:U?ae:Ne(O),entries:hn},J)for(ye in ge)ye in re||a(re,ye,ge[ye]);else s(s.P+s.F*(w||mn),b,ge);return ge}},function(r,o){r.exports=!0},function(r,o,n){var i=n(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,o,n){var i,s,a,c=n(7),l=n(41),u=n(25),f=n(16),p=n(2),d=p.process,h=p.setImmediate,w=p.clearImmediate,S=p.MessageChannel,O=0,A={},P="onreadystatechange",g=function(){var T=+this;if(A.hasOwnProperty(T)){var I=A[T];delete A[T],I()}},b=function(T){g.call(T.data)};h&&w||(h=function(T){for(var I=[],_=1;arguments.length>_;)I.push(arguments[_++]);return A[++O]=function(){l(typeof T=="function"?T:Function(T),I)},i(O),O},w=function(T){delete A[T]},n(11)(d)=="process"?i=function(T){d.nextTick(c(g,T,1))}:S?(s=new S,a=s.port2,s.port1.onmessage=b,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(T){p.postMessage(T+"","*")},p.addEventListener("message",b,!1)):i=P in f("script")?function(T){u.appendChild(f("script"))[P]=function(){u.removeChild(this),g.call(T)}}:function(T){setTimeout(c(g,T,1),0)}),r.exports={set:h,clear:w}},function(r,o,n){var i=n(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,n){var i=n(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 n=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++n+i).toString(36))}},function(r,o,n){"use strict";function i(P){return P&&P.__esModule?P:{default:P}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(P){return(0,h.createHash)("sha256").update(P).digest("hex")}function c(P){switch(S){case"darwin":return P.split("IOPlatformUUID")[1].split(`
4
- `)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return P.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return P.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return P.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(P){var g=c((0,d.execSync)(A[S]).toString());return P?g:a(g)}function u(P){return new p.default(function(g,b){return(0,d.exec)(A[S],{},function(T,I,_){if(T)return b(new Error("Error while obtaining machine id: "+T.stack));var U=c(I.toString());return g(P?U:a(U))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=n(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=n(70),h=n(71),w=process,S=w.platform,O={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},A={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,n){r.exports={default:n(36),__esModule:!0}},function(r,o,n){n(66),n(68),n(69),n(67),r.exports=n(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(n,i,s,a){if(!(n instanceof i)||a!==void 0&&a in n)throw TypeError(s+": incorrect invocation!");return n}},function(r,o,n){var i=n(13),s=n(31),a=n(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),w=a(f,h);if(c&&u!=u){for(;h>w;)if(p=d[w++],p!=p)return!0}else for(;h>w;w++)if((c||w in d)&&d[w]===u)return c||w||0;return!c&&-1}}},function(r,d,n){var i=n(7),s=n(44),a=n(43),c=n(3),l=n(31),u=n(64),f={},p={},d=r.exports=function(h,w,S,O,A){var P,g,b,T,I=A?function(){return h}:u(h),_=i(S,O,w?2:1),U=0;if(typeof I!="function")throw TypeError(h+" is not iterable!");if(a(I)){for(P=l(h.length);P>U;U++)if(T=w?_(c(g=h[U])[0],g[1]):_(h[U]),T===f||T===p)return T}else for(b=I.call(h);!(g=b.next()).done;)if(T=s(b,_,g.value,w),T===f||T===p)return T};d.BREAK=f,d.RETURN=p},function(r,o){r.exports=function(n,i,s){var a=s===void 0;switch(i.length){case 0:return a?n():n.call(s);case 1:return a?n(i[0]):n.call(s,i[0]);case 2:return a?n(i[0],i[1]):n.call(s,i[0],i[1]);case 3:return a?n(i[0],i[1],i[2]):n.call(s,i[0],i[1],i[2]);case 4:return a?n(i[0],i[1],i[2],i[3]):n.call(s,i[0],i[1],i[2],i[3])}return n.apply(s,i)}},function(r,o,n){var i=n(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,n){var i=n(10),s=n(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,n){var i=n(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,n){"use strict";var i=n(49),s=n(17),a=n(18),c={};n(5)(c,n(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,n){var i=n(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(n,i){return{value:i,done:!!n}}},function(r,o,n){var i=n(2),s=n(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=n(11)(c)=="process";r.exports=function(){var f,p,d,h=function(){var A,P;for(u&&(A=c.domain)&&A.exit();f;){P=f.fn,f=f.next;try{P()}catch(g){throw f?d():p=void 0,g}}p=void 0,A&&A.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var w=!0,S=document.createTextNode("");new a(h).observe(S,{characterData:!0}),d=function(){S.data=w=!w}}else if(l&&l.resolve){var O=l.resolve();d=function(){O.then(h)}}else d=function(){s.call(i,h)};return function(A){var P={fn:A,next:void 0};p&&(p.next=P),f||(f=P,d()),p=P}}},function(r,o,n){var i=n(3),s=n(50),a=n(22),c=n(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=n(16)("iframe"),h=a.length,w=">";for(d.style.display="none",n(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+w),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,n){var i=n(12),s=n(3),a=n(54);r.exports=n(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,n){var i=n(55),s=n(17),a=n(13),c=n(32),l=n(8),u=n(26),f=Object.getOwnPropertyDescriptor;o.f=n(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,n){var i=n(8),s=n(63),a=n(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,n){var i=n(8),s=n(13),a=n(39)(!1),c=n(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,n){var i=n(53),s=n(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,n){var i=n(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,n){r.exports=n(5)},function(r,o,n){var i=n(9),s=n(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=n(7)(Function.call,n(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,n){"use strict";var i=n(2),s=n(6),a=n(12),c=n(4),l=n(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,n){var i=n(3),s=n(14),a=n(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,n){var i=n(20),s=n(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,n){var i=n(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,n){var i=n(15);r.exports=function(s){return Object(i(s))}},function(r,o,n){var i=n(21),s=n(1)("iterator"),a=n(10);r.exports=n(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,n){"use strict";var i=n(37),s=n(47),a=n(10),c=n(13);r.exports=n(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,n){"use strict";var i,s,a,c=n(28),l=n(2),u=n(7),f=n(21),p=n(23),d=n(9),h=(n(3),n(14)),w=n(38),S=n(40),O=(n(58).set,n(60)),A=n(30).set,P=n(48)(),g="Promise",b=l.TypeError,I=l.process,T=l[g],I=l.process,_=f(I)=="process",U=function(){},J=!!(function(){try{var y=T.resolve(1),v=(y.constructor={})[n(1)("species")]=function(x){x(U,U)};return(_||typeof PromiseRejectionEvent=="function")&&y.then(U)instanceof v}catch{}})(),ge=function(y,v){return y===v||y===T&&v===a},ye=function(y){var v;return!(!d(y)||typeof(v=y.then)!="function")&&v},ne=function(y){return ge(T,y)?new Ne(y):new s(y)},Ne=s=function(y){var v,x;this.promise=new y(function(N,Z){if(v!==void 0||x!==void 0)throw b("Bad Promise constructor");v=N,x=Z}),this.resolve=h(v),this.reject=h(x)},Ot=function(y){try{y()}catch(v){return{error:v}}},gt=function(y,v){if(!y._n){y._n=!0;var x=y._c;P(function(){for(var N=y._v,Z=y._s==1,yt=0,Lt=function(Je){var be,zn,gn=Z?Je.ok:Je.fail,yn=Je.resolve,_t=Je.reject,er=Je.domain;try{gn?(Z||(y._h==2&&qe(y),y._h=1),gn===!0?be=N:(er&&er.enter(),be=gn(N),er&&er.exit()),be===Je.promise?_t(b("Promise-chain cycle")):(zn=ye(be))?zn.call(be,yn,_t):yn(be)):_t(N)}catch(Ka){_t(Ka)}};x.length>yt;)Lt(x[yt++]);y._c=[],y._n=!1,v&&!y._h&&mn(y)})}},mn=function(y){A.call(l,function(){var v,x,N,Z=y._v;if(re(y)&&(v=Ot(function(){_?I.emit("unhandledRejection",Z,y):(x=l.onunhandledrejection)?x({promise:y,reason:Z}):(N=l.console)&&N.error&&N.error("Unhandled promise rejection",Z)}),y._h=_||re(y)?2:1),y._a=void 0,v)throw v.error})},re=function(y){if(y._h==1)return!1;for(var v,x=y._a||y._c,N=0;x.length>N;)if(v=x[N++],v.fail||!re(v.promise))return!1;return!0},qe=function(y){A.call(l,function(){var v;_?I.emit("rejectionHandled",y):(v=l.onrejectionhandled)&&v({promise:y,reason:y._v})})},ae=function(y){var v=this;v._d||(v._d=!0,v=v._w||v,v._v=y,v._s=2,v._a||(v._a=v._c.slice()),gt(v,!0))},hn=function(y){var v,x=this;if(!x._d){x._d=!0,x=x._w||x;try{if(x===y)throw b("Promise can't be resolved itself");(v=ye(y))?P(function(){var N={_w:x,_d:!1};try{v.call(y,u(hn,N,1),u(ae,N,1))}catch(Z){ae.call(N,Z)}}):(x._v=y,x._s=1,gt(x,!1))}catch(N){ae.call({_w:x,_d:!1},N)}}};J||(T=function(y){w(this,T,g,"_h"),h(y),i.call(this);try{y(u(hn,this,1),u(ae,this,1))}catch(v){ae.call(this,v)}},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=n(56)(T.prototype,{then:function(y,v){var x=ne(O(this,T));return x.ok=typeof y!="function"||y,x.fail=typeof v=="function"&&v,x.domain=_?I.domain:void 0,this._c.push(x),this._a&&this._a.push(x),this._s&&gt(this,!1),x.promise},catch:function(y){return this.then(void 0,y)}}),Ne=function(){var y=new i;this.promise=y,this.resolve=u(hn,y,1),this.reject=u(ae,y,1)}),p(p.G+p.W+p.F*!J,{Promise:T}),n(18)(T,g),n(59)(g),a=n(6)[g],p(p.S+p.F*!J,g,{reject:function(y){var v=ne(this),x=v.reject;return x(y),v.promise}}),p(p.S+p.F*(c||!J),g,{resolve:function(y){if(y instanceof T&&ge(y.constructor,this))return y;var v=ne(this),x=v.resolve;return x(y),v.promise}}),p(p.S+p.F*!(J&&n(46)(function(y){T.all(y).catch(U)})),g,{all:function(y){var v=this,x=ne(v),N=x.resolve,Z=x.reject,yt=Ot(function(){var Lt=[],Je=0,be=1;S(y,!1,function(zn){var gn=Je++,yn=!1;Lt.push(void 0),be++,v.resolve(zn).then(function(_t){yn||(yn=!0,Lt[gn]=_t,--be||N(Lt))},Z)}),--be||N(Lt)});return yt&&Z(yt.error),x.promise},race:function(y){var v=this,x=ne(v),N=x.reject,Z=Ot(function(){S(y,!1,function(yt){v.resolve(yt).then(x.resolve,N)})});return Z&&N(Z.error),x.promise}})},function(r,o,n){"use strict";var i=n(61)(!0);n(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,n){n(65);for(var i=n(2),s=n(5),a=n(10),c=n(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 Us={};Xa(Us,{initTray:()=>To,killTray:()=>Gn,openBrowser:()=>Vn,showTrayNotification:()=>Ao,updateTrayTooltip:()=>Ir});function Ls(e){for(let t of e)try{if(rn.default.existsSync(t))return t}catch{}return null}function Pl(){if(process.platform==="win32"){for(let e of Ns)try{if(rn.default.existsSync(e))return rn.default.readFileSync(e).toString("base64")}catch{}return Os}return Os}function kl(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function Ds(){let{port:e,tunnelUrl:t,running:r}=on,o=r?t?"Tunnel ON":"Local only":"Idle",n=`http://localhost:${e}`;return`9Remote \u2022 ${o}
3
+ var Wa=Object.create;var Br=Object.defineProperty;var ja=Object.getOwnPropertyDescriptor;var Ga=Object.getOwnPropertyNames;var Va=Object.getPrototypeOf,Ya=Object.prototype.hasOwnProperty;var Xa=(e,t)=>()=>(e&&(t=e(e=0)),t);var ue=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Qa=(e,t)=>{for(var r in t)Br(e,r,{get:t[r],enumerable:!0})},qa=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ga(t))!Ya.call(e,n)&&n!==r&&Br(e,n,{get:()=>t[n],enumerable:!(o=ja(t,n))||o.enumerable});return e};var R=(e,t,r)=>(r=e!=null?Wa(Va(e)):{},qa(t||!e||!e.__esModule?Br(r,"default",{value:e,enumerable:!0}):r,e));var Zo=ue((En,Kr)=>{(function(e,t){typeof En=="object"&&typeof Kr=="object"?Kr.exports=t(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],t):typeof En=="object"?En["electron-machine-id"]=t(require("child_process"),require("crypto")):e["electron-machine-id"]=t(e.child_process,e.crypto)})(En,function(e,t){return(function(r){function o(i){if(n[i])return n[i].exports;var s=n[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var n={};return o.m=r,o.c=n,o.p="",o(0)})([function(r,o,n){r.exports=n(34)},function(r,o,n){var i=n(29)("wks"),s=n(33),a=n(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 n=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=n)},function(r,o,n){var i=n(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,n){r.exports=!n(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,n){var i=n(12),s=n(17);r.exports=n(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 n=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=n)},function(r,o,n){var i=n(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 n={}.hasOwnProperty;r.exports=function(i,s){return n.call(i,s)}},function(r,o){r.exports=function(n){return typeof n=="object"?n!==null:typeof n=="function"}},function(r,o){r.exports={}},function(r,o){var n={}.toString;r.exports=function(i){return n.call(i).slice(8,-1)}},function(r,o,n){var i=n(3),s=n(26),a=n(32),c=Object.defineProperty;o.f=n(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,n){var i=n(42),s=n(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(n){if(typeof n!="function")throw TypeError(n+" is not a function!");return n}},function(r,o){r.exports=function(n){if(n==null)throw TypeError("Can't call method on "+n);return n}},function(r,o,n){var i=n(9),s=n(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(n,i){return{enumerable:!(1&n),configurable:!(2&n),writable:!(4&n),value:i}}},function(r,o,n){var i=n(12).f,s=n(8),a=n(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,n){var i=n(29)("keys"),s=n(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var n=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:n)(s)}},function(r,o,n){var i=n(11),s=n(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,n){var i=n(2),s=n(6),a=n(7),c=n(5),l="prototype",u=function(f,p,d){var h,w,T,I=f&u.F,A=f&u.G,P=f&u.S,g=f&u.P,b=f&u.B,S=f&u.W,O=A?s:s[p]||(s[p]={}),_=O[l],U=A?i:P?i[p]:(i[p]||{})[l];A&&(d=p);for(h in d)w=!I&&U&&U[h]!==void 0,w&&h in O||(T=w?U[h]:d[h],O[h]=A&&typeof U[h]!="function"?d[h]:b&&w?a(T,i):S&&U[h]==T?(function(J){var ge=function(ye,ne,Ne){if(this instanceof J){switch(arguments.length){case 0:return new J;case 1:return new J(ye);case 2:return new J(ye,ne)}return new J(ye,ne,Ne)}return J.apply(this,arguments)};return ge[l]=J[l],ge})(T):g&&typeof T=="function"?a(Function.call,T):T,g&&((O.virtual||(O.virtual={}))[h]=T,f&u.R&&_&&!_[h]&&c(_,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(n){try{return!!n()}catch{return!0}}},function(r,o,n){r.exports=n(2).document&&document.documentElement},function(r,o,n){r.exports=!n(4)&&!n(24)(function(){return Object.defineProperty(n(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,o,n){"use strict";var i=n(28),s=n(23),a=n(57),c=n(5),l=n(8),u=n(10),f=n(45),p=n(18),d=n(52),h=n(1)("iterator"),w=!([].keys&&"next"in[].keys()),T="@@iterator",I="keys",A="values",P=function(){return this};r.exports=function(g,b,S,O,_,U,J){f(S,b,O);var ge,ye,ne,Ne=function(v){if(!w&&v in re)return re[v];switch(v){case I:return function(){return new S(this,v)};case A:return function(){return new S(this,v)}}return function(){return new S(this,v)}},Ot=b+" Iterator",gt=_==A,mn=!1,re=g.prototype,qe=re[h]||re[T]||_&&re[_],ae=qe||Ne(_),hn=_?gt?Ne("entries"):ae:void 0,y=b=="Array"&&re.entries||qe;if(y&&(ne=d(y.call(new g)),ne!==Object.prototype&&(p(ne,Ot,!0),i||l(ne,h)||c(ne,h,P))),gt&&qe&&qe.name!==A&&(mn=!0,ae=function(){return qe.call(this)}),i&&!J||!w&&!mn&&re[h]||c(re,h,ae),u[b]=ae,u[Ot]=P,_)if(ge={values:gt?ae:Ne(A),keys:U?ae:Ne(I),entries:hn},J)for(ye in ge)ye in re||a(re,ye,ge[ye]);else s(s.P+s.F*(w||mn),b,ge);return ge}},function(r,o){r.exports=!0},function(r,o,n){var i=n(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,o,n){var i,s,a,c=n(7),l=n(41),u=n(25),f=n(16),p=n(2),d=p.process,h=p.setImmediate,w=p.clearImmediate,T=p.MessageChannel,I=0,A={},P="onreadystatechange",g=function(){var S=+this;if(A.hasOwnProperty(S)){var O=A[S];delete A[S],O()}},b=function(S){g.call(S.data)};h&&w||(h=function(S){for(var O=[],_=1;arguments.length>_;)O.push(arguments[_++]);return A[++I]=function(){l(typeof S=="function"?S:Function(S),O)},i(I),I},w=function(S){delete A[S]},n(11)(d)=="process"?i=function(S){d.nextTick(c(g,S,1))}:T?(s=new T,a=s.port2,s.port1.onmessage=b,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(S){p.postMessage(S+"","*")},p.addEventListener("message",b,!1)):i=P in f("script")?function(S){u.appendChild(f("script"))[P]=function(){u.removeChild(this),g.call(S)}}:function(S){setTimeout(c(g,S,1),0)}),r.exports={set:h,clear:w}},function(r,o,n){var i=n(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,n){var i=n(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 n=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++n+i).toString(36))}},function(r,o,n){"use strict";function i(P){return P&&P.__esModule?P:{default:P}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(P){return(0,h.createHash)("sha256").update(P).digest("hex")}function c(P){switch(T){case"darwin":return P.split("IOPlatformUUID")[1].split(`
4
+ `)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return P.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return P.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return P.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(P){var g=c((0,d.execSync)(A[T]).toString());return P?g:a(g)}function u(P){return new p.default(function(g,b){return(0,d.exec)(A[T],{},function(S,O,_){if(S)return b(new Error("Error while obtaining machine id: "+S.stack));var U=c(O.toString());return g(P?U:a(U))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=n(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=n(70),h=n(71),w=process,T=w.platform,I={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},A={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:I[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,n){r.exports={default:n(36),__esModule:!0}},function(r,o,n){n(66),n(68),n(69),n(67),r.exports=n(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(n,i,s,a){if(!(n instanceof i)||a!==void 0&&a in n)throw TypeError(s+": incorrect invocation!");return n}},function(r,o,n){var i=n(13),s=n(31),a=n(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),w=a(f,h);if(c&&u!=u){for(;h>w;)if(p=d[w++],p!=p)return!0}else for(;h>w;w++)if((c||w in d)&&d[w]===u)return c||w||0;return!c&&-1}}},function(r,d,n){var i=n(7),s=n(44),a=n(43),c=n(3),l=n(31),u=n(64),f={},p={},d=r.exports=function(h,w,T,I,A){var P,g,b,S,O=A?function(){return h}:u(h),_=i(T,I,w?2:1),U=0;if(typeof O!="function")throw TypeError(h+" is not iterable!");if(a(O)){for(P=l(h.length);P>U;U++)if(S=w?_(c(g=h[U])[0],g[1]):_(h[U]),S===f||S===p)return S}else for(b=O.call(h);!(g=b.next()).done;)if(S=s(b,_,g.value,w),S===f||S===p)return S};d.BREAK=f,d.RETURN=p},function(r,o){r.exports=function(n,i,s){var a=s===void 0;switch(i.length){case 0:return a?n():n.call(s);case 1:return a?n(i[0]):n.call(s,i[0]);case 2:return a?n(i[0],i[1]):n.call(s,i[0],i[1]);case 3:return a?n(i[0],i[1],i[2]):n.call(s,i[0],i[1],i[2]);case 4:return a?n(i[0],i[1],i[2],i[3]):n.call(s,i[0],i[1],i[2],i[3])}return n.apply(s,i)}},function(r,o,n){var i=n(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,n){var i=n(10),s=n(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,n){var i=n(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,n){"use strict";var i=n(49),s=n(17),a=n(18),c={};n(5)(c,n(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,n){var i=n(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(n,i){return{value:i,done:!!n}}},function(r,o,n){var i=n(2),s=n(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=n(11)(c)=="process";r.exports=function(){var f,p,d,h=function(){var A,P;for(u&&(A=c.domain)&&A.exit();f;){P=f.fn,f=f.next;try{P()}catch(g){throw f?d():p=void 0,g}}p=void 0,A&&A.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var w=!0,T=document.createTextNode("");new a(h).observe(T,{characterData:!0}),d=function(){T.data=w=!w}}else if(l&&l.resolve){var I=l.resolve();d=function(){I.then(h)}}else d=function(){s.call(i,h)};return function(A){var P={fn:A,next:void 0};p&&(p.next=P),f||(f=P,d()),p=P}}},function(r,o,n){var i=n(3),s=n(50),a=n(22),c=n(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=n(16)("iframe"),h=a.length,w=">";for(d.style.display="none",n(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+w),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,n){var i=n(12),s=n(3),a=n(54);r.exports=n(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,n){var i=n(55),s=n(17),a=n(13),c=n(32),l=n(8),u=n(26),f=Object.getOwnPropertyDescriptor;o.f=n(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,n){var i=n(8),s=n(63),a=n(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,n){var i=n(8),s=n(13),a=n(39)(!1),c=n(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,n){var i=n(53),s=n(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,n){var i=n(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,n){r.exports=n(5)},function(r,o,n){var i=n(9),s=n(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=n(7)(Function.call,n(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,n){"use strict";var i=n(2),s=n(6),a=n(12),c=n(4),l=n(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,n){var i=n(3),s=n(14),a=n(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,n){var i=n(20),s=n(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,n){var i=n(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,n){var i=n(15);r.exports=function(s){return Object(i(s))}},function(r,o,n){var i=n(21),s=n(1)("iterator"),a=n(10);r.exports=n(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,n){"use strict";var i=n(37),s=n(47),a=n(10),c=n(13);r.exports=n(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,n){"use strict";var i,s,a,c=n(28),l=n(2),u=n(7),f=n(21),p=n(23),d=n(9),h=(n(3),n(14)),w=n(38),T=n(40),I=(n(58).set,n(60)),A=n(30).set,P=n(48)(),g="Promise",b=l.TypeError,O=l.process,S=l[g],O=l.process,_=f(O)=="process",U=function(){},J=!!(function(){try{var y=S.resolve(1),v=(y.constructor={})[n(1)("species")]=function(x){x(U,U)};return(_||typeof PromiseRejectionEvent=="function")&&y.then(U)instanceof v}catch{}})(),ge=function(y,v){return y===v||y===S&&v===a},ye=function(y){var v;return!(!d(y)||typeof(v=y.then)!="function")&&v},ne=function(y){return ge(S,y)?new Ne(y):new s(y)},Ne=s=function(y){var v,x;this.promise=new y(function(N,Z){if(v!==void 0||x!==void 0)throw b("Bad Promise constructor");v=N,x=Z}),this.resolve=h(v),this.reject=h(x)},Ot=function(y){try{y()}catch(v){return{error:v}}},gt=function(y,v){if(!y._n){y._n=!0;var x=y._c;P(function(){for(var N=y._v,Z=y._s==1,yt=0,Lt=function(Je){var be,zn,gn=Z?Je.ok:Je.fail,yn=Je.resolve,_t=Je.reject,er=Je.domain;try{gn?(Z||(y._h==2&&qe(y),y._h=1),gn===!0?be=N:(er&&er.enter(),be=gn(N),er&&er.exit()),be===Je.promise?_t(b("Promise-chain cycle")):(zn=ye(be))?zn.call(be,yn,_t):yn(be)):_t(N)}catch(Ha){_t(Ha)}};x.length>yt;)Lt(x[yt++]);y._c=[],y._n=!1,v&&!y._h&&mn(y)})}},mn=function(y){A.call(l,function(){var v,x,N,Z=y._v;if(re(y)&&(v=Ot(function(){_?O.emit("unhandledRejection",Z,y):(x=l.onunhandledrejection)?x({promise:y,reason:Z}):(N=l.console)&&N.error&&N.error("Unhandled promise rejection",Z)}),y._h=_||re(y)?2:1),y._a=void 0,v)throw v.error})},re=function(y){if(y._h==1)return!1;for(var v,x=y._a||y._c,N=0;x.length>N;)if(v=x[N++],v.fail||!re(v.promise))return!1;return!0},qe=function(y){A.call(l,function(){var v;_?O.emit("rejectionHandled",y):(v=l.onrejectionhandled)&&v({promise:y,reason:y._v})})},ae=function(y){var v=this;v._d||(v._d=!0,v=v._w||v,v._v=y,v._s=2,v._a||(v._a=v._c.slice()),gt(v,!0))},hn=function(y){var v,x=this;if(!x._d){x._d=!0,x=x._w||x;try{if(x===y)throw b("Promise can't be resolved itself");(v=ye(y))?P(function(){var N={_w:x,_d:!1};try{v.call(y,u(hn,N,1),u(ae,N,1))}catch(Z){ae.call(N,Z)}}):(x._v=y,x._s=1,gt(x,!1))}catch(N){ae.call({_w:x,_d:!1},N)}}};J||(S=function(y){w(this,S,g,"_h"),h(y),i.call(this);try{y(u(hn,this,1),u(ae,this,1))}catch(v){ae.call(this,v)}},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=n(56)(S.prototype,{then:function(y,v){var x=ne(I(this,S));return x.ok=typeof y!="function"||y,x.fail=typeof v=="function"&&v,x.domain=_?O.domain:void 0,this._c.push(x),this._a&&this._a.push(x),this._s&&gt(this,!1),x.promise},catch:function(y){return this.then(void 0,y)}}),Ne=function(){var y=new i;this.promise=y,this.resolve=u(hn,y,1),this.reject=u(ae,y,1)}),p(p.G+p.W+p.F*!J,{Promise:S}),n(18)(S,g),n(59)(g),a=n(6)[g],p(p.S+p.F*!J,g,{reject:function(y){var v=ne(this),x=v.reject;return x(y),v.promise}}),p(p.S+p.F*(c||!J),g,{resolve:function(y){if(y instanceof S&&ge(y.constructor,this))return y;var v=ne(this),x=v.resolve;return x(y),v.promise}}),p(p.S+p.F*!(J&&n(46)(function(y){S.all(y).catch(U)})),g,{all:function(y){var v=this,x=ne(v),N=x.resolve,Z=x.reject,yt=Ot(function(){var Lt=[],Je=0,be=1;T(y,!1,function(zn){var gn=Je++,yn=!1;Lt.push(void 0),be++,v.resolve(zn).then(function(_t){yn||(yn=!0,Lt[gn]=_t,--be||N(Lt))},Z)}),--be||N(Lt)});return yt&&Z(yt.error),x.promise},race:function(y){var v=this,x=ne(v),N=x.reject,Z=Ot(function(){T(y,!1,function(yt){v.resolve(yt).then(x.resolve,N)})});return Z&&N(Z.error),x.promise}})},function(r,o,n){"use strict";var i=n(61)(!0);n(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,n){n(65);for(var i=n(2),s=n(5),a=n(10),c=n(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 Fs={};Qa(Fs,{initTray:()=>To,killTray:()=>Gn,openBrowser:()=>Vn,showTrayNotification:()=>Ao,updateTrayTooltip:()=>Ir});function _s(e){for(let t of e)try{if(rn.default.existsSync(t))return t}catch{}return null}function kl(){if(process.platform==="win32"){for(let e of Ds)try{if(rn.default.existsSync(e))return rn.default.readFileSync(e).toString("base64")}catch{}return Ls}return Ls}function Il(){if(process.env.NREMOTE_DESKTOP)return!1;let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function Bs(){let{port:e,tunnelUrl:t,running:r}=on,o=r?t?"Tunnel ON":"Local only":"Idle",n=`http://localhost:${e}`;return`9Remote \u2022 ${o}
5
5
  Local: ${n}
6
- Right-click to open / quit`}function Bs(){let{port:e,tunnelUrl:t}=on,r=process.platform==="win32",o=t?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:Pl(),title:r?`9Remote - Port ${e}`:"",tooltip:Ds(),items:[{title:o,tooltip:t||`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 Il(){try{let e=require(_e.default.join($s,"systray2"));return e.default?.default||e.default||e}catch{return null}}function Ol({port:e,onQuit:t,onOpenUI:r}){let o=Ls(Ns),n=Ls(Rl);if(!o||!n)return null;let i;try{i=(0,Ve.spawn)("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-InputFormat","Text","-OutputFormat","Text","-File",n,"-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 _s.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&&(t?.(),Gn(),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 To({port:e,onQuit:t,onOpenUI:r}){if(!kl())return null;if(process.platform==="win32")return on={port:e,tunnelUrl:"",running:!0},te=Ol({port:e,onQuit:t,onOpenUI:r}),te;try{let o=Il();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=_e.default.join($s,"systray2","traybin",i);if(!rn.default.existsSync(s))return null;if(process.platform!=="win32")try{rn.default.chmodSync(s,493)}catch{}return on={port:e,tunnelUrl:"",running:!0},te=new o({menu:Bs(),debug:!1,copyDir:!0}),te.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(t?.(),Gn(),setTimeout(()=>process.exit(0),500))}),typeof te.ready=="function"?te.ready().catch(()=>{}):(te.onReady(()=>{}),te.onError(()=>{})),te}catch{return null}}function Ir({tunnelUrl:e,running:t}={}){if(e!==void 0&&(on.tunnelUrl=e),t!==void 0&&(on.running=t),!!te){if(te._isWin){te._setTooltip?.(Ds());return}try{te.sendAction({type:"update-menu",menu:Bs(),seq_id:-1})}catch{}}}function Gn(){let e=te;if(te=null,e)try{e.kill(!0)}catch{}}function Ao({title:e="9Remote",message:t}){let r=process.platform;if(t){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;"),n=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(t)}</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('${n(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${n(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 = '${n(e)}';`,`$n.BalloonTipText = '${n(t)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,Ve.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,'\\"'),n=`display notification "${o(t)}" with title "${o(e)}"`;(0,Ve.spawn)("osascript",["-e",n],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,Ve.spawn)("notify-send",[e,t],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function Vn(e){let t=process.platform;if(t==="win32"){try{(0,Ve.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,Ve.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(t==="darwin"){try{(0,Ve.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,n]of r)try{(0,Ve.spawn)(o,n,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var Ve,_s,rn,_e,Cs,Ms,$s,te,on,kr,Os,Ns,Rl,sn=Ya(()=>{Ve=require("child_process"),_s=R(require("readline"),1),rn=R(require("fs"),1),_e=R(require("path"),1),Cs=R(require("os"),1),Ms=require("url"),$s=(0,_e.join)(Cs.default.homedir(),".9remote","runtime","node_modules"),te=null,on={port:0,tunnelUrl:"",running:!1},kr=_e.default.dirname((0,Ms.fileURLToPath)(__importMetaUrl)),Os="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",Ns=[_e.default.join(kr,"assets","trayIcon.ico"),_e.default.join(kr,"..","assets","trayIcon.ico")],Rl=[_e.default.join(kr,"assets","tray.ps1"),_e.default.join(kr,"..","assets","tray.ps1")]});var Lo=ue((Pp,ra)=>{ra.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var sa=ue((kp,ia)=>{var Hl=Lo();function oa(e){this.mode=Hl.MODE_8BIT_BYTE,this.data=e}oa.prototype={getLength:function(){return this.data.length},write:function(e){for(var t=0;t<this.data.length;t++)e.put(this.data.charCodeAt(t),8)}};ia.exports=oa});var _o=ue((Ip,aa)=>{var Ae={glog:function(e){if(e<1)throw new Error("glog("+e+")");return Ae.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return Ae.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(j=0;j<8;j++)Ae.EXP_TABLE[j]=1<<j;var j;for(j=8;j<256;j++)Ae.EXP_TABLE[j]=Ae.EXP_TABLE[j-4]^Ae.EXP_TABLE[j-5]^Ae.EXP_TABLE[j-6]^Ae.EXP_TABLE[j-8];var j;for(j=0;j<255;j++)Ae.LOG_TABLE[Ae.EXP_TABLE[j]]=j;var j;aa.exports=Ae});var Co=ue((Op,ca)=>{var It=_o();function Mr(e,t){if(e.length===void 0)throw new Error(e.length+"/"+t);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+t);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}Mr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var t=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)t[r+o]^=It.gexp(It.glog(this.get(r))+It.glog(e.get(o)));return new Mr(t,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var t=It.glog(this.get(0))-It.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var n=0;n<e.getLength();n++)r[n]^=It.gexp(It.glog(e.get(n))+t);return new Mr(r,0).mod(e)}};ca.exports=Mr});var ua=ue((Lp,la)=>{la.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var da=ue((_p,pa)=>{var he=Lo(),fa=Co(),Wl=_o(),pt=ua(),q={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 t=e<<10;q.getBCHDigit(t)-q.getBCHDigit(q.G15)>=0;)t^=q.G15<<q.getBCHDigit(t)-q.getBCHDigit(q.G15);return(e<<10|t)^q.G15_MASK},getBCHTypeNumber:function(e){for(var t=e<<12;q.getBCHDigit(t)-q.getBCHDigit(q.G18)>=0;)t^=q.G18<<q.getBCHDigit(t)-q.getBCHDigit(q.G18);return e<<12|t},getBCHDigit:function(e){for(var t=0;e!==0;)t++,e>>>=1;return t},getPatternPosition:function(e){return q.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,t,r){switch(e){case pt.PATTERN000:return(t+r)%2===0;case pt.PATTERN001:return t%2===0;case pt.PATTERN010:return r%3===0;case pt.PATTERN011:return(t+r)%3===0;case pt.PATTERN100:return(Math.floor(t/2)+Math.floor(r/3))%2===0;case pt.PATTERN101:return t*r%2+t*r%3===0;case pt.PATTERN110:return(t*r%2+t*r%3)%2===0;case pt.PATTERN111:return(t*r%3+(t+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var t=new fa([1],0),r=0;r<e;r++)t=t.multiply(new fa([1,Wl.gexp(r)],0));return t},getLengthInBits:function(e,t){if(1<=t&&t<10)switch(e){case he.MODE_NUMBER:return 10;case he.MODE_ALPHA_NUM:return 9;case he.MODE_8BIT_BYTE:return 8;case he.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(t<27)switch(e){case he.MODE_NUMBER:return 12;case he.MODE_ALPHA_NUM:return 11;case he.MODE_8BIT_BYTE:return 16;case he.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(t<41)switch(e){case he.MODE_NUMBER:return 14;case he.MODE_ALPHA_NUM:return 13;case he.MODE_8BIT_BYTE:return 16;case he.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+t)},getLostPoint:function(e){var t=e.getModuleCount(),r=0,o=0,n=0;for(o=0;o<t;o++)for(n=0;n<t;n++){for(var i=0,s=e.isDark(o,n),a=-1;a<=1;a++)if(!(o+a<0||t<=o+a))for(var c=-1;c<=1;c++)n+c<0||t<=n+c||a===0&&c===0||s===e.isDark(o+a,n+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<t-1;o++)for(n=0;n<t-1;n++){var l=0;e.isDark(o,n)&&l++,e.isDark(o+1,n)&&l++,e.isDark(o,n+1)&&l++,e.isDark(o+1,n+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<t;o++)for(n=0;n<t-6;n++)e.isDark(o,n)&&!e.isDark(o,n+1)&&e.isDark(o,n+2)&&e.isDark(o,n+3)&&e.isDark(o,n+4)&&!e.isDark(o,n+5)&&e.isDark(o,n+6)&&(r+=40);for(n=0;n<t;n++)for(o=0;o<t-6;o++)e.isDark(o,n)&&!e.isDark(o+1,n)&&e.isDark(o+2,n)&&e.isDark(o+3,n)&&e.isDark(o+4,n)&&!e.isDark(o+5,n)&&e.isDark(o+6,n)&&(r+=40);var u=0;for(n=0;n<t;n++)for(o=0;o<t;o++)e.isDark(o,n)&&u++;var f=Math.abs(100*u/t/t-50)/5;return r+=f*10,r}};pa.exports=q});var Mo=ue((Cp,ma)=>{ma.exports={L:1,M:0,Q:3,H:2}});var ga=ue((Mp,ha)=>{var $r=Mo();function Ce(e,t){this.totalCount=e,this.dataCount=t}Ce.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]];Ce.getRSBlocks=function(e,t){var r=Ce.getRsBlockTable(e,t);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+t);for(var o=r.length/3,n=[],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++)n.push(new Ce(a,c));return n};Ce.getRsBlockTable=function(e,t){switch(t){case $r.L:return Ce.RS_BLOCK_TABLE[(e-1)*4+0];case $r.M:return Ce.RS_BLOCK_TABLE[(e-1)*4+1];case $r.Q:return Ce.RS_BLOCK_TABLE[(e-1)*4+2];case $r.H:return Ce.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};ha.exports=Ce});var va=ue(($p,wa)=>{function ya(){this.buffer=[],this.length=0}ya.prototype={get:function(e){var t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(var r=0;r<t;r++)this.putBit((e>>>t-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};wa.exports=ya});var Aa=ue((Np,Ta)=>{var jl=sa(),dt=da(),Gl=Co(),Ea=ga(),Sa=va();function Me(e,t){this.typeNumber=e,this.errorCorrectLevel=t,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Me.prototype={addData:function(e){var t=new jl(e);this.dataList.push(t),this.dataCache=null},isDark:function(e,t){if(e<0||this.moduleCount<=e||t<0||this.moduleCount<=t)throw new Error(e+","+t);return this.modules[e][t]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var t=Ea.getRSBlocks(e,this.errorCorrectLevel),r=new Sa,o=0,n=0;n<t.length;n++)o+=t[n].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),dt.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,t){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,t),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Me.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,t)},setupPositionProbePattern:function(e,t){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)t+o<=-1||this.moduleCount<=t+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][t+o]=!0:this.modules[e+r][t+o]=!1)},getBestMaskPattern:function(){for(var e=0,t=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=dt.getLostPoint(this);(r===0||e>o)&&(e=o,t=r)}return t},createMovieClip:function(e,t,r){var o=e.createEmptyMovieClip(t,r),n=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*n,a=0;a<this.modules[i].length;a++){var c=a*n,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+n,s),o.lineTo(c+n,s+n),o.lineTo(c,s+n),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 t=8;t<this.moduleCount-8;t++)this.modules[6][t]===null&&(this.modules[6][t]=t%2===0)},setupPositionAdjustPattern:function(){for(var e=dt.getPatternPosition(this.typeNumber),t=0;t<e.length;t++)for(var r=0;r<e.length;r++){var o=e[t],n=e[r];if(this.modules[o][n]===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][n+s]=!0:this.modules[o+i][n+s]=!1}},setupTypeNumber:function(e){for(var t=dt.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(t>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var n=0;n<18;n++)r=!e&&(t>>n&1)===1,this.modules[n%3+this.moduleCount-8-3][Math.floor(n/3)]=r},setupTypeInfo:function(e,t){for(var r=this.errorCorrectLevel<<3|t,o=dt.getBCHTypeInfo(r),n,i=0;i<15;i++)n=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=n:i<8?this.modules[i+1][8]=n:this.modules[this.moduleCount-15+i][8]=n;for(var s=0;s<15;s++)n=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=n:s<9?this.modules[8][15-s-1+1]=n:this.modules[8][15-s-1]=n;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,t){for(var r=-1,o=this.moduleCount-1,n=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]>>>n&1)===1);var l=dt.getMask(t,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,n--,n===-1&&(i++,n=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};Me.PAD0=236;Me.PAD1=17;Me.createData=function(e,t,r){for(var o=Ea.getRSBlocks(e,t),n=new Sa,i=0;i<r.length;i++){var s=r[i];n.put(s.mode,4),n.put(s.getLength(),dt.getLengthInBits(s.mode,e)),s.write(n)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(n.getLengthInBits()>a*8)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+a*8+")");for(n.getLengthInBits()+4<=a*8&&n.put(0,4);n.getLengthInBits()%8!==0;)n.putBit(!1);for(;!(n.getLengthInBits()>=a*8||(n.put(Me.PAD0,8),n.getLengthInBits()>=a*8));)n.put(Me.PAD1,8);return Me.createBytes(n,o)};Me.createBytes=function(e,t){for(var r=0,o=0,n=0,i=new Array(t.length),s=new Array(t.length),a=0;a<t.length;a++){var c=t[a].dataCount,l=t[a].totalCount-c;o=Math.max(o,c),n=Math.max(n,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=dt.getErrorCorrectPolynomial(l),p=new Gl(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 w=h+d.getLength()-s[a].length;s[a][h]=w>=0?d.get(w):0}}for(var S=0,O=0;O<t.length;O++)S+=t[O].totalCount;for(var A=new Array(S),P=0,g=0;g<o;g++)for(var b=0;b<t.length;b++)g<i[b].length&&(A[P++]=i[b][g]);for(var T=0;T<n;T++)for(var I=0;I<t.length;I++)T<s[I].length&&(A[P++]=s[I][T]);return A};Ta.exports=Me});var Ra=ue((Dp,xa)=>{var Vl=Aa(),ba=Mo(),Yl="\x1B[40m \x1B[0m",Nr="\x1B[47m \x1B[0m",Xl=function(e){return e?Yl:Nr},$o=function(e){return{times:function(t){return new Array(t).join(e)}}},Ql=function(e,t){for(var r=new Array(e),o=0;o<e;o++)r[o]=t;return r};xa.exports={error:ba.L,generate:function(e,t,r){typeof t=="function"&&(r=t,t={});var o=new Vl(-1,this.error);o.addData(e),o.make();var n="";if(t&&t.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(Ql(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=$o(u.BLACK_WHITE).times(a+3),p=$o(u.WHITE_BLACK).times(a+3);n+=f+`
6
+ Right-click to open / quit`}function Us(){let{port:e,tunnelUrl:t}=on,r=process.platform==="win32",o=t?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:kl(),title:r?`9Remote - Port ${e}`:"",tooltip:Bs(),items:[{title:o,tooltip:t||`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 Ol(){try{let e=require(_e.default.join(Ns,"systray2"));return e.default?.default||e.default||e}catch{return null}}function Ll({port:e,onQuit:t,onOpenUI:r}){let o=_s(Ds),n=_s(Pl);if(!o||!n)return null;let i;try{i=(0,Ve.spawn)("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-InputFormat","Text","-OutputFormat","Text","-File",n,"-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 Cs.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&&(t?.(),Gn(),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 To({port:e,onQuit:t,onOpenUI:r}){if(!Il())return null;if(process.platform==="win32")return on={port:e,tunnelUrl:"",running:!0},te=Ll({port:e,onQuit:t,onOpenUI:r}),te;try{let o=Ol();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=_e.default.join(Ns,"systray2","traybin",i);if(!rn.default.existsSync(s))return null;if(process.platform!=="win32")try{rn.default.chmodSync(s,493)}catch{}return on={port:e,tunnelUrl:"",running:!0},te=new o({menu:Us(),debug:!1,copyDir:!0}),te.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(t?.(),Gn(),setTimeout(()=>process.exit(0),500))}),typeof te.ready=="function"?te.ready().catch(()=>{}):(te.onReady(()=>{}),te.onError(()=>{})),te}catch{return null}}function Ir({tunnelUrl:e,running:t}={}){if(e!==void 0&&(on.tunnelUrl=e),t!==void 0&&(on.running=t),!!te){if(te._isWin){te._setTooltip?.(Bs());return}try{te.sendAction({type:"update-menu",menu:Us(),seq_id:-1})}catch{}}}function Gn(){let e=te;if(te=null,e)try{e.kill(!0)}catch{}}function Ao({title:e="9Remote",message:t}){let r=process.platform;if(t){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;"),n=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(t)}</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('${n(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${n(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 = '${n(e)}';`,`$n.BalloonTipText = '${n(t)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,Ve.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,'\\"'),n=`display notification "${o(t)}" with title "${o(e)}"`;(0,Ve.spawn)("osascript",["-e",n],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,Ve.spawn)("notify-send",[e,t],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function Vn(e){let t=process.platform;if(t==="win32"){try{(0,Ve.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,Ve.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(t==="darwin"){try{(0,Ve.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,n]of r)try{(0,Ve.spawn)(o,n,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var Ve,Cs,rn,_e,Ms,$s,Ns,te,on,kr,Ls,Ds,Pl,sn=Xa(()=>{Ve=require("child_process"),Cs=R(require("readline"),1),rn=R(require("fs"),1),_e=R(require("path"),1),Ms=R(require("os"),1),$s=require("url"),Ns=(0,_e.join)(Ms.default.homedir(),".9remote","runtime","node_modules"),te=null,on={port:0,tunnelUrl:"",running:!1},kr=_e.default.dirname((0,$s.fileURLToPath)(__importMetaUrl)),Ls="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",Ds=[_e.default.join(kr,"assets","trayIcon.ico"),_e.default.join(kr,"..","assets","trayIcon.ico")],Pl=[_e.default.join(kr,"assets","tray.ps1"),_e.default.join(kr,"..","assets","tray.ps1")]});var Lo=ue((kp,oa)=>{oa.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var aa=ue((Ip,sa)=>{var Wl=Lo();function ia(e){this.mode=Wl.MODE_8BIT_BYTE,this.data=e}ia.prototype={getLength:function(){return this.data.length},write:function(e){for(var t=0;t<this.data.length;t++)e.put(this.data.charCodeAt(t),8)}};sa.exports=ia});var _o=ue((Op,ca)=>{var Ae={glog:function(e){if(e<1)throw new Error("glog("+e+")");return Ae.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return Ae.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(j=0;j<8;j++)Ae.EXP_TABLE[j]=1<<j;var j;for(j=8;j<256;j++)Ae.EXP_TABLE[j]=Ae.EXP_TABLE[j-4]^Ae.EXP_TABLE[j-5]^Ae.EXP_TABLE[j-6]^Ae.EXP_TABLE[j-8];var j;for(j=0;j<255;j++)Ae.LOG_TABLE[Ae.EXP_TABLE[j]]=j;var j;ca.exports=Ae});var Co=ue((Lp,la)=>{var It=_o();function Mr(e,t){if(e.length===void 0)throw new Error(e.length+"/"+t);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+t);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}Mr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var t=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)t[r+o]^=It.gexp(It.glog(this.get(r))+It.glog(e.get(o)));return new Mr(t,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var t=It.glog(this.get(0))-It.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var n=0;n<e.getLength();n++)r[n]^=It.gexp(It.glog(e.get(n))+t);return new Mr(r,0).mod(e)}};la.exports=Mr});var fa=ue((_p,ua)=>{ua.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var ma=ue((Cp,da)=>{var he=Lo(),pa=Co(),jl=_o(),pt=fa(),q={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 t=e<<10;q.getBCHDigit(t)-q.getBCHDigit(q.G15)>=0;)t^=q.G15<<q.getBCHDigit(t)-q.getBCHDigit(q.G15);return(e<<10|t)^q.G15_MASK},getBCHTypeNumber:function(e){for(var t=e<<12;q.getBCHDigit(t)-q.getBCHDigit(q.G18)>=0;)t^=q.G18<<q.getBCHDigit(t)-q.getBCHDigit(q.G18);return e<<12|t},getBCHDigit:function(e){for(var t=0;e!==0;)t++,e>>>=1;return t},getPatternPosition:function(e){return q.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,t,r){switch(e){case pt.PATTERN000:return(t+r)%2===0;case pt.PATTERN001:return t%2===0;case pt.PATTERN010:return r%3===0;case pt.PATTERN011:return(t+r)%3===0;case pt.PATTERN100:return(Math.floor(t/2)+Math.floor(r/3))%2===0;case pt.PATTERN101:return t*r%2+t*r%3===0;case pt.PATTERN110:return(t*r%2+t*r%3)%2===0;case pt.PATTERN111:return(t*r%3+(t+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var t=new pa([1],0),r=0;r<e;r++)t=t.multiply(new pa([1,jl.gexp(r)],0));return t},getLengthInBits:function(e,t){if(1<=t&&t<10)switch(e){case he.MODE_NUMBER:return 10;case he.MODE_ALPHA_NUM:return 9;case he.MODE_8BIT_BYTE:return 8;case he.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(t<27)switch(e){case he.MODE_NUMBER:return 12;case he.MODE_ALPHA_NUM:return 11;case he.MODE_8BIT_BYTE:return 16;case he.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(t<41)switch(e){case he.MODE_NUMBER:return 14;case he.MODE_ALPHA_NUM:return 13;case he.MODE_8BIT_BYTE:return 16;case he.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+t)},getLostPoint:function(e){var t=e.getModuleCount(),r=0,o=0,n=0;for(o=0;o<t;o++)for(n=0;n<t;n++){for(var i=0,s=e.isDark(o,n),a=-1;a<=1;a++)if(!(o+a<0||t<=o+a))for(var c=-1;c<=1;c++)n+c<0||t<=n+c||a===0&&c===0||s===e.isDark(o+a,n+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<t-1;o++)for(n=0;n<t-1;n++){var l=0;e.isDark(o,n)&&l++,e.isDark(o+1,n)&&l++,e.isDark(o,n+1)&&l++,e.isDark(o+1,n+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<t;o++)for(n=0;n<t-6;n++)e.isDark(o,n)&&!e.isDark(o,n+1)&&e.isDark(o,n+2)&&e.isDark(o,n+3)&&e.isDark(o,n+4)&&!e.isDark(o,n+5)&&e.isDark(o,n+6)&&(r+=40);for(n=0;n<t;n++)for(o=0;o<t-6;o++)e.isDark(o,n)&&!e.isDark(o+1,n)&&e.isDark(o+2,n)&&e.isDark(o+3,n)&&e.isDark(o+4,n)&&!e.isDark(o+5,n)&&e.isDark(o+6,n)&&(r+=40);var u=0;for(n=0;n<t;n++)for(o=0;o<t;o++)e.isDark(o,n)&&u++;var f=Math.abs(100*u/t/t-50)/5;return r+=f*10,r}};da.exports=q});var Mo=ue((Mp,ha)=>{ha.exports={L:1,M:0,Q:3,H:2}});var ya=ue(($p,ga)=>{var $r=Mo();function Ce(e,t){this.totalCount=e,this.dataCount=t}Ce.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]];Ce.getRSBlocks=function(e,t){var r=Ce.getRsBlockTable(e,t);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+t);for(var o=r.length/3,n=[],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++)n.push(new Ce(a,c));return n};Ce.getRsBlockTable=function(e,t){switch(t){case $r.L:return Ce.RS_BLOCK_TABLE[(e-1)*4+0];case $r.M:return Ce.RS_BLOCK_TABLE[(e-1)*4+1];case $r.Q:return Ce.RS_BLOCK_TABLE[(e-1)*4+2];case $r.H:return Ce.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};ga.exports=Ce});var Ea=ue((Np,va)=>{function wa(){this.buffer=[],this.length=0}wa.prototype={get:function(e){var t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(var r=0;r<t;r++)this.putBit((e>>>t-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};va.exports=wa});var ba=ue((Dp,Aa)=>{var Gl=aa(),dt=ma(),Vl=Co(),Sa=ya(),Ta=Ea();function Me(e,t){this.typeNumber=e,this.errorCorrectLevel=t,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Me.prototype={addData:function(e){var t=new Gl(e);this.dataList.push(t),this.dataCache=null},isDark:function(e,t){if(e<0||this.moduleCount<=e||t<0||this.moduleCount<=t)throw new Error(e+","+t);return this.modules[e][t]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var t=Sa.getRSBlocks(e,this.errorCorrectLevel),r=new Ta,o=0,n=0;n<t.length;n++)o+=t[n].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),dt.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,t){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,t),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Me.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,t)},setupPositionProbePattern:function(e,t){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)t+o<=-1||this.moduleCount<=t+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][t+o]=!0:this.modules[e+r][t+o]=!1)},getBestMaskPattern:function(){for(var e=0,t=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=dt.getLostPoint(this);(r===0||e>o)&&(e=o,t=r)}return t},createMovieClip:function(e,t,r){var o=e.createEmptyMovieClip(t,r),n=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*n,a=0;a<this.modules[i].length;a++){var c=a*n,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+n,s),o.lineTo(c+n,s+n),o.lineTo(c,s+n),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 t=8;t<this.moduleCount-8;t++)this.modules[6][t]===null&&(this.modules[6][t]=t%2===0)},setupPositionAdjustPattern:function(){for(var e=dt.getPatternPosition(this.typeNumber),t=0;t<e.length;t++)for(var r=0;r<e.length;r++){var o=e[t],n=e[r];if(this.modules[o][n]===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][n+s]=!0:this.modules[o+i][n+s]=!1}},setupTypeNumber:function(e){for(var t=dt.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(t>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var n=0;n<18;n++)r=!e&&(t>>n&1)===1,this.modules[n%3+this.moduleCount-8-3][Math.floor(n/3)]=r},setupTypeInfo:function(e,t){for(var r=this.errorCorrectLevel<<3|t,o=dt.getBCHTypeInfo(r),n,i=0;i<15;i++)n=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=n:i<8?this.modules[i+1][8]=n:this.modules[this.moduleCount-15+i][8]=n;for(var s=0;s<15;s++)n=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=n:s<9?this.modules[8][15-s-1+1]=n:this.modules[8][15-s-1]=n;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,t){for(var r=-1,o=this.moduleCount-1,n=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]>>>n&1)===1);var l=dt.getMask(t,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,n--,n===-1&&(i++,n=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};Me.PAD0=236;Me.PAD1=17;Me.createData=function(e,t,r){for(var o=Sa.getRSBlocks(e,t),n=new Ta,i=0;i<r.length;i++){var s=r[i];n.put(s.mode,4),n.put(s.getLength(),dt.getLengthInBits(s.mode,e)),s.write(n)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(n.getLengthInBits()>a*8)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+a*8+")");for(n.getLengthInBits()+4<=a*8&&n.put(0,4);n.getLengthInBits()%8!==0;)n.putBit(!1);for(;!(n.getLengthInBits()>=a*8||(n.put(Me.PAD0,8),n.getLengthInBits()>=a*8));)n.put(Me.PAD1,8);return Me.createBytes(n,o)};Me.createBytes=function(e,t){for(var r=0,o=0,n=0,i=new Array(t.length),s=new Array(t.length),a=0;a<t.length;a++){var c=t[a].dataCount,l=t[a].totalCount-c;o=Math.max(o,c),n=Math.max(n,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=dt.getErrorCorrectPolynomial(l),p=new Vl(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 w=h+d.getLength()-s[a].length;s[a][h]=w>=0?d.get(w):0}}for(var T=0,I=0;I<t.length;I++)T+=t[I].totalCount;for(var A=new Array(T),P=0,g=0;g<o;g++)for(var b=0;b<t.length;b++)g<i[b].length&&(A[P++]=i[b][g]);for(var S=0;S<n;S++)for(var O=0;O<t.length;O++)S<s[O].length&&(A[P++]=s[O][S]);return A};Aa.exports=Me});var Pa=ue((Bp,Ra)=>{var Yl=ba(),xa=Mo(),Xl="\x1B[40m \x1B[0m",Nr="\x1B[47m \x1B[0m",Ql=function(e){return e?Xl:Nr},$o=function(e){return{times:function(t){return new Array(t).join(e)}}},ql=function(e,t){for(var r=new Array(e),o=0;o<e;o++)r[o]=t;return r};Ra.exports={error:xa.L,generate:function(e,t,r){typeof t=="function"&&(r=t,t={});var o=new Yl(-1,this.error);o.addData(e),o.make();var n="";if(t&&t.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(ql(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=$o(u.BLACK_WHITE).times(a+3),p=$o(u.WHITE_BLACK).times(a+3);n+=f+`
8
8
  `;for(var d=0;d<a;d+=2){n+=u.WHITE_ALL;for(var h=0;h<a;h++)c[d][h]===s&&c[d+1][h]===s?n+=u.WHITE_ALL:c[d][h]===s&&c[d+1][h]===i?n+=u.WHITE_BLACK:c[d][h]===i&&c[d+1][h]===s?n+=u.BLACK_WHITE:n+=u.BLACK_ALL;n+=u.WHITE_ALL+`
9
9
  `}l||(n+=p)}else{var w=$o(Nr).times(o.getModuleCount()+3);n+=w+`
10
- `,o.modules.forEach(function(S){n+=Nr,n+=S.map(Xl).join(""),n+=Nr+`
11
- `}),n+=w}r?r(n):console.log(n)},setErrorLevel:function(e){this.error=ba[e]||this.error}}});var nr=require("fs"),vn=require("path"),qo=require("url"),Jo=R(require("os"),1);var tr=R(require("dns"),1),we=R(require("path"),1),Ho=R(require("os"),1),oe="9remote",Fr=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${oe}/latest`,De=`${oe}@latest`,xe=process.env.NREMOTE_HOME||we.default.join(Ho.default.homedir(),".9remote"),G={ROOT:xe,LOGS:we.default.join(xe,"logs"),STATE:we.default.join(xe,"state"),CONFIG:we.default.join(xe,"config"),BIN:we.default.join(xe,"bin"),PIDS:we.default.join(xe,"pids"),BUFFERS:we.default.join(xe,"buffers"),DAEMON:we.default.join(xe,"daemon"),AI_SESSIONS:we.default.join(xe,"ai-sessions"),BACKGROUNDS:we.default.join(xe,"backgrounds")},Wo=new tr.default.promises.Resolver;Wo.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var Ur=tr.default.lookup,qa=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;tr.default.lookup=(e,t,r)=>{if(typeof t=="function"&&(r=t,t={}),e==="localhost"||qa.test(e))return Ur(e,t,r);Wo.resolve4(e).then(o=>{if(!o?.length)return Ur(e,t,r);t.all?r(null,o.map(n=>({address:n,family:4}))):r(null,o[0],4)}).catch(()=>Ur(e,t,r))};var k=2208,jo=process.execPath,Go=(e=process.env)=>process.versions.electron?{...e,ELECTRON_RUN_AS_NODE:"1"}:{...e};var Fo=5173,Ko=3e3;var gu=[`http://localhost:${k}`,`http://127.0.0.1:${k}`,`http://localhost:${Fo}`,`http://127.0.0.1:${Fo}`,`http://localhost:${Ko}`,`http://127.0.0.1:${Ko}`],wn={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},Vo=60,L={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},Yo={showTunnelUrlInMenu:!1};var Xo={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var Qo={checkIntervalMs:3e4,requestTimeoutMs:5e3},ce={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},tunnelRateLimit:{strategy:"exp",baseMs:6e4,maxMs:9e5},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},Ja={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,t={}){return fetch(e,{...t,headers:{...Ja,...t.headers}})}var Za=(0,vn.dirname)((0,qo.fileURLToPath)(__importMetaUrl)),za=[(0,vn.join)(Jo.default.homedir(),".9remote",".env"),(0,vn.join)(Za,"..",".env")];function ec(e){for(let t of e.split(`
12
- `)){let r=t.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 za)if((0,nr.existsSync)(e))try{ec((0,nr.readFileSync)(e,"utf8"))}catch{}for(let[e,t]of Object.entries(Xo))process.env[e]||(process.env[e]=t);var jr=R(require("path"),1),li=R(require("fs"),1),ui=require("url");var zo=R(Zo(),1),Hr=R(require("crypto"),1),{machineIdSync:tc}=zo.default;async function Ct(e=null){let t=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=tc();return Hr.default.createHash("sha256").update(r+t).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),Hr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var ni=R(require("crypto"),1),Eu=process.env.API_KEY_SECRET||process.env.APP_SECRET;var ei="abcdefghijklmnpqrstuvwxyz123456789",nc=8;function ti(){let e="";for(let t=0;t<nc;t++)e+=ei[ni.default.randomInt(ei.length)];return e}function Mt(e){return`sk-${(e||"").slice(0,8).toLowerCase()}-${ti()}-${ti()}`}function rc(e){return/^sk-[a-z0-9]{8}-[a-np-z1-9]{8}-[a-np-z1-9]{8}$/.test(e||"")}function V(e){if(!rc(e))return e||null;let t=e.split("-");return`${t[0]}-${t[1]}-${t[2]}`}function rr(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var fe=R(require("fs"),1),Tn=R(require("path"),1);var le=require("fs"),ri=require("path"),oc=0;function Be(e,t,r={}){let{mode:o=384,spaces:n=2}=r;(0,le.mkdirSync)((0,ri.dirname)(e),{recursive:!0});let i=`${e}.${process.pid}.${++oc}.tmp`;try{(0,le.writeFileSync)(i,JSON.stringify(t,null,n),{mode:o}),(0,le.renameSync)(i,e)}catch(s){try{(0,le.existsSync)(i)&&(0,le.unlinkSync)(i)}catch{}throw s}}function oi(e,t=null){try{return(0,le.existsSync)(e)?JSON.parse((0,le.readFileSync)(e,"utf8")):t}catch{return t}}var xu=G.STATE,Sn=Tn.default.join(G.STATE,"state.json"),Wr=Tn.default.join(G.ROOT,"keys.json"),or=Tn.default.join(G.STATE,"cmd.json"),Ru=Tn.default.join(G.STATE,"settings.json");function An(){for(let e of[G.ROOT,G.STATE])fe.default.existsSync(e)||fe.default.mkdirSync(e,{recursive:!0})}function ii(){try{return An(),fe.default.existsSync(Sn)?JSON.parse(fe.default.readFileSync(Sn,"utf8")):null}catch{return null}}function bn(e){try{An(),Be(Sn,e)}catch(t){console.error("Error saving state:",t)}}function si(){try{fe.default.existsSync(Sn)&&fe.default.unlinkSync(Sn)}catch{}}function ir(){try{return An(),fe.default.existsSync(Wr)?JSON.parse(fe.default.readFileSync(Wr,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function $t(e){try{An(),Be(or,{cmd:e,ts:Date.now()},{spaces:0})}catch{}}function ai(){try{if(!fe.default.existsSync(or))return null;let e=JSON.parse(fe.default.readFileSync(or,"utf8"));return fe.default.unlinkSync(or),e.cmd}catch{return null}}function wt(e,t,r="Default"){try{An();let o={machineId:e,key:t,name:r,createdAt:new Date().toISOString()};return Be(Wr,o),o}catch(o){return console.error("Error saving key:",o),null}}function ci(){return process.env.CODESPACES==="true"}var ic=jr.default.dirname((0,ui.fileURLToPath)(__importMetaUrl));async function Ze(){let e=await Ct();if(ci()&&process.env.NREMOTE_API_KEY)return wt(e,process.env.NREMOTE_API_KEY,"Codespace");let t=ir();if(!t.key){let r=Mt(e);t=wt(e,r,"Default")}return t}function Re(){return"3.0.3"}var Pe=R(require("fs"),1),Gr=R(require("path"),1);var ar=G.LOGS,xn=Gr.default.join(ar,wn.fileName),cr=Gr.default.join(ar,wn.rotatedName),fi=!1,pi=null;function sc(){Pe.default.existsSync(ar)||Pe.default.mkdirSync(ar,{recursive:!0})}function ac(){try{if(Pe.default.statSync(xn).size<wn.maxBytes)return;try{Pe.default.rmSync(cr,{force:!0})}catch{}Pe.default.renameSync(xn,cr)}catch{}}function cc(){try{let e=Pe.default.statSync(cr);Date.now()-e.mtimeMs>wn.cleanupAfterDays*864e5&&Pe.default.rmSync(cr,{force:!0})}catch{}}function Vr(e){try{ac(),Pe.default.appendFileSync(xn,e+`
13
- `)}catch{}}function sr(e){return e.map(t=>{if(t instanceof Error)return t.stack||t.message;if(typeof t=="object")try{return JSON.stringify(t)}catch{return String(t)}return String(t)}).join(" ")}function di(){let e=new Date,t=(r,o=2)=>String(r).padStart(o,"0");return`${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}.${t(e.getMilliseconds(),3)}`}var lc=/\x1b\[[0-9;]*m/g,uc=/https?:\/\/[^\s]+/g;function fc(e){return String(e).replace(lc,"").replace(uc,"").replace(/\s+$/g,"")}function Nt(e,t,r){let o=fc(r);if(!o)return;let n=t==="info"?e:`${e}:${t}`,i=`${di()} [${n}] ${o}`;if(Vr(i),pi)try{pi(i)}catch{}}function pc(){process.on("uncaughtException",e=>Nt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let t=e instanceof Error?e.stack||e.message:String(e);Nt("crash","error",`unhandledRejection: ${t}`)}),process.on("exit",e=>Vr(`${di()} [exit] code=${e} pid=${process.pid}`))}function mi(){fi||(fi=!0,sc(),cc(),Vr(`
14
- === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),pc())}function hi(e=60){try{return Pe.default.readFileSync(xn,"utf8").split(`
15
- `).filter(Boolean).slice(-e)}catch{return[]}}var dc=process.env.NODE_ENV==="development"||process.env.AGENT_DEBUG==="1";function H(e){return{debug:(...t)=>{dc&&Nt(e,"debug",sr(t))},info:(...t)=>Nt(e,"info",sr(t)),warn:(...t)=>Nt(e,"warn",sr(t)),error:(...t)=>Nt(e,"error",sr(t))}}var Rn=xn;var gi=(e=0)=>t=>`\x1B[${t+e}m`,yi=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,wi=(e=0)=>(t,r,o)=>`\x1B[${38+e};2;${t};${r};${o}m`,D={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]}},Nu=Object.keys(D.modifier),mc=Object.keys(D.color),hc=Object.keys(D.bgColor),Du=[...mc,...hc];function gc(){let e=new Map;for(let[t,r]of Object.entries(D)){for(let[o,n]of Object.entries(r))D[o]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[o]=D[o],e.set(n[0],n[1]);Object.defineProperty(D,t,{value:r,enumerable:!1})}return Object.defineProperty(D,"codes",{value:e,enumerable:!1}),D.color.close="\x1B[39m",D.bgColor.close="\x1B[49m",D.color.ansi=gi(),D.color.ansi256=yi(),D.color.ansi16m=wi(),D.bgColor.ansi=gi(10),D.bgColor.ansi256=yi(10),D.bgColor.ansi16m=wi(10),Object.defineProperties(D,{rgbToAnsi256:{value(t,r,o){return t===r&&r===o?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(i=>i+i).join(""));let n=Number.parseInt(o,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:t=>D.rgbToAnsi256(...D.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,o,n;if(t>=232)r=((t-232)*10+8)/255,o=r,n=r;else{t-=16;let a=t%36;r=Math.floor(t/36)/5,o=Math.floor(a/6)/5,n=a%6/5}let i=Math.max(r,o,n)*2;if(i===0)return 30;let s=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(t,r,o)=>D.ansi256ToAnsi(D.rgbToAnsi256(t,r,o)),enumerable:!1},hexToAnsi:{value:t=>D.ansi256ToAnsi(D.hexToAnsi256(t)),enumerable:!1}}),D}var yc=gc(),ve=yc;var ur=R(require("node:process"),1),Ei=R(require("node:os"),1),Yr=R(require("node:tty"),1);function pe(e,t=globalThis.Deno?globalThis.Deno.args:ur.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=t.indexOf(r+e),n=t.indexOf("--");return o!==-1&&(n===-1||o<n)}var{env:B}=ur.default,lr;pe("no-color")||pe("no-colors")||pe("color=false")||pe("color=never")?lr=0:(pe("color")||pe("colors")||pe("color=true")||pe("color=always"))&&(lr=1);function wc(){if("FORCE_COLOR"in B)return B.FORCE_COLOR==="true"?1:B.FORCE_COLOR==="false"?0:B.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(B.FORCE_COLOR,10),3)}function vc(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Ec(e,{streamIsTTY:t,sniffFlags:r=!0}={}){let o=wc();o!==void 0&&(lr=o);let n=r?lr:o;if(n===0)return 0;if(r){if(pe("color=16m")||pe("color=full")||pe("color=truecolor"))return 3;if(pe("color=256"))return 2}if("TF_BUILD"in B&&"AGENT_NAME"in B)return 1;if(e&&!t&&n===void 0)return 0;let i=n||0;if(B.TERM==="dumb")return i;if(ur.default.platform==="win32"){let s=Ei.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in B)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in B)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in B)||B.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in B)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(B.TEAMCITY_VERSION)?1:0;if(B.COLORTERM==="truecolor"||B.TERM==="xterm-kitty"||B.TERM==="xterm-ghostty"||B.TERM==="wezterm")return 3;if("TERM_PROGRAM"in B){let s=Number.parseInt((B.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(B.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(B.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(B.TERM)||"COLORTERM"in B?1:i}function vi(e,t={}){let r=Ec(e,{streamIsTTY:e&&e.isTTY,...t});return vc(r)}var Sc={stdout:vi({isTTY:Yr.default.isatty(1)}),stderr:vi({isTTY:Yr.default.isatty(2)})},Si=Sc;function Ti(e,t,r){let o=e.indexOf(t);if(o===-1)return e;let n=t.length,i=0,s="";do s+=e.slice(i,o)+t+r,i=o+n,o=e.indexOf(t,i);while(o!==-1);return s+=e.slice(i),s}function Ai(e,t,r,o){let n=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(n,s?o-1:o)+t+(s?`\r
10
+ `,o.modules.forEach(function(T){n+=Nr,n+=T.map(Ql).join(""),n+=Nr+`
11
+ `}),n+=w}r?r(n):console.log(n)},setErrorLevel:function(e){this.error=xa[e]||this.error}}});var nr=require("fs"),vn=require("path"),qo=require("url"),Jo=R(require("os"),1);var tr=R(require("dns"),1),we=R(require("path"),1),Ho=R(require("os"),1),oe="9remote",Fr=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${oe}/latest`,De=`${oe}@latest`,xe=process.env.NREMOTE_HOME||we.default.join(Ho.default.homedir(),".9remote"),G={ROOT:xe,LOGS:we.default.join(xe,"logs"),STATE:we.default.join(xe,"state"),CONFIG:we.default.join(xe,"config"),BIN:we.default.join(xe,"bin"),PIDS:we.default.join(xe,"pids"),BUFFERS:we.default.join(xe,"buffers"),DAEMON:we.default.join(xe,"daemon"),AI_SESSIONS:we.default.join(xe,"ai-sessions"),BACKGROUNDS:we.default.join(xe,"backgrounds")},Wo=new tr.default.promises.Resolver;Wo.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var Ur=tr.default.lookup,Ja=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;tr.default.lookup=(e,t,r)=>{if(typeof t=="function"&&(r=t,t={}),e==="localhost"||Ja.test(e))return Ur(e,t,r);Wo.resolve4(e).then(o=>{if(!o?.length)return Ur(e,t,r);t.all?r(null,o.map(n=>({address:n,family:4}))):r(null,o[0],4)}).catch(()=>Ur(e,t,r))};var k=2208,jo=process.execPath,Go=(e=process.env)=>process.versions.electron?{...e,ELECTRON_RUN_AS_NODE:"1"}:{...e};var Fo=5173,Ko=3e3;var yu=[`http://localhost:${k}`,`http://127.0.0.1:${k}`,`http://localhost:${Fo}`,`http://127.0.0.1:${Fo}`,`http://localhost:${Ko}`,`http://127.0.0.1:${Ko}`],wn={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},Vo=60,L={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},Yo={showTunnelUrlInMenu:!1};var Xo={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var Qo={checkIntervalMs:3e4,requestTimeoutMs:5e3},ce={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},tunnelRateLimit:{strategy:"exp",baseMs:6e4,maxMs:9e5},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},Za={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,t={}){return fetch(e,{...t,headers:{...Za,...t.headers}})}var za=(0,vn.dirname)((0,qo.fileURLToPath)(__importMetaUrl)),ec=[(0,vn.join)(Jo.default.homedir(),".9remote",".env"),(0,vn.join)(za,"..",".env")];function tc(e){for(let t of e.split(`
12
+ `)){let r=t.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 ec)if((0,nr.existsSync)(e))try{tc((0,nr.readFileSync)(e,"utf8"))}catch{}for(let[e,t]of Object.entries(Xo))process.env[e]||(process.env[e]=t);var jr=R(require("path"),1),li=R(require("fs"),1),ui=require("url");var zo=R(Zo(),1),Hr=R(require("crypto"),1),{machineIdSync:nc}=zo.default;async function Ct(e=null){let t=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=nc();return Hr.default.createHash("sha256").update(r+t).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),Hr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var ni=R(require("crypto"),1),Su=process.env.API_KEY_SECRET||process.env.APP_SECRET;var ei="abcdefghijklmnpqrstuvwxyz123456789",rc=8;function ti(){let e="";for(let t=0;t<rc;t++)e+=ei[ni.default.randomInt(ei.length)];return e}function Mt(e){return`sk-${(e||"").slice(0,8).toLowerCase()}-${ti()}-${ti()}`}function oc(e){return/^sk-[a-z0-9]{8}-[a-np-z1-9]{8}-[a-np-z1-9]{8}$/.test(e||"")}function V(e){if(!oc(e))return e||null;let t=e.split("-");return`${t[0]}-${t[1]}-${t[2]}`}function rr(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var fe=R(require("fs"),1),Tn=R(require("path"),1);var le=require("fs"),ri=require("path"),ic=0;function Be(e,t,r={}){let{mode:o=384,spaces:n=2}=r;(0,le.mkdirSync)((0,ri.dirname)(e),{recursive:!0});let i=`${e}.${process.pid}.${++ic}.tmp`;try{(0,le.writeFileSync)(i,JSON.stringify(t,null,n),{mode:o}),(0,le.renameSync)(i,e)}catch(s){try{(0,le.existsSync)(i)&&(0,le.unlinkSync)(i)}catch{}throw s}}function oi(e,t=null){try{return(0,le.existsSync)(e)?JSON.parse((0,le.readFileSync)(e,"utf8")):t}catch{return t}}var Ru=G.STATE,Sn=Tn.default.join(G.STATE,"state.json"),Wr=Tn.default.join(G.ROOT,"keys.json"),or=Tn.default.join(G.STATE,"cmd.json"),Pu=Tn.default.join(G.STATE,"settings.json");function An(){for(let e of[G.ROOT,G.STATE])fe.default.existsSync(e)||fe.default.mkdirSync(e,{recursive:!0})}function ii(){try{return An(),fe.default.existsSync(Sn)?JSON.parse(fe.default.readFileSync(Sn,"utf8")):null}catch{return null}}function bn(e){try{An(),Be(Sn,e)}catch(t){console.error("Error saving state:",t)}}function si(){try{fe.default.existsSync(Sn)&&fe.default.unlinkSync(Sn)}catch{}}function ir(){try{return An(),fe.default.existsSync(Wr)?JSON.parse(fe.default.readFileSync(Wr,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function $t(e){try{An(),Be(or,{cmd:e,ts:Date.now()},{spaces:0})}catch{}}function ai(){try{if(!fe.default.existsSync(or))return null;let e=JSON.parse(fe.default.readFileSync(or,"utf8"));return fe.default.unlinkSync(or),e.cmd}catch{return null}}function wt(e,t,r="Default"){try{An();let o={machineId:e,key:t,name:r,createdAt:new Date().toISOString()};return Be(Wr,o),o}catch(o){return console.error("Error saving key:",o),null}}function ci(){return process.env.CODESPACES==="true"}var sc=jr.default.dirname((0,ui.fileURLToPath)(__importMetaUrl));async function Ze(){let e=await Ct();if(ci()&&process.env.NREMOTE_API_KEY)return wt(e,process.env.NREMOTE_API_KEY,"Codespace");let t=ir();if(!t.key){let r=Mt(e);t=wt(e,r,"Default")}return t}function Re(){return"3.0.4"}var Pe=R(require("fs"),1),Gr=R(require("path"),1);var ar=G.LOGS,xn=Gr.default.join(ar,wn.fileName),cr=Gr.default.join(ar,wn.rotatedName),fi=!1,pi=null;function ac(){Pe.default.existsSync(ar)||Pe.default.mkdirSync(ar,{recursive:!0})}function cc(){try{if(Pe.default.statSync(xn).size<wn.maxBytes)return;try{Pe.default.rmSync(cr,{force:!0})}catch{}Pe.default.renameSync(xn,cr)}catch{}}function lc(){try{let e=Pe.default.statSync(cr);Date.now()-e.mtimeMs>wn.cleanupAfterDays*864e5&&Pe.default.rmSync(cr,{force:!0})}catch{}}function Vr(e){try{cc(),Pe.default.appendFileSync(xn,e+`
13
+ `)}catch{}}function sr(e){return e.map(t=>{if(t instanceof Error)return t.stack||t.message;if(typeof t=="object")try{return JSON.stringify(t)}catch{return String(t)}return String(t)}).join(" ")}function di(){let e=new Date,t=(r,o=2)=>String(r).padStart(o,"0");return`${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}.${t(e.getMilliseconds(),3)}`}var uc=/\x1b\[[0-9;]*m/g,fc=/https?:\/\/[^\s]+/g;function pc(e){return String(e).replace(uc,"").replace(fc,"").replace(/\s+$/g,"")}function Nt(e,t,r){let o=pc(r);if(!o)return;let n=t==="info"?e:`${e}:${t}`,i=`${di()} [${n}] ${o}`;if(Vr(i),pi)try{pi(i)}catch{}}function dc(){process.on("uncaughtException",e=>Nt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let t=e instanceof Error?e.stack||e.message:String(e);Nt("crash","error",`unhandledRejection: ${t}`)}),process.on("exit",e=>Vr(`${di()} [exit] code=${e} pid=${process.pid}`))}function mi(){fi||(fi=!0,ac(),lc(),Vr(`
14
+ === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),dc())}function hi(e=60){try{return Pe.default.readFileSync(xn,"utf8").split(`
15
+ `).filter(Boolean).slice(-e)}catch{return[]}}var mc=process.env.NODE_ENV==="development"||process.env.AGENT_DEBUG==="1";function H(e){return{debug:(...t)=>{mc&&Nt(e,"debug",sr(t))},info:(...t)=>Nt(e,"info",sr(t)),warn:(...t)=>Nt(e,"warn",sr(t)),error:(...t)=>Nt(e,"error",sr(t))}}var Rn=xn;var gi=(e=0)=>t=>`\x1B[${t+e}m`,yi=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,wi=(e=0)=>(t,r,o)=>`\x1B[${38+e};2;${t};${r};${o}m`,D={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]}},Du=Object.keys(D.modifier),hc=Object.keys(D.color),gc=Object.keys(D.bgColor),Bu=[...hc,...gc];function yc(){let e=new Map;for(let[t,r]of Object.entries(D)){for(let[o,n]of Object.entries(r))D[o]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[o]=D[o],e.set(n[0],n[1]);Object.defineProperty(D,t,{value:r,enumerable:!1})}return Object.defineProperty(D,"codes",{value:e,enumerable:!1}),D.color.close="\x1B[39m",D.bgColor.close="\x1B[49m",D.color.ansi=gi(),D.color.ansi256=yi(),D.color.ansi16m=wi(),D.bgColor.ansi=gi(10),D.bgColor.ansi256=yi(10),D.bgColor.ansi16m=wi(10),Object.defineProperties(D,{rgbToAnsi256:{value(t,r,o){return t===r&&r===o?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(i=>i+i).join(""));let n=Number.parseInt(o,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:t=>D.rgbToAnsi256(...D.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,o,n;if(t>=232)r=((t-232)*10+8)/255,o=r,n=r;else{t-=16;let a=t%36;r=Math.floor(t/36)/5,o=Math.floor(a/6)/5,n=a%6/5}let i=Math.max(r,o,n)*2;if(i===0)return 30;let s=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(t,r,o)=>D.ansi256ToAnsi(D.rgbToAnsi256(t,r,o)),enumerable:!1},hexToAnsi:{value:t=>D.ansi256ToAnsi(D.hexToAnsi256(t)),enumerable:!1}}),D}var wc=yc(),ve=wc;var ur=R(require("node:process"),1),Ei=R(require("node:os"),1),Yr=R(require("node:tty"),1);function pe(e,t=globalThis.Deno?globalThis.Deno.args:ur.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=t.indexOf(r+e),n=t.indexOf("--");return o!==-1&&(n===-1||o<n)}var{env:B}=ur.default,lr;pe("no-color")||pe("no-colors")||pe("color=false")||pe("color=never")?lr=0:(pe("color")||pe("colors")||pe("color=true")||pe("color=always"))&&(lr=1);function vc(){if("FORCE_COLOR"in B)return B.FORCE_COLOR==="true"?1:B.FORCE_COLOR==="false"?0:B.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(B.FORCE_COLOR,10),3)}function Ec(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Sc(e,{streamIsTTY:t,sniffFlags:r=!0}={}){let o=vc();o!==void 0&&(lr=o);let n=r?lr:o;if(n===0)return 0;if(r){if(pe("color=16m")||pe("color=full")||pe("color=truecolor"))return 3;if(pe("color=256"))return 2}if("TF_BUILD"in B&&"AGENT_NAME"in B)return 1;if(e&&!t&&n===void 0)return 0;let i=n||0;if(B.TERM==="dumb")return i;if(ur.default.platform==="win32"){let s=Ei.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in B)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in B)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in B)||B.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in B)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(B.TEAMCITY_VERSION)?1:0;if(B.COLORTERM==="truecolor"||B.TERM==="xterm-kitty"||B.TERM==="xterm-ghostty"||B.TERM==="wezterm")return 3;if("TERM_PROGRAM"in B){let s=Number.parseInt((B.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(B.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(B.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(B.TERM)||"COLORTERM"in B?1:i}function vi(e,t={}){let r=Sc(e,{streamIsTTY:e&&e.isTTY,...t});return Ec(r)}var Tc={stdout:vi({isTTY:Yr.default.isatty(1)}),stderr:vi({isTTY:Yr.default.isatty(2)})},Si=Tc;function Ti(e,t,r){let o=e.indexOf(t);if(o===-1)return e;let n=t.length,i=0,s="";do s+=e.slice(i,o)+t+r,i=o+n,o=e.indexOf(t,i);while(o!==-1);return s+=e.slice(i),s}function Ai(e,t,r,o){let n=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(n,s?o-1:o)+t+(s?`\r
16
16
  `:`
17
17
  `)+r,n=o+1,o=e.indexOf(`
18
- `,n)}while(o!==-1);return i+=e.slice(n),i}var{stdout:bi,stderr:xi}=Si,Xr=Symbol("GENERATOR"),Dt=Symbol("STYLER"),Pn=Symbol("IS_EMPTY"),Ri=["ansi","ansi","ansi256","ansi16m"],Bt=Object.create(null),Tc=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=bi?bi.level:0;e.level=t.level===void 0?r:t.level};var Ac=e=>{let t=(...r)=>r.join(" ");return Tc(t,e),Object.setPrototypeOf(t,kn.prototype),t};function kn(e){return Ac(e)}Object.setPrototypeOf(kn.prototype,Function.prototype);for(let[e,t]of Object.entries(ve))Bt[e]={get(){let r=fr(this,qr(t.open,t.close,this[Dt]),this[Pn]);return Object.defineProperty(this,e,{value:r}),r}};Bt.visible={get(){let e=fr(this,this[Dt],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Qr=(e,t,r,...o)=>e==="rgb"?t==="ansi16m"?ve[r].ansi16m(...o):t==="ansi256"?ve[r].ansi256(ve.rgbToAnsi256(...o)):ve[r].ansi(ve.rgbToAnsi(...o)):e==="hex"?Qr("rgb",t,r,...ve.hexToRgb(...o)):ve[r][e](...o),bc=["rgb","hex","ansi256"];for(let e of bc){Bt[e]={get(){let{level:r}=this;return function(...o){let n=qr(Qr(e,Ri[r],"color",...o),ve.color.close,this[Dt]);return fr(this,n,this[Pn])}}};let t="bg"+e[0].toUpperCase()+e.slice(1);Bt[t]={get(){let{level:r}=this;return function(...o){let n=qr(Qr(e,Ri[r],"bgColor",...o),ve.bgColor.close,this[Dt]);return fr(this,n,this[Pn])}}}}var xc=Object.defineProperties(()=>{},{...Bt,level:{enumerable:!0,get(){return this[Xr].level},set(e){this[Xr].level=e}}}),qr=(e,t,r)=>{let o,n;return r===void 0?(o=e,n=t):(o=r.openAll+e,n=t+r.closeAll),{open:e,close:t,openAll:o,closeAll:n,parent:r}},fr=(e,t,r)=>{let o=(...n)=>Rc(o,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(o,xc),o[Xr]=e,o[Dt]=t,o[Pn]=r,o},Rc=(e,t)=>{if(e.level<=0||!t)return e[Pn]?"":t;let r=e[Dt];if(r===void 0)return t;let{openAll:o,closeAll:n}=r;if(t.includes("\x1B"))for(;r!==void 0;)t=Ti(t,r.close,r.open),r=r.parent;let i=t.indexOf(`
19
- `);return i!==-1&&(t=Ai(t,n,o,i)),o+t+n};Object.defineProperties(kn.prototype,Bt);var Pc=kn(),ju=kn({level:xi?xi.level:0});var m=Pc;var Y=require("fs"),Wi=require("url"),Ln=require("child_process"),Ie=R(require("path"),1),Kt=R(require("os"),1);var Ut=R(require("fs"),1),Jr=R(require("path"),1),Pi=R(require("os"),1),ki=require("child_process"),pr=Jr.default.join(Pi.default.homedir(),".9remote","pids");function kc(){try{Ut.default.existsSync(pr)||Ut.default.mkdirSync(pr,{recursive:!0})}catch{}}function Zr(e){return Jr.default.join(pr,`${e}.pid`)}function ze(e,t){if(t)try{kc(),Ut.default.writeFileSync(Zr(e),String(t))}catch{}}function In(e){try{let t=Ut.default.readFileSync(Zr(e),"utf8").trim(),r=parseInt(t,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function Ue(e){try{Ut.default.unlinkSync(Zr(e))}catch{}}function zr(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Ic(e){let t=In(e);if(Ue(e),!t)return!1;try{process.platform==="win32"?(0,ki.execSync)(`taskkill /F /T /PID ${t}`,{stdio:"ignore",windowsHide:!0}):process.kill(t,"SIGKILL")}catch{}return!0}var Oc=["cloudflared","agent"];function Ii(){for(let e of Oc)Ic(e)}function Oi(){return pr}var St=require("child_process"),M=require("fs"),vt=require("path"),to=R(require("os"),1),Et=R(require("path"),1),_i=require("url");var mr=(0,vt.join)(G.LOGS,"autostart.log"),dr="cc.9remote.agent",hr="9Remote",gr=["--tray","--skip-update","--start"],On=to.default.homedir(),Li=Et.default.dirname((0,_i.fileURLToPath)(__importMetaUrl)),z={darwin:(0,vt.join)(On,"Library","LaunchAgents",`${dr}.plist`),linux:(0,vt.join)(On,".config","autostart",`${dr}.desktop`),linuxSystemd:(0,vt.join)(On,".config","systemd","user",`${dr}.service`),win:(0,vt.join)(process.env.APPDATA||"","Microsoft","Windows","Start Menu","Programs","Startup",`${hr}.vbs`)};function et(){for(let e=Li,t=null;e!==t;t=e,e=Et.default.dirname(e)){let r=Et.default.join(e,"package.json");if((0,M.existsSync)(r)){try{let o=JSON.parse((0,M.readFileSync)(r,"utf8"));if(o.name!==oe)continue;let n=typeof o.bin=="string"?o.bin:o.bin?.[oe];if(n){let i=Et.default.resolve(e,n);if((0,M.existsSync)(i))return i}}catch{}break}}return process.argv[1]||Et.default.resolve(Li,"..","index.js")}function ke(){return process.execPath}function Ci(){return process.versions.electron?"env ELECTRON_RUN_AS_NODE=1 ":""}function Mi(e){let t=ke(),r=et();if(process.platform==="win32"){let n=e.join(" "),i=(0,vt.join)(to.default.tmpdir(),`${oe}-launch.vbs`);return(0,M.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${t}"" ""${r}"" ${n}", 0, False
20
- `),(0,St.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,St.spawn)(t,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}function $i(){let e=Et.default.dirname(ke()),t=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/opt/homebrew/bin"];return t.includes(e)||t.unshift(e),t.join(":")}function eo(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Lc(e,t){let r=[e,t,...gr].map(o=>` <string>${eo(o)}</string>`).join(`
18
+ `,n)}while(o!==-1);return i+=e.slice(n),i}var{stdout:bi,stderr:xi}=Si,Xr=Symbol("GENERATOR"),Dt=Symbol("STYLER"),Pn=Symbol("IS_EMPTY"),Ri=["ansi","ansi","ansi256","ansi16m"],Bt=Object.create(null),Ac=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=bi?bi.level:0;e.level=t.level===void 0?r:t.level};var bc=e=>{let t=(...r)=>r.join(" ");return Ac(t,e),Object.setPrototypeOf(t,kn.prototype),t};function kn(e){return bc(e)}Object.setPrototypeOf(kn.prototype,Function.prototype);for(let[e,t]of Object.entries(ve))Bt[e]={get(){let r=fr(this,qr(t.open,t.close,this[Dt]),this[Pn]);return Object.defineProperty(this,e,{value:r}),r}};Bt.visible={get(){let e=fr(this,this[Dt],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Qr=(e,t,r,...o)=>e==="rgb"?t==="ansi16m"?ve[r].ansi16m(...o):t==="ansi256"?ve[r].ansi256(ve.rgbToAnsi256(...o)):ve[r].ansi(ve.rgbToAnsi(...o)):e==="hex"?Qr("rgb",t,r,...ve.hexToRgb(...o)):ve[r][e](...o),xc=["rgb","hex","ansi256"];for(let e of xc){Bt[e]={get(){let{level:r}=this;return function(...o){let n=qr(Qr(e,Ri[r],"color",...o),ve.color.close,this[Dt]);return fr(this,n,this[Pn])}}};let t="bg"+e[0].toUpperCase()+e.slice(1);Bt[t]={get(){let{level:r}=this;return function(...o){let n=qr(Qr(e,Ri[r],"bgColor",...o),ve.bgColor.close,this[Dt]);return fr(this,n,this[Pn])}}}}var Rc=Object.defineProperties(()=>{},{...Bt,level:{enumerable:!0,get(){return this[Xr].level},set(e){this[Xr].level=e}}}),qr=(e,t,r)=>{let o,n;return r===void 0?(o=e,n=t):(o=r.openAll+e,n=t+r.closeAll),{open:e,close:t,openAll:o,closeAll:n,parent:r}},fr=(e,t,r)=>{let o=(...n)=>Pc(o,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(o,Rc),o[Xr]=e,o[Dt]=t,o[Pn]=r,o},Pc=(e,t)=>{if(e.level<=0||!t)return e[Pn]?"":t;let r=e[Dt];if(r===void 0)return t;let{openAll:o,closeAll:n}=r;if(t.includes("\x1B"))for(;r!==void 0;)t=Ti(t,r.close,r.open),r=r.parent;let i=t.indexOf(`
19
+ `);return i!==-1&&(t=Ai(t,n,o,i)),o+t+n};Object.defineProperties(kn.prototype,Bt);var kc=kn(),Gu=kn({level:xi?xi.level:0});var m=kc;var Y=require("fs"),ji=require("url"),Ln=require("child_process"),Ie=R(require("path"),1),Kt=R(require("os"),1);var Ut=R(require("fs"),1),Jr=R(require("path"),1),Pi=R(require("os"),1),ki=require("child_process"),pr=Jr.default.join(Pi.default.homedir(),".9remote","pids");function Ic(){try{Ut.default.existsSync(pr)||Ut.default.mkdirSync(pr,{recursive:!0})}catch{}}function Zr(e){return Jr.default.join(pr,`${e}.pid`)}function ze(e,t){if(t)try{Ic(),Ut.default.writeFileSync(Zr(e),String(t))}catch{}}function In(e){try{let t=Ut.default.readFileSync(Zr(e),"utf8").trim(),r=parseInt(t,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function Ue(e){try{Ut.default.unlinkSync(Zr(e))}catch{}}function zr(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Oc(e){let t=In(e);if(Ue(e),!t)return!1;try{process.platform==="win32"?(0,ki.execSync)(`taskkill /F /T /PID ${t}`,{stdio:"ignore",windowsHide:!0}):process.kill(t,"SIGKILL")}catch{}return!0}var Lc=["cloudflared","agent"];function Ii(){for(let e of Lc)Oc(e)}function Oi(){return pr}var St=require("child_process"),M=require("fs"),vt=require("path"),to=R(require("os"),1),Et=R(require("path"),1),_i=require("url");var mr=(0,vt.join)(G.LOGS,"autostart.log"),dr="cc.9remote.agent",hr="9Remote",gr=["--tray","--skip-update","--start"],On=to.default.homedir(),Li=Et.default.dirname((0,_i.fileURLToPath)(__importMetaUrl)),z={darwin:(0,vt.join)(On,"Library","LaunchAgents",`${dr}.plist`),linux:(0,vt.join)(On,".config","autostart",`${dr}.desktop`),linuxSystemd:(0,vt.join)(On,".config","systemd","user",`${dr}.service`),win:(0,vt.join)(process.env.APPDATA||"","Microsoft","Windows","Start Menu","Programs","Startup",`${hr}.vbs`)};function et(){for(let e=Li,t=null;e!==t;t=e,e=Et.default.dirname(e)){let r=Et.default.join(e,"package.json");if((0,M.existsSync)(r)){try{let o=JSON.parse((0,M.readFileSync)(r,"utf8"));if(o.name!==oe)continue;let n=typeof o.bin=="string"?o.bin:o.bin?.[oe];if(n){let i=Et.default.resolve(e,n);if((0,M.existsSync)(i))return i}}catch{}break}}return process.argv[1]||Et.default.resolve(Li,"..","index.js")}function ke(){return process.execPath}function Ci(){return process.versions.electron?"env ELECTRON_RUN_AS_NODE=1 ":""}function Mi(e){let t=ke(),r=et();if(process.platform==="win32"){let n=e.join(" "),i=(0,vt.join)(to.default.tmpdir(),`${oe}-launch.vbs`);return(0,M.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${t}"" ""${r}"" ${n}", 0, False
20
+ `),(0,St.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,St.spawn)(t,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}function $i(){let e=Et.default.dirname(ke()),t=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/opt/homebrew/bin"];return t.includes(e)||t.unshift(e),t.join(":")}function eo(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function _c(e,t){let r=[e,t,...gr].map(o=>` <string>${eo(o)}</string>`).join(`
21
21
  `);return`<?xml version="1.0" encoding="UTF-8"?>
22
22
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
23
23
  <plist version="1.0">
@@ -45,16 +45,16 @@ ${r}
45
45
  <string>${mr}</string>
46
46
  </dict>
47
47
  </plist>
48
- `}function _c(){return(0,M.existsSync)(z.darwin)}function Cc(){let e=gr.join(" ");return`Set WshShell = CreateObject("WScript.Shell")
48
+ `}function Cc(){return(0,M.existsSync)(z.darwin)}function Mc(){let e=gr.join(" ");return`Set WshShell = CreateObject("WScript.Shell")
49
49
  WshShell.Run """${ke()}"" ""${et()}"" ${e}", 0, False
50
- `}function Mc(){try{(0,St.execFileSync)("reg",["DELETE","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",hr,"/F"],{windowsHide:!0,stdio:"ignore"})}catch{}}function $c(){return(0,M.existsSync)(z.win)}function Nc(){let e=`${ke()} ${et()} ${gr.join(" ")}`;return`[Desktop Entry]
50
+ `}function $c(){try{(0,St.execFileSync)("reg",["DELETE","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",hr,"/F"],{windowsHide:!0,stdio:"ignore"})}catch{}}function Nc(){return(0,M.existsSync)(z.win)}function Dc(){let e=`${ke()} ${et()} ${gr.join(" ")}`;return`[Desktop Entry]
51
51
  Type=Application
52
52
  Name=${hr}
53
53
  Exec=${e}
54
54
  X-GNOME-Autostart-enabled=true
55
55
  NoDisplay=false
56
56
  Terminal=false
57
- `}function Dc(){let e=gr.map(t=>`'${t}'`).join(" ");return`[Unit]
57
+ `}function Bc(){let e=gr.map(t=>`'${t}'`).join(" ");return`[Unit]
58
58
  Description=${hr} Agent
59
59
  After=network-online.target
60
60
  Wants=network-online.target
@@ -71,7 +71,7 @@ StandardError=append:${mr}
71
71
 
72
72
  [Install]
73
73
  WantedBy=default.target
74
- `}function Bc(e){try{return(0,St.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function Uc(){return(0,M.existsSync)(z.linux)||(0,M.existsSync)(z.linuxSystemd)}async function Fc(){try{if(process.platform==="darwin")return _c();if(process.platform==="win32")return await $c();if(process.platform==="linux")return Uc()}catch{}return!1}async function Ni(){try{if(process.platform==="win32"&&Mc(),!await Fc())return!1;if(process.platform==="darwin"){let e=Lc(ke(),et());return((0,M.existsSync)(z.darwin)?(0,M.readFileSync)(z.darwin,"utf8"):"")===e?!1:((0,M.writeFileSync)(z.darwin,e),!0)}if(process.platform==="win32"){let e=Cc();return((0,M.existsSync)(z.win)?(0,M.readFileSync)(z.win,"utf8"):"")===e?!1:((0,M.writeFileSync)(z.win,e),!0)}if(process.platform==="linux"){if((0,M.existsSync)(z.linuxSystemd)){let e=Dc();return(0,M.readFileSync)(z.linuxSystemd,"utf8")===e?!1:((0,M.writeFileSync)(z.linuxSystemd,e),Bc(["daemon-reload"]),!0)}if((0,M.existsSync)(z.linux)){let e=Nc();return(0,M.readFileSync)(z.linux,"utf8")===e?!1:((0,M.writeFileSync)(z.linux,e),!0)}}}catch{}return!1}var qu=process.env.NODE_ENV==="development";var C=process.env.NREMOTE_WORKER_URL||"https://9remote.cc",Di=3e4,Bi=500,no=300,Ee={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},tt={intervalMs:2e3,timeoutMs:12e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},de={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400};var Fe={maxLogLines:200,headerWidth:44},Ft={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"},Ui=5e3,ro=12e4,Fi=1500,Ki=2,Hi=3e4,ie={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var Kc=Ie.default.dirname((0,Wi.fileURLToPath)(__importMetaUrl)),ji=3e3;var wr=2208,oo=Ie.default.join(Kt.default.homedir(),".9remote","cloudflared.pid");function Hc(){try{Ii()}catch{}try{if((0,Y.existsSync)(oo)){let e=parseInt((0,Y.readFileSync)(oo,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,Y.unlinkSync)(oo)}catch{}}}catch{}try{process.platform==="win32"?(0,Ln.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${wr}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,Ln.execSync)(`lsof -ti:${wr} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function Gi(){return"3.0.3"}function Vi(e,t){let r=e.split(".").map(Number),o=t.split(".").map(Number);for(let n=0;n<3;n++){if(o[n]>r[n])return!0;if(o[n]<r[n])return!1}return!1}function Wc(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,Y.existsSync)("/.dockerenv")?"Docker":null}function vr(){Hc()}async function Yi(){try{let e=Gi();if(!e)return null;let t=await K(Fr,{signal:AbortSignal.timeout(ji)});if(!t.ok)return null;let{version:r}=await t.json();return r&&Vi(e,r)?{current:e,latest:r}:null}catch{return null}}var yr=Ie.default.join(G.STATE,Ft.lockFile);function jc(){try{if((0,Y.existsSync)(yr)){let{pid:e,ts:t}=JSON.parse((0,Y.readFileSync)(yr,"utf8")),r=Date.now()-t<Ft.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,Y.writeFileSync)(yr,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function Gc(){try{let e=await K(Fr,{signal:AbortSignal.timeout(ji)});if(!e.ok)return null;let{version:t}=await e.json();return t||null}catch{return null}}function Vc(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function Yc(){let e=et(),t=Ie.default.sep;for(let r of[`${t}lib${t}node_modules${t}`,`${t}node_modules${t}`]){let o=e.indexOf(r);if(o>0)return`--prefix "${e.slice(0,o)}"`}return""}function Xc(){let e=process.env.NREMOTE_NPM_CLI;return e&&(0,Y.existsSync)(e)?process.platform==="win32"?`"${ke()}" "${e}"`:`env ELECTRON_RUN_AS_NODE=1 "${ke()}" "${e}"`:"npm"}function Qc({currentVersion:e,latest:t,agentPid:r}){let o=Oi(),n=Vc(),i=ke(),s=Ci(),a=et(),c=yr,l=`--prefer-online --no-audit --no-fund ${n} ${Yc()}`.trim(),u=Xc();if(process.platform==="win32"){let d=Ie.default.join(Kt.default.tmpdir(),`${oe}-restart.vbs`),h=`@echo off
74
+ `}function Uc(e){try{return(0,St.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function Fc(){return(0,M.existsSync)(z.linux)||(0,M.existsSync)(z.linuxSystemd)}async function Kc(){try{if(process.platform==="darwin")return Cc();if(process.platform==="win32")return await Nc();if(process.platform==="linux")return Fc()}catch{}return!1}async function Ni(){try{if(process.platform==="win32"&&$c(),!await Kc())return!1;if(process.platform==="darwin"){let e=_c(ke(),et());return((0,M.existsSync)(z.darwin)?(0,M.readFileSync)(z.darwin,"utf8"):"")===e?!1:((0,M.writeFileSync)(z.darwin,e),!0)}if(process.platform==="win32"){let e=Mc();return((0,M.existsSync)(z.win)?(0,M.readFileSync)(z.win,"utf8"):"")===e?!1:((0,M.writeFileSync)(z.win,e),!0)}if(process.platform==="linux"){if((0,M.existsSync)(z.linuxSystemd)){let e=Bc();return(0,M.readFileSync)(z.linuxSystemd,"utf8")===e?!1:((0,M.writeFileSync)(z.linuxSystemd,e),Uc(["daemon-reload"]),!0)}if((0,M.existsSync)(z.linux)){let e=Dc();return(0,M.readFileSync)(z.linux,"utf8")===e?!1:((0,M.writeFileSync)(z.linux,e),!0)}}}catch{}return!1}var Ju=process.env.NODE_ENV==="development";var C=process.env.NREMOTE_WORKER_URL||"https://9remote.cc",Di=3e4,Bi=500,no=300,Ee={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},tt={intervalMs:2e3,timeoutMs:12e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},de={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400};var Fe={maxLogLines:200,headerWidth:44},Ft={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"},Ui=5e3,ro=12e4,Fi=1500,Ki=2,Hi=3e4,ie={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var Hc=Ie.default.dirname((0,ji.fileURLToPath)(__importMetaUrl)),Gi=3e3;var wr=2208,oo=Ie.default.join(Kt.default.homedir(),".9remote","cloudflared.pid");function Wc(){try{Ii()}catch{}try{if((0,Y.existsSync)(oo)){let e=parseInt((0,Y.readFileSync)(oo,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,Y.unlinkSync)(oo)}catch{}}}catch{}try{process.platform==="win32"?(0,Ln.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${wr}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,Ln.execSync)(`lsof -ti:${wr} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function Vi(){return"3.0.4"}function Yi(e,t){let r=e.split(".").map(Number),o=t.split(".").map(Number);for(let n=0;n<3;n++){if(o[n]>r[n])return!0;if(o[n]<r[n])return!1}return!1}function jc(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,Y.existsSync)("/.dockerenv")?"Docker":null}function vr(){Wc()}async function Xi(){try{let e=Vi();if(!e)return null;let t=await K(Fr,{signal:AbortSignal.timeout(Gi)});if(!t.ok)return null;let{version:r}=await t.json();return r&&Yi(e,r)?{current:e,latest:r}:null}catch{return null}}var yr=Ie.default.join(G.STATE,Ft.lockFile);function Gc(){try{if((0,Y.existsSync)(yr)){let{pid:e,ts:t}=JSON.parse((0,Y.readFileSync)(yr,"utf8")),r=Date.now()-t<Ft.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,Y.writeFileSync)(yr,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function Vc(){try{let e=await K(Fr,{signal:AbortSignal.timeout(Gi)});if(!e.ok)return null;let{version:t}=await e.json();return t||null}catch{return null}}function Yc(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function Xc(){let e=et(),t=Ie.default.sep,r=`${t}lib${t}node_modules${t}`,o=e.indexOf(r);return o>0?{global:"-g",prefix:`--prefix "${e.slice(0,o)}"`}:(o=e.indexOf(`${t}node_modules${t}`),o>0?{global:"",prefix:`--prefix "${e.slice(0,o)}"`}:{global:"-g",prefix:""})}function Wi(){let e=process.argv.slice(2).filter(r=>r!=="--skip-update");return e.includes("ui")||e.includes("start")||e.some(r=>["--tray","--auto","--start"].includes(r))?`${e.join(" ")} --skip-update`:"--tray --skip-update --start"}function Qc(){let e=process.env.NREMOTE_NPM_CLI;return e&&(0,Y.existsSync)(e)?process.platform==="win32"?`"${ke()}" "${e}"`:`env ELECTRON_RUN_AS_NODE=1 "${ke()}" "${e}"`:"npm"}function qc({currentVersion:e,latest:t,agentPid:r}){let o=Oi(),n=Yc(),i=ke(),s=Ci(),a=et(),c=yr,{global:l,prefix:u}=Xc(),f=`${l} --prefer-online --no-audit --no-fund ${n} ${u}`.trim(),p=Qc();if(process.platform==="win32"){let w=Ie.default.join(Kt.default.tmpdir(),`${oe}-restart.vbs`),T=`@echo off
75
75
  setlocal EnableDelayedExpansion
76
76
  set "NODE=${i}"
77
77
  set "CLI=${a}"
@@ -96,10 +96,10 @@ timeout /t 3 /nobreak >nul
96
96
  set ATTEMPT=0
97
97
  :installloop
98
98
  set /a ATTEMPT+=1
99
- call ${u} install -g ${De} ${l} >nul 2>&1
99
+ call ${p} install ${De} ${f} >nul 2>&1
100
100
  if !ERRORLEVEL! EQU 0 goto verify
101
101
  if !ATTEMPT! GEQ ${Ft.maxRetry} (
102
- call ${u} install -g ${De} ${l} --omit=optional >nul 2>&1
102
+ call ${p} install ${De} ${f} --omit=optional >nul 2>&1
103
103
  goto verify
104
104
  )
105
105
  timeout /t 3 /nobreak >nul
@@ -118,15 +118,15 @@ for /f "usebackq tokens=* delims= " %%V in ("%VERFILE%") do (
118
118
  del /f /q "%VERFILE%" >nul 2>&1
119
119
  if defined NEWVER set "NEWVER=!NEWVER: =!"
120
120
  if not "!NEWVER!"=="${t}" (
121
- call ${u} install -g ${oe}@${e} ${l} >nul 2>&1
121
+ call ${p} install ${oe}@${e} ${f} >nul 2>&1
122
122
  )
123
123
  del /f /q "${c}" >nul 2>&1
124
124
 
125
- wscript "${d}"
125
+ wscript "${w}"
126
126
  exit /b 0
127
- `,w=Ie.default.join(Kt.default.tmpdir(),`${oe}-update.bat`);(0,Y.writeFileSync)(w,h),(0,Y.writeFileSync)(d,'CreateObject("WScript.Shell").Run """%NODE%"" ""%CLI%"" --tray --skip-update --start", 0, False'.replace("%NODE%",i).replace("%CLI%",a)+`
128
- `);let S=Ie.default.join(Kt.default.tmpdir(),`${oe}-update.vbs`);return(0,Y.writeFileSync)(S,`CreateObject("WScript.Shell").Run "cmd /c ""${w}""", 0, False
129
- `),{shellCmd:["wscript.exe",[S]],windowsVerbatim:!1}}let f=`#!/bin/bash
127
+ `,I=Ie.default.join(Kt.default.tmpdir(),`${oe}-update.bat`);(0,Y.writeFileSync)(I,T),(0,Y.writeFileSync)(w,`CreateObject("WScript.Shell").Run """%NODE%"" ""%CLI%"" ${Wi()}", 0, False`.replace("%NODE%",i).replace("%CLI%",a)+`
128
+ `);let A=Ie.default.join(Kt.default.tmpdir(),`${oe}-update.vbs`);return(0,Y.writeFileSync)(A,`CreateObject("WScript.Shell").Run "cmd /c ""${I}""", 0, False
129
+ `),{shellCmd:["wscript.exe",[A]],windowsVerbatim:!1}}let d=`#!/bin/bash
130
130
  # Wait for agent to exit so it releases the cli.cjs file lock
131
131
  while kill -0 ${r} 2>/dev/null; do sleep 1; done
132
132
 
@@ -146,9 +146,9 @@ attempt=0
146
146
  while [ $attempt -lt ${Ft.maxRetry} ]; do
147
147
  attempt=$((attempt+1))
148
148
  echo "Installing (attempt $attempt)..."
149
- if ${u} install -g ${De} ${l}; then break; fi
149
+ if ${p} install ${De} ${f}; then break; fi
150
150
  if [ $attempt -eq ${Ft.maxRetry} ]; then
151
- ${u} install -g ${De} ${l} --omit=optional || true
151
+ ${p} install ${De} ${f} --omit=optional || true
152
152
  fi
153
153
  sleep 3
154
154
  done
@@ -158,22 +158,22 @@ done
158
158
  NEWVER=$(${s}"${i}" "${a}" --version 2>/dev/null | head -1 | sed 's/\x1B[[0-9;?]*[a-zA-Z]//g' | tr -d '[:space:]')
159
159
  if [ "$NEWVER" != "${t}" ]; then
160
160
  echo "Verify failed (got $NEWVER, want ${t}), rolling back to ${e}..."
161
- ${u} install -g ${oe}@${e} ${l} || true
161
+ ${p} install ${oe}@${e} ${f} || true
162
162
  fi
163
163
 
164
164
  rm -f "${c}"
165
- ${s}"${i}" "${a}" --tray --skip-update --start
166
- `,p=Ie.default.join(Kt.default.tmpdir(),`${oe}-update.sh`);return(0,Y.writeFileSync)(p,f,{mode:493}),{shellCmd:["sh",[p]],windowsVerbatim:!1}}async function Xi(){let e=Gi();if(!e||Wc())return!1;let t=await Gc();if(!t||!Vi(e,t)||!jc())return!1;let{shellCmd:r,windowsVerbatim:o}=Qc({currentVersion:e,latest:t,agentPid:process.pid});return(0,Ln.spawn)(r[0],r[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:o}).unref(),setTimeout(()=>process.exit(0),500),!0}var as=R(require("os"),1);var br=R(require("readline"),1),qi=R(require("http"),1);var io=require("child_process"),qc={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function Er(e){let t=qc[e];t&&process.platform==="darwin"&&(0,io.exec)(`open "${t}"`,()=>{})}function Se({strategy:e,baseMs:t,maxMs:r},o){let n=Math.max(1,o),i=e==="exp"?t*Math.pow(2,n-1):t*n;return Math.min(i,r)}async function Sr({config:e,task:t,label:r="task",log:o=()=>{},ctx:n={}}){let i=0;for(;!n.cancelled;){i++;try{if(await t(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(n.cancelled)return!1;let s=Se(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"},Ji=()=>Math.min(44,process.stdout.columns||44);function ao(e,t=null){let o=Ji()-2,n=(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,n(),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),n()];return t&&(s.push(i(`\u2B06 New version v${t} available!`,a=>E.yellow+E.bold+a+E.reset)),s.push(i(`Run: npm i -g ${De}`,a=>E.dim+a+E.reset)),s.push(n())),s.push(E.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+E.reset),s.push(""),s.join(`
167
- `)}function Wt(e,t=null){console.log(ao(e,t))}var Qi=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],so=[{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"}],Jc=process.platform==="win32",Zc=Jc?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var Zi=(e,t)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(t)};process.on("SIGINT",()=>Zi("SIGINT",130));process.on("SIGTERM",()=>Zi("SIGTERM",143));var Ke=0,Tt=null,Tr=0,Oe=-1,_n=null,Ht=null,Ar=!1;function zi(){let e=[],t=Oe===so.length-1;return so.forEach((r,o)=>{let n=o===Oe&&_n?_n:r.desc;if(o<Oe||t&&o===Oe)e.push(` ${E.green}\u2713${E.reset} ${E.dim}${r.label}${E.reset}`),Ht&&o===Ht.afterIdx&&e.push(` ${E.green}\u2713${E.reset} ${E.cyan}${Ht.text}${E.reset}`);else if(o===Oe){let i=Qi[Tr%Qi.length];e.push(` ${E.orange}${i}${E.reset} ${E.bold}${r.label}${E.reset} ${E.dim}${n}${E.reset}`)}else e.push(` ${E.dim}\u25CB ${r.label}${E.reset}`)}),e}function es(){let e=zi();Ke>0&&process.stdout.write(`\x1B[${Ke}A\x1B[0J`),process.stdout.write(e.join(`
165
+ ${s}"${i}" "${a}" ${Wi()}
166
+ `,h=Ie.default.join(Kt.default.tmpdir(),`${oe}-update.sh`);return(0,Y.writeFileSync)(h,d,{mode:493}),{shellCmd:["sh",[h]],windowsVerbatim:!1}}async function Qi(){let e=Vi();if(!e||jc())return!1;let t=await Vc();if(!t||!Yi(e,t)||!Gc())return!1;let{shellCmd:r,windowsVerbatim:o}=qc({currentVersion:e,latest:t,agentPid:process.pid});return(0,Ln.spawn)(r[0],r[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:o}).unref(),setTimeout(()=>process.exit(0),500),!0}var cs=R(require("os"),1);var br=R(require("readline"),1),Ji=R(require("http"),1);var io=require("child_process"),Jc={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function Er(e){let t=Jc[e];t&&process.platform==="darwin"&&(0,io.exec)(`open "${t}"`,()=>{})}function Se({strategy:e,baseMs:t,maxMs:r},o){let n=Math.max(1,o),i=e==="exp"?t*Math.pow(2,n-1):t*n;return Math.min(i,r)}async function Sr({config:e,task:t,label:r="task",log:o=()=>{},ctx:n={}}){let i=0;for(;!n.cancelled;){i++;try{if(await t(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(n.cancelled)return!1;let s=Se(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"},Zi=()=>Math.min(44,process.stdout.columns||44);function ao(e,t=null){let o=Zi()-2,n=(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,n(),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),n()];return t&&(s.push(i(`\u2B06 New version v${t} available!`,a=>E.yellow+E.bold+a+E.reset)),s.push(i(`Run: npm i -g ${De}`,a=>E.dim+a+E.reset)),s.push(n())),s.push(E.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+E.reset),s.push(""),s.join(`
167
+ `)}function Wt(e,t=null){console.log(ao(e,t))}var qi=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],so=[{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"}],Zc=process.platform==="win32",zc=Zc?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var zi=(e,t)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(t)};process.on("SIGINT",()=>zi("SIGINT",130));process.on("SIGTERM",()=>zi("SIGTERM",143));var Ke=0,Tt=null,Tr=0,Oe=-1,_n=null,Ht=null,Ar=!1;function es(){let e=[],t=Oe===so.length-1;return so.forEach((r,o)=>{let n=o===Oe&&_n?_n:r.desc;if(o<Oe||t&&o===Oe)e.push(` ${E.green}\u2713${E.reset} ${E.dim}${r.label}${E.reset}`),Ht&&o===Ht.afterIdx&&e.push(` ${E.green}\u2713${E.reset} ${E.cyan}${Ht.text}${E.reset}`);else if(o===Oe){let i=qi[Tr%qi.length];e.push(` ${E.orange}${i}${E.reset} ${E.bold}${r.label}${E.reset} ${E.dim}${n}${E.reset}`)}else e.push(` ${E.dim}\u25CB ${r.label}${E.reset}`)}),e}function ts(){let e=es();Ke>0&&process.stdout.write(`\x1B[${Ke}A\x1B[0J`),process.stdout.write(e.join(`
168
168
  `)+`
169
- `),Ke=e.length}function ts(){if(Ke===0||Oe<0)return;let e=zi();if(e.length!==Ke){es();return}let t=Oe+(Ht&&Ht.afterIdx<Oe?1:0),r=Ke-t;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[t]}\x1B[${r}B\r`)}function zc(){Ar||(process.stdout.write("\x1B[?25l"),Ar=!0)}function ns(){Ar&&(process.stdout.write("\x1B[?25h"),Ar=!1)}function rs(e,t=!1,r=null){Tt&&(clearInterval(Tt),Tt=null),Oe=e,_n=r,Tr=0,t||(Ke=0),es(),e<so.length-1?(zc(),Tt=setInterval(()=>{Tr++,ts()},Zc)):ns()}function jt(e){_n=e,Ke>0&&ts()}function os(){Tt&&(clearInterval(Tt),Tt=null),ns(),Ke=0,Oe=-1,_n=null,Ht=null,Tr=0}function Le(e,t,r=0,o="",n=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 w=typeof o=="function"?o():o;if(w)for(let S of w.split(`
170
- `))process.stdout.write(S+`\x1B[K
169
+ `),Ke=e.length}function ns(){if(Ke===0||Oe<0)return;let e=es();if(e.length!==Ke){ts();return}let t=Oe+(Ht&&Ht.afterIdx<Oe?1:0),r=Ke-t;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[t]}\x1B[${r}B\r`)}function el(){Ar||(process.stdout.write("\x1B[?25l"),Ar=!0)}function rs(){Ar&&(process.stdout.write("\x1B[?25h"),Ar=!1)}function os(e,t=!1,r=null){Tt&&(clearInterval(Tt),Tt=null),Oe=e,_n=r,Tr=0,t||(Ke=0),ts(),e<so.length-1?(el(),Tt=setInterval(()=>{Tr++,ns()},zc)):rs()}function jt(e){_n=e,Ke>0&&ns()}function is(){Tt&&(clearInterval(Tt),Tt=null),rs(),Ke=0,Oe=-1,_n=null,Ht=null,Tr=0}function Le(e,t,r=0,o="",n=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 w=typeof o=="function"?o():o;if(w)for(let T of w.split(`
170
+ `))process.stdout.write(T+`\x1B[K
171
171
  `);e&&process.stdout.write(`${E.dim}${e}${E.reset}\x1B[K
172
172
  \x1B[K
173
- `),t.forEach((S,O)=>{let A=O===a?u?">":"\u2605":u?" ":"\u2606",P=O===a?` \x1B[7m${E.bold}${A} ${S.label}${E.reset}`:` ${A} ${S.label}`;process.stdout.write(P+`\x1B[K
174
- `)}),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=(w,S)=>{!c||!S||(S.name==="up"?(a=(a-1+t.length)%t.length,f()):S.name==="down"?(a=(a+1)%t.length,f()):S.name==="return"?(p(),s(a)):S.name==="escape"?(p(),s(-1)):S.ctrl&&S.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),br.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(),n&&n(f,()=>{c&&(p(),s(-2))})})}function co(e){return new Promise(t=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),br.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,n)=>{if(!n)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),n.ctrl&&n.name==="c"&&(process.stdout.write(`
173
+ `),t.forEach((T,I)=>{let A=I===a?u?">":"\u2605":u?" ":"\u2606",P=I===a?` \x1B[7m${E.bold}${A} ${T.label}${E.reset}`:` ${A} ${T.label}`;process.stdout.write(P+`\x1B[K
174
+ `)}),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=(w,T)=>{!c||!T||(T.name==="up"?(a=(a-1+t.length)%t.length,f()):T.name==="down"?(a=(a+1)%t.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"),br.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(),n&&n(f,()=>{c&&(p(),s(-2))})})}function co(e){return new Promise(t=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),br.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,n)=>{if(!n)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),n.ctrl&&n.name==="c"&&(process.stdout.write(`
175
175
  `),process.exit(0));let i=(n.name||"").toLowerCase()==="y";process.stdout.write((i?"y":"n")+`
176
- `),t(i)};process.stdin.on("keypress",r)})}function is(e,t){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",n=Ji(),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(n)}${E.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
176
+ `),t(i)};process.stdin.on("keypress",r)})}function ss(e,t){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",n=Zi(),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(n)}${E.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
177
177
  ${s}
178
178
  ${E.orange}${E.bold} \u{1F514} New Device Connection${E.reset}
179
179
  ${s}
@@ -181,51 +181,51 @@ ${s}
181
181
  IP: ${E.cyan}${t}${E.reset}
182
182
  ${s}
183
183
 
184
- Allow this device? ${E.dim}(y/n)${E.reset} `),br.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 w=p,S=w?`${E.green}y${E.reset}
184
+ Allow this device? ${E.dim}(y/n)${E.reset} `),br.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 w=p,T=w?`${E.green}y${E.reset}
185
185
 
186
186
  ${E.green}\u2713 Device approved${E.reset}
187
187
  `:`${E.red}n${E.reset}
188
188
 
189
189
  ${E.red}\u2717 Device rejected${E.reset}
190
- `;process.stdout.write(S),setTimeout(()=>{try{a()}catch{}r(w)},500)};process.stdin.on("keypress",c)})}function ss(e,t){let r=null,o=!1,n=null,i=45e3,s=()=>{n&&clearTimeout(n),n=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=async()=>{if(o)return;let c=await Gt();r=qi.default.get(`http://${c}:${e}/api/ui/events`,l=>{let u="";s(),l.on("data",f=>{s(),u+=f.toString();let p=u.split(`
191
- `);u=p.pop();let d="";for(let h of p)if(h.startsWith("data: "))d=h.slice(6);else if(h===""&&d){try{let w=JSON.parse(d);Promise.resolve(t(w.type,w)).catch(()=>{})}catch{}d=""}}),l.on("end",()=>{n&&clearTimeout(n),o||setTimeout(a,Se(ce.sse,1))})}),r.on("error",()=>{n&&clearTimeout(n),o||setTimeout(a,Se(ce.sse,1))})};return a(),()=>{o=!0,n&&clearTimeout(n),r?.destroy()}}var lo=!1;function cs(e){lo=e}var Cn=null;async function Gt(){if(Cn)return Cn;let e=o=>fetch(`http://${o}:${k}/api/health`,{signal:AbortSignal.timeout(2e3)}).then(n=>n.ok?o:Promise.reject()),r=(await Promise.allSettled(["localhost","127.0.0.1"].map(e))).map((o,n)=>o.status==="fulfilled"?["localhost","127.0.0.1"][n]:null);return Cn=r.find(o=>o==="localhost")||r.find(Boolean)||null,Cn||"127.0.0.1"}function ls(){Cn=null}async function ee(e,t){let r=await Gt();try{return await fetch(`http://${r}:${k}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}catch{return ls(),null}}async function X(e){let t=await Gt();try{let r=await fetch(`http://${t}:${k}${e}`);return r.ok?await r.json():null}catch{return ls(),null}}async function F(e){await ee("/api/ui/state",e)}async function $(e,t={}){lo&&rs(e-1,e>L.PREPARING),await F({step:e,stepDesc:"",...t})}function xr({phase:e,percent:t}){let r=e==="download"?`Downloading tunnel binary ${t??0}%`:"Extracting tunnel binary";lo&&jt(r),F({stepDesc:r})}async function se(){return!!await X("/api/health")}async function uo(){let[e,t,r,o]=await Promise.all([X("/api/ui/state"),X("/api/device/auto-approve"),X("/api/autostart"),X("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!t?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function us(){let e=as.default.networkInterfaces();for(let t of Object.values(e))for(let r of t)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var Xn=require("child_process"),Qn=R(require("path"),1),Oo=R(require("fs"),1),Vs=require("url");var W=R(require("fs"),1),rt=R(require("path"),1),So=R(require("https"),1),ot=R(require("os"),1),As=R(require("net"),1),je=require("child_process");var fs=R(require("dns"),1),ps=require("child_process");var el=2e3,tl=5e3,ds=new fs.default.promises.Resolver;ds.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function Vt(){process.platform==="win32"&&(0,ps.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function fo(e,t=el){let r=Date.now();try{return{ok:!0,addrs:await Promise.race([ds.resolve4(e),new Promise((n,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),t))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function Yt(e,{flushDns:t=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(t&&Vt(),o){let n=await fo(o);if(!n.ok)return Vt(),{ok:!1,dnsCode:n.code,elapsedMs:Date.now()-r}}try{let n=await K(`${e}/api/health`,{signal:AbortSignal.timeout(tl)});return{ok:n.ok,httpStatus:n.status,elapsedMs:Date.now()-r}}catch(n){return{ok:!1,dnsCode:n.cause?.code||n.code||n.message,elapsedMs:Date.now()-r}}}var nl=H("tunnel"),Mn=null,$n=null,Xt=null,At=null,nt=0,mo=!1;async function ho(e){try{let t=await Gt();await fetch(`http://${t}:${k}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}var po=!1;async function ms(){if(!(!$n||mo||po)){po=!0;try{await rl()}finally{po=!1}}}async function rl(){let e=await Yt($n),t=e.ok?"healthy":"unreachable";if(t===Xt){At=null,nt=0;return}if(t!==At){At=t,nt=1;return}nt++,!(nt<Ki)&&(nl.info(`${Xt??"init"} \u2192 ${t}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),Xt=t,At=null,nt=0,await ho({tunnelHealth:{status:t,checkedAt:Date.now()}}))}function hs(e){if(!e)return Nn();e!==$n&&($n=e,Xt=null,At=null,nt=0,Vt(),Mn||(Mn=setInterval(ms,Qo.checkIntervalMs)),ms())}var gs=hs,Qt=hs;function ys(){mo=!0}function ws(){mo=!1}function bt(e){Xt=e,At=null,nt=0,ho({tunnelHealth:{status:e,checkedAt:Date.now()}})}function Nn(){Mn&&(clearInterval(Mn),Mn=null),$n=null,Xt=null,At=null,nt=0,ho({tunnelHealth:{status:"unknown",checkedAt:null}})}var Q=H("tunnel"),He={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443,edgeProbeIntervalMs:15e3,edgeProbeFailureThreshold:3,readyTimeoutMs:1500},ol=[20241,20242,20243,20244,20245],Zt=null;async function il(e,t){try{let o=await(await fetch(`http://localhost:${e}/ready`,{signal:AbortSignal.timeout(t)})).json();return typeof o?.readyConnections=="number"?o:null}catch{return null}}async function vs(e,t){let r=await il(e,t);if(!r)return null;let o=await al(e,t);return o&&me&&!me.includes(o)?null:r.readyConnections}async function sl(e){if(Zt!==null){let o=await vs(Zt,e);if(o!==null)return o;Zt=null}let r=(await Promise.all(ol.map(async o=>({port:o,conns:await vs(o,e)})))).find(o=>o.conns!==null);return r?(Zt=r.port,r.conns):null}async function al(e,t){try{return(await(await fetch(`http://localhost:${e}/quicktunnel`,{signal:AbortSignal.timeout(t)})).json())?.hostname||null}catch{return null}}var cl=3e4,go=0,Un=null,Rr=null,zt=null,Hn=null,en=!1,Dn=0,Eo=!1,me=null,tn=0,yo=0,wo=!1,Wn=0,We=0,Es=3e4,ll=5e3,Bn=rt.default.join(ot.default.homedir(),".9remote","bin"),Ss="cloudflared",nn=ot.default.platform()==="win32",ul=nn?`${Ss}.exe`:Ss,qt=rt.default.join(Bn,ul),vo=rt.default.join(ot.default.homedir(),".9remote","cloudflared.pid"),Fn=!1,Jt=null,fl="2026.6.1",bs=`https://github.com/cloudflare/cloudflared/releases/download/${fl}`;function xs(){return new Promise(e=>{let t=new As.default.Socket,r=!1,o=n=>{if(!r){r=!0;try{t.destroy()}catch{}e(n)}};t.setTimeout(He.internetCheckTimeoutMs),t.once("connect",()=>o(!0)),t.once("timeout",()=>o(!1)),t.once("error",()=>o(!1));try{t.connect(He.internetCheckPort,He.internetCheckHost)}catch{o(!1)}})}async function pl(){Eo=!0;try{let e=0;for(;;){if(e++,await xs())return;await new Promise(t=>setTimeout(t,Se(ce.internet,e)))}}finally{Eo=!1}}async function Kn(e,t){if(!Hn){Q.warn("No restartCallback registered \u2014 skip");return}if(!en&&!(Date.now()-yo<ll)){yo=Date.now(),en=!0;try{await pl();let r=Se(ce.tunnelRestart,Dn+1);await new Promise(o=>setTimeout(o,r)),await Hn(e),Dn=0,yo=0}catch(r){Dn++,Q.error(`restart failed (#${Dn}): ${r?.message||r}`),setImmediate(()=>{en=!1,Kn(e,"retry after fail")});return}finally{en=!1}}}var dl={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 ml(){let e=ot.default.platform(),t=ot.default.arch(),r=dl[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[t];if(!o)throw new Error(`Unsupported architecture: ${t} for platform ${e}`);return`${bs}/${o}`}var hl=150;async function Rs(e,t,r){return new Promise((o,n)=>{let i=W.default.createWriteStream(t);So.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),W.default.unlinkSync(t),Rs(s.headers.location,t,r).then(o).catch(n);return}if(s.statusCode!==200){i.close(),W.default.unlinkSync(t),n(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>=hl&&(l=p,u=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(t))}),i.on("error",f=>{i.close(),W.default.unlinkSync(t),n(f)})}).on("error",s=>{i.close(),W.default.existsSync(t)&&W.default.unlinkSync(t),n(s)})})}async function jn(e){if(W.default.existsSync(Bn)||W.default.mkdirSync(Bn,{recursive:!0}),W.default.existsSync(qt))return nn||W.default.chmodSync(qt,"755"),qt;let t=ml(),r=t.endsWith(".tgz"),o=r?rt.default.join(Bn,"cloudflared.tgz"):qt;try{return e?.({phase:"download",percent:0}),await Rs(t,o,n=>{e?.({phase:"download",percent:n})}),await gl(t,o),r&&(e?.({phase:"extract"}),(0,je.execSync)(`tar -xzf "${o}" -C "${Bn}"`,{stdio:"pipe",windowsHide:!0}),W.default.unlinkSync(o)),nn||W.default.chmodSync(qt,"755"),qt}catch(n){try{W.default.existsSync(o)&&W.default.unlinkSync(o)}catch{}throw console.error("Failed to download cloudflared:",n.message),n}}function Ps(e){return new Promise((t,r)=>{So.default.get(e,o=>{if([301,302].includes(o.statusCode))return Ps(o.headers.location).then(t).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let n="";o.on("data",i=>n+=i),o.on("end",()=>t(n))}).on("error",r)})}async function gl(e,t){let r=rt.default.basename(e),o;try{o=await Ps(`${bs}/sha256sum.txt`)}catch(c){Q.warn(`sha256 manifest unavailable (${c.message}), skipping verify`);return}let n=o.split(`
192
- `).find(c=>c.includes(r));if(!n){Q.warn(`No sha256 entry for ${r}, skipping verify`);return}let i=n.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(W.default.readFileSync(t)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`)}function yl(e){let t=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(t))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function Ge(e,t=null,r=null){let o=await jn();Sl(o),r&&(Hn=r),zt=e;let n=W.default.mkdtempSync(rt.default.join(ot.default.tmpdir(),"9remote-quick-")),i=rt.default.join(n,"config.yml");W.default.writeFileSync(i,`# quick-tunnel
193
- `,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{W.default.rmSync(n,{recursive:!0,force:!0})}catch{}}},c=(0,je.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return ze("cloudflared",c.pid),Jt=c.pid,Fn=!1,new Promise((l,u)=>{let f=!1,p=null,d="",h=setTimeout(()=>{if(!f){f=!0,a(),Jt===c.pid&&(Jt=null);try{c.kill("SIGKILL")}catch{}Ue("cloudflared"),u(new Error("Quick tunnel timed out after 90s"))}},9e4),w=S=>{let O=S.toString();d+=O,d.length>4096&&(d=d.slice(-4096));let A=yl(O);if(A){if(!f){f=!0,p=A,me=A,tn=Date.now(),We=0,Wn=0,Zt=null,clearTimeout(h),a(),bl(),Q.info(`tunnel ready: ${A}`),l({child:c,tunnelUrl:A});return}A!==p&&(Q.info(`URL rotated: ${A}`),p=A,me=A,tn=Date.now(),We=0,Wn=0,t?.(A))}};c.stdout.on("data",w),c.stderr.on("data",w),c.on("error",S=>{f||(f=!0,clearTimeout(h),a(),u(S))}),c.on("exit",(S,O)=>{a();let A=Jt!==c.pid,P=Fn||A;if(Q.info(`cloudflared exited (intentional=${Fn} superseded=${A})`),P||bt("unreachable"),!f){f=!0,clearTimeout(h);let g=d.trim().split(`
194
- `).slice(-5).join(" | ");Jt=null,u(new Error(`cloudflared exited (code=${S}, signal=${O}) output: ${g||"(empty)"}`));return}P||Kn(e,`quick tunnel exit code ${S}`)})})}function Pr(e){if(nn)try{(0,je.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function wl(e){return e?e.split(`
195
- `).flatMap(t=>{let r=t.match(/^\s*(\d+)\s+(.+)$/);return r?[{pid:Number(r[1]),args:r[2].trim()}]:[]}):[]}function vl(e,t){return Array.isArray(e)?e.filter(r=>{if(!r?.args||typeof r.pid!="number")return!1;let o=r.args.split(/\s+/);return o.includes(t)&&o.includes("tunnel")}).map(r=>r.pid):[]}function El(e){try{let t=nn?(0,je.execSync)(`powershell -NoProfile -Command "Get-CimInstance Win32_Process -Filter 'Name=\\'cloudflared.exe\\'' | ForEach-Object { \\"$($_.ProcessId) $($_.CommandLine)\\"" }"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}):(0,je.execSync)("ps -eo pid=,args=",{encoding:"utf8",stdio:["ignore","pipe","ignore"]});return vl(wl(t),e)}catch{return[]}}function Sl(e){let t=El(e);for(let r of t)r!==process.pid&&(Q.info(`killing leftover cloudflared pid=${r}`),Pr(r));return t}function Tl(e){try{let t=[];if(nn){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`;t=(0,je.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(n=>+n.trim()).filter(Boolean)}else t=(0,je.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
196
- `).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(t))Pr(r)}catch{}}function Te(){if(!wo){wo=!0;try{try{if(W.default.existsSync(vo)){let t=parseInt(W.default.readFileSync(vo,"utf8"));Number.isFinite(t)&&(Fn=!0,Pr(t)),W.default.unlinkSync(vo)}}catch{}let e=In("cloudflared");Fn=!0,Jt=null,e&&(Pr(e),Ue("cloudflared")),Tl(k)}finally{setTimeout(()=>{wo=!1},2e3)}}}function ks(){if(!me)return!1;let e=In("cloudflared");return!!e&&zr(e)}function Is(){Dn=0,en=!1,Hn=null,zt=null,me=null,We=0,Wn=0,Zt=null,xl()}var Al=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function Ts(){let e=ot.default.networkInterfaces(),t=[];for(let[r,o]of Object.entries(e))if(o&&!Al.test(r))for(let n of o)!n.internal&&n.family==="IPv4"&&t.push(`${r}:${n.address}`);return t.sort().join("|")}function bl(){Un||(Rr=Ts(),go=Date.now(),Un=setInterval(async()=>{try{let e=Date.now(),t=e-go;if(go=e,Eo||en||!Hn||zt==null)return;if(t>cl){if(Q.info(`Sleep/wake detected (gap=${t}ms)`),me){let s=!1;for(let a=0;a<3;a++){if((await Yt(me)).ok){s=!0;break}a<2&&await new Promise(l=>setTimeout(l,3e3))}if(s)return;Q.info("tunnel unresponsive after sleep \u2192 restarting")}bt("unreachable"),Te(),Kn(zt,"woke from sleep");return}let r=Ts(),o=r!==Rr;Rr=r;let n=In("cloudflared"),i=!n||!zr(n);if(!o&&!i){if(me&&tn&&Date.now()-tn>Es&&e-Wn>=He.edgeProbeIntervalMs){Wn=e;let s=await Yt(me);if(s.ok)We=0;else if(++We>=He.edgeProbeFailureThreshold){let a=await sl(He.readyTimeoutMs);if(a>0){Q.info(`edge probe failing but cloudflared holds ${a} connection(s) \u2014 not restarting`),We=0;return}Q.warn(`tunnel unreachable but cloudflared alive \u2014 edge lost after ${We} probes (ready=${a??"unknown"}), restarting`),We=0,bt("unreachable"),Te(),Kn(zt,"tunnel unreachable (edge lost)")}else Q.debug(`edge probe failed (${We}/${He.edgeProbeFailureThreshold}) \u2014 ${s.dnsCode??s.httpStatus??"no response"}`)}return}if(o&&!i&&tn&&Date.now()-tn<Es||(o&&Q.info("Network change detected"),i&&Q.warn("cloudflared not alive \u2014 watchdog"),bt("unreachable"),await new Promise(s=>setTimeout(s,He.networkRestoreDelayMs)),!await xs()))return;if(o&&!i&&me){let s=!1;for(let a=0;a<2;a++){if((await Yt(me)).ok){s=!0;break}a===0&&await new Promise(l=>setTimeout(l,2e3))}if(s){Q.info("Tunnel survived network change, skip restart");return}}o&&!i&&Te(),Kn(zt,o?"network change":"liveness watchdog")}catch(e){Q.error(`network monitor tick failed: ${e?.message||e}`)}},He.networkCheckIntervalMs))}function xl(){Un&&(clearInterval(Un),Un=null),Rr=null}sn();var it=R(require("crypto"),1),cn=require("fs");var Fs=require("path");var If=Buffer.from("302a300506032b656e","hex");var Or=(0,Fs.join)(G.CONFIG,"hostKey.json"),Nf=Buffer.from("302a300506032b6570032100","hex"),an=null;function bo(){if(an)return an;try{if((0,cn.existsSync)(Or)){let s=JSON.parse((0,cn.readFileSync)(Or,"utf8")),a=Buffer.from(s.publicKey,"base64");if(!s.x25519PrivateKey){let l=it.default.generateKeyPairSync("x25519");s.x25519PrivateKey=l.privateKey.export({type:"pkcs8",format:"der"}).toString("base64"),s.x25519PublicKey=l.publicKey.export({type:"spki",format:"der"}).toString("base64"),Be(Or,s)}let c=Buffer.from(s.x25519PublicKey,"base64");return an={privateKey:it.default.createPrivateKey({key:Buffer.from(s.privateKey,"base64"),format:"der",type:"pkcs8"}),publicKey:it.default.createPublicKey({key:a,format:"der",type:"spki"}),publicKeyB64:a.subarray(-32).toString("base64"),x25519PrivateKey:it.default.createPrivateKey({key:Buffer.from(s.x25519PrivateKey,"base64"),format:"der",type:"pkcs8"}),x25519PublicKeyB64:c.subarray(-32).toString("base64")},an}}catch{}(0,cn.mkdirSync)(G.CONFIG,{recursive:!0});let{privateKey:e,publicKey:t}=it.default.generateKeyPairSync("ed25519"),r=t.export({type:"spki",format:"der"}).toString("base64"),o=e.export({type:"pkcs8",format:"der"}).toString("base64"),n=it.default.generateKeyPairSync("x25519"),i=n.publicKey.export({type:"spki",format:"der"}).toString("base64");return Be(Or,{privateKey:o,publicKey:r,x25519PrivateKey:n.privateKey.export({type:"pkcs8",format:"der"}).toString("base64"),x25519PublicKey:i}),an={privateKey:e,publicKey:t,publicKeyB64:Buffer.from(r,"base64").subarray(-32).toString("base64"),x25519PrivateKey:n.privateKey,x25519PublicKeyB64:Buffer.from(i,"base64").subarray(-32).toString("base64")},an}function st(){return bo().publicKeyB64}function at(){return bo().x25519PublicKeyB64}var Ll="9remote-session-v1";function _l({apiKey:e,tunnelUrl:t,localIp:r,expiryMinutes:o,ts:n}){let i=a=>{let c=a==null?"":String(a);return`${c.length}:${c}`},s=`${Ll}|${i(e)}${i(t)}${i(r)}${i(o)}${i(n)}`;return it.default.sign(null,Buffer.from(s,"utf8"),bo().privateKey).toString("base64")}function xt(e){let t=Date.now();return{ts:t,sig:_l({...e,ts:t})}}async function ct(e,t={}){let r=t.intervalMs??tt.intervalMs,o=t.timeoutMs??tt.timeoutMs,n=`${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>tt.maxLogEntries?c.slice(-tt.maxLogEntries):c;F({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,Vt(),i){let f=await fo(i,tt.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;jt(`#${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(n,{signal:AbortSignal.timeout(tt.fetchTimeoutMs)}),p=Date.now()-u;if(jt(`#${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,tt.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",w=h?"connecting...":d;jt(`#${a} \u2192 ${w}`),l({attempt:a,status:w,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 lt=H("tunnel"),xo=null,Ks=null,Hs=0;async function Rt(e,t){if(lt.debug(`updateTunnelUrl: key=${e?.slice(0,8)} url=${t}`),Cl(e),t&&t===Ks&&Date.now()-Hs<Ui){lt.debug("updateTunnelUrl: skipped (debounce, same URL)");return}xo&&(xo.cancelled=!0);let r={cancelled:!1};xo=r;let o=us();Sr({config:ce.urlSync,label:`urlSync ${t}`,log:n=>lt.warn(n),ctx:r,task:async()=>{let n=await K(`${C}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let s={apiKey:V(e),tunnelUrl:t,localIp:o?`${o}:${k}`:null};return{...s,...xt(s)}})())});if(r.cancelled)return!0;if(n.ok)return Ks=t,Hs=Date.now(),lt.debug(`urlSync OK: pushed ${t} to server`),Ml(t),!0;let i=await n.text().catch(()=>"");return lt.warn(`urlSync HTTP ${n.status}: ${i.slice(0,200)}`),!1}}),t&&gs(t)}var ln=null,un=null,Ro=!1,ko=0;async function Ws(e,t){let r={apiKey:e,online:t},o=await K(`${C}/api/session/heartbeat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...r,...xt(r)})});return o.ok||lt.warn(`heartbeat online=${t} HTTP ${o.status}`),o.ok}async function Po(){if(!(Ro||!un)){Ro=!0;try{await Ws(un,!0),ko=Date.now()}catch(e){lt.debug(`heartbeat failed: ${e?.message||e}`)}finally{Ro=!1}}}function Cl(e){let t=V(e);if(t){if(ln&&un===t){Date.now()-ko>=ro&&Po();return}Io(),un=t,Po(),ln=setInterval(Po,ro),ln.unref?.()}}function Io({offline:e=!1}={}){ln&&(clearInterval(ln),ln=null);let t=un;return un=null,ko=0,!e||!t?null:Ws(t,!1).catch(r=>lt.debug(`goodbye failed: ${r?.message||r}`))}var Yn=null;async function Ml(e){if(Yn?.url===e)return;let t={url:e};Yn=t,ys();try{let r=await ct(e,{timeoutMs:Hi});if(Yn!==t)return;r&&bt("healthy")}catch{}finally{Yn===t&&(Yn=null),ws()}}var Ye=H("server"),Ys=Qn.default.dirname((0,Vs.fileURLToPath)(__importMetaUrl)),$l=Qn.default.resolve(Ys,"./server.cjs"),js=Qn.default.resolve(Ys,"../../index.js");function Lr(e){try{process.platform==="win32"?(0,Xn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,Xn.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function ut(e,t,r){let o=null,n=!1,i=!1,s=!0,a=0,c=null,l=()=>{s&&(Lr(k),s=!1);let u=process.env.NODE_ENV==="development"&&Oo.default.existsSync(js),f=u?js:$l;Oo.default.existsSync(f)||(Ye.error(`Server not found: ${f}`),process.exit(1));let p={...process.env,PORT:String(k)};u||delete p.NODE_ENV,o=(0,Xn.spawn)(jo,[f],{cwd:Qn.default.dirname(f),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:Go(p)}),c&&clearTimeout(c),c=setTimeout(()=>{a=0},Di),o.on("exit",(d,h)=>{if(c&&(clearTimeout(c),c=null),n)return;if(i){i=!1,Ye.info("Restarting server (requested)..."),setTimeout(()=>{l(),r?.()},500);return}Ye.error(`Server exited unexpectedly (code: ${d}, signal: ${h})`),a++;let w=Se(ce.server,a);Ye.warn(`Restarting server in ${w}ms (fail#${a})`),t&&t(),setTimeout(()=>{l(),r?.()},w)}),o.on("error",d=>{Ye.error(`Server error: ${d.message}`)}),e?.(o)};return l(),{getProcess:()=>o,shutdown:()=>{if(n=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}},restart:()=>{if(!o)return!1;i=!0;try{o.kill("SIGTERM")}catch{}return setTimeout(()=>{try{o&&i&&o.kill("SIGKILL")}catch{}},2e3),!0}}}function Xs(e){return e?.restart?e.restart():!1}function Pt({serverManager:e,tunnelProcess:t,exit:r=!0,code:o=0}={}){try{Nn()}catch{}try{e?.shutdown?.()}catch{}try{t?.kill?.()}catch{}try{Te()}catch{}try{Gn()}catch{}try{Lr(k)}catch{}try{Is()}catch{}try{si()}catch{}try{Ue("agent")}catch{}try{Ue("cloudflared")}catch{}let n=Io({offline:!0});if(r){let i=new Promise(a=>setTimeout(a,Bi)),s=n?Promise.race([n,new Promise(a=>setTimeout(a,Fi))]):null;Promise.all([i,s]).finally(()=>process.exit(o))}}var Gs=!1;function ft(e,t){if(Gs)return;Gs=!0;let r=!1,o=n=>{r||(r=!0,Ye.info(`Stopping 9Remote (${n})...`),Pt({serverManager:e,tunnelProcess:t}),Ye.info("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:n})=>{n({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",n=>{Ye.error(`Uncaught exception: ${n?.stack||n?.message||n}`),o("uncaughtException"),setTimeout(()=>process.exit(1),no)}),process.on("unhandledRejection",n=>{Ye.error(`Unhandled rejection: ${n?.stack||n?.message||n}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),no)})}sn();var qs=R(require("crypto"),1),Js=require("path");var Nl=H("pairing"),Zs=(0,Js.join)(G.STATE,"pairing.json"),Qs="ABCDEFGHIJKLMNPQRSTUVWXYZ123456789",Dl=2;function zs(){let e="";for(let t=0;t<Dl;t++)e+=Qs[qs.default.randomInt(Qs.length)];return e}function Bl(){let e=oi(Zs,null);return!e||Date.now()>e.expiresAt?null:e}function Ul(e){try{Be(Zs,e)}catch(t){Nl.error(`persist pairing state: ${t.message}`)}}function ea(e,t,r,o=null){Ul({tempKey:e,tail:t,expiresAt:r,workerUrl:o})}function ta(){let e=Bl();return e?{tempKey:e.tempKey,tail:e.tail,expiresAt:e.expiresAt}:null}var na=H("session"),Fl=10;async function qn(e,t){try{let r=await K(`${t}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let i={apiKey:V(e),expiryMinutes:Fl};return{...i,...xt(i)}})())});if(!r.ok){let i=await r.json().catch(()=>null);throw new Error(i?.error||`HTTP ${r.status}`)}let o=await r.json(),n=zs();return ea(o.tempKey,n,o.expiresAt,t),{...o,oneTimeKey:`${o.tempKey}${n}`}}catch(r){return na.error(`Temp key creation failed: ${r?.message||r}`),null}}function Jn(e,t){return t?.tempKey?`${e}/login?k=${t.tempKey}#${t.oneTimeKey}`:`${e}/login`}async function _r(e,t,r,o){try{let n=await K(`${t}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(e),hostPublicKey:st(),hostX25519Key:at(),tempKey:ta()?.tempKey||void 0})});if(!n.ok)throw new Error(`HTTP ${n.status}`);return r&&await K(`${t}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(e),tunnelUrl:r,...xt({apiKey:V(e),tunnelUrl:r})})}).catch(()=>{}),o&&V(o)!==V(e)&&await K(`${t}/api/session/delete`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(o),...xt({apiKey:V(o)})})}).catch(()=>{}),!0}catch(n){return na.error(`Session registration failed: ${n?.message||n}`),!1}}var kt=H("tunnel");async function Kl(e,t,r,o){let n=0;for(;;){n++;try{return await Ge(e,t,r)}catch(i){let s=Se(ce.tunnelSpawn,n);kt.warn(`spawn attempt ${n} failed: ${i?.message||i} \u2014 retry in ${s}ms`),o?.({attempt:n,delay:s}),await new Promise(a=>setTimeout(a,s))}}}function Xe({onUrlUpdate:e,setTunnel:t,onRetry:r}){return async o=>{try{let n=await Kl(o,e,null,r);Qe(),t(n.child),await e(n.tunnelUrl),kt.info(`Tunnel restarted: ${n.tunnelUrl}`)}catch(n){kt.error(`Tunnel restart failed: ${n?.message||n}`)}}}var Cr=null;function Qe(){Cr&&(Cr.cancelled=!0,Cr=null)}function fn(e,{onUrlUpdate:t,onRestart:r,setActiveTunnel:o,onReady:n}){Qe();let i={cancelled:!1};return Cr=i,Sr({config:ce.tunnelRateLimit,task:async()=>{if(i.cancelled)return!0;if(ks())return kt.info("bg-tunnel: a tunnel is already live \u2014 standing down"),!0;let s=await Ge(e,t,r);if(i.cancelled){try{Te()}catch{}return!0}try{o?.(s.child),await t?.(s.tunnelUrl),await n?.(s),kt.info(`bg tunnel up: ${s.tunnelUrl}`)}catch(a){kt.error(`bg tunnel post-spawn failed: ${a?.message||a}`)}return!0},label:"bg-tunnel",log:s=>kt.info(s),ctx:i}),i}var No=R(Ra(),1);var ql=H("session");function Jl(e,t="\u{1F4F1} Scan QR to connect:"){console.log(ie.orange(`
197
- ${t}`)),No.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{console.log(r.trim())})}function Zl(e){return new Promise(t=>{No.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{t(ie.orangeDim("\u{1F4F1} Scan QR to connect:")+`
198
- `+r.trim())})})}async function Dr(e,t){let r=await qn(e,C),o=Math.min(Fe.headerWidth,process.stdout.columns||55);if(!r){ql.warn("Temp key creation failed \u2014 showing UI without a QR"),await $(L.READY,{tunnelUrl:t,permanentKey:e,workerUrl:C}),console.log(m.red(`
199
- \u274C Failed to create one-time key \u2014 generate a new one from the menu`)),console.log(ie.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(ie.orange("\u2550".repeat(o)));return}let n=Jn(C,r);await $(L.READY,{tunnelUrl:t,oneTimeKey:r.oneTimeKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:n,workerUrl:C}),Jl(n),console.log(m.gray(`
190
+ `;process.stdout.write(T),setTimeout(()=>{try{a()}catch{}r(w)},500)};process.stdin.on("keypress",c)})}function as(e,t){let r=null,o=!1,n=null,i=45e3,s=()=>{n&&clearTimeout(n),n=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=async()=>{if(o)return;let c=await Gt();r=Ji.default.get(`http://${c}:${e}/api/ui/events`,l=>{let u="";s(),l.on("data",f=>{s(),u+=f.toString();let p=u.split(`
191
+ `);u=p.pop();let d="";for(let h of p)if(h.startsWith("data: "))d=h.slice(6);else if(h===""&&d){try{let w=JSON.parse(d);Promise.resolve(t(w.type,w)).catch(()=>{})}catch{}d=""}}),l.on("end",()=>{n&&clearTimeout(n),o||setTimeout(a,Se(ce.sse,1))})}),r.on("error",()=>{n&&clearTimeout(n),o||setTimeout(a,Se(ce.sse,1))})};return a(),()=>{o=!0,n&&clearTimeout(n),r?.destroy()}}var lo=!1;function ls(e){lo=e}var Cn=null;async function Gt(){if(Cn)return Cn;let e=o=>fetch(`http://${o}:${k}/api/health`,{signal:AbortSignal.timeout(2e3)}).then(n=>n.ok?o:Promise.reject()),r=(await Promise.allSettled(["localhost","127.0.0.1"].map(e))).map((o,n)=>o.status==="fulfilled"?["localhost","127.0.0.1"][n]:null);return Cn=r.find(o=>o==="localhost")||r.find(Boolean)||null,Cn||"127.0.0.1"}function us(){Cn=null}async function ee(e,t){let r=await Gt();try{return await fetch(`http://${r}:${k}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}catch{return us(),null}}async function X(e){let t=await Gt();try{let r=await fetch(`http://${t}:${k}${e}`);return r.ok?await r.json():null}catch{return us(),null}}async function F(e){await ee("/api/ui/state",e)}async function $(e,t={}){lo&&os(e-1,e>L.PREPARING),await F({step:e,stepDesc:"",...t})}function xr({phase:e,percent:t}){let r=e==="download"?`Downloading tunnel binary ${t??0}%`:"Extracting tunnel binary";lo&&jt(r),F({stepDesc:r})}async function se(){return!!await X("/api/health")}async function uo(){let[e,t,r,o]=await Promise.all([X("/api/ui/state"),X("/api/device/auto-approve"),X("/api/autostart"),X("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!t?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function fs(){let e=cs.default.networkInterfaces();for(let t of Object.values(e))for(let r of t)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var Xn=require("child_process"),Qn=R(require("path"),1),Oo=R(require("fs"),1),Ys=require("url");var W=R(require("fs"),1),rt=R(require("path"),1),So=R(require("https"),1),ot=R(require("os"),1),bs=R(require("net"),1),je=require("child_process");var ps=R(require("dns"),1),ds=require("child_process");var tl=2e3,nl=5e3,ms=new ps.default.promises.Resolver;ms.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function Vt(){process.platform==="win32"&&(0,ds.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function fo(e,t=tl){let r=Date.now();try{return{ok:!0,addrs:await Promise.race([ms.resolve4(e),new Promise((n,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),t))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function Yt(e,{flushDns:t=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(t&&Vt(),o){let n=await fo(o);if(!n.ok)return Vt(),{ok:!1,dnsCode:n.code,elapsedMs:Date.now()-r}}try{let n=await K(`${e}/api/health`,{signal:AbortSignal.timeout(nl)});return{ok:n.ok,httpStatus:n.status,elapsedMs:Date.now()-r}}catch(n){return{ok:!1,dnsCode:n.cause?.code||n.code||n.message,elapsedMs:Date.now()-r}}}var rl=H("tunnel"),Mn=null,$n=null,Xt=null,At=null,nt=0,mo=!1;async function ho(e){try{let t=await Gt();await fetch(`http://${t}:${k}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}var po=!1;async function hs(){if(!(!$n||mo||po)){po=!0;try{await ol()}finally{po=!1}}}async function ol(){let e=await Yt($n),t=e.ok?"healthy":"unreachable";if(t===Xt){At=null,nt=0;return}if(t!==At){At=t,nt=1;return}nt++,!(nt<Ki)&&(rl.info(`${Xt??"init"} \u2192 ${t}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),Xt=t,At=null,nt=0,await ho({tunnelHealth:{status:t,checkedAt:Date.now()}}))}function gs(e){if(!e)return Nn();e!==$n&&($n=e,Xt=null,At=null,nt=0,Vt(),Mn||(Mn=setInterval(hs,Qo.checkIntervalMs)),hs())}var ys=gs,Qt=gs;function ws(){mo=!0}function vs(){mo=!1}function bt(e){Xt=e,At=null,nt=0,ho({tunnelHealth:{status:e,checkedAt:Date.now()}})}function Nn(){Mn&&(clearInterval(Mn),Mn=null),$n=null,Xt=null,At=null,nt=0,ho({tunnelHealth:{status:"unknown",checkedAt:null}})}var Q=H("tunnel"),He={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443,edgeProbeIntervalMs:15e3,edgeProbeFailureThreshold:3,readyTimeoutMs:1500},il=[20241,20242,20243,20244,20245],Zt=null;async function sl(e,t){try{let o=await(await fetch(`http://localhost:${e}/ready`,{signal:AbortSignal.timeout(t)})).json();return typeof o?.readyConnections=="number"?o:null}catch{return null}}async function Es(e,t){let r=await sl(e,t);if(!r)return null;let o=await cl(e,t);return o&&me&&!me.includes(o)?null:r.readyConnections}async function al(e){if(Zt!==null){let o=await Es(Zt,e);if(o!==null)return o;Zt=null}let r=(await Promise.all(il.map(async o=>({port:o,conns:await Es(o,e)})))).find(o=>o.conns!==null);return r?(Zt=r.port,r.conns):null}async function cl(e,t){try{return(await(await fetch(`http://localhost:${e}/quicktunnel`,{signal:AbortSignal.timeout(t)})).json())?.hostname||null}catch{return null}}var ll=3e4,go=0,Un=null,Rr=null,zt=null,Hn=null,en=!1,Dn=0,Eo=!1,me=null,tn=0,yo=0,wo=!1,Wn=0,We=0,Ss=3e4,ul=5e3,Bn=rt.default.join(ot.default.homedir(),".9remote","bin"),Ts="cloudflared",nn=ot.default.platform()==="win32",fl=nn?`${Ts}.exe`:Ts,qt=rt.default.join(Bn,fl),vo=rt.default.join(ot.default.homedir(),".9remote","cloudflared.pid"),Fn=!1,Jt=null,pl="2026.6.1",xs=`https://github.com/cloudflare/cloudflared/releases/download/${pl}`;function Rs(){return new Promise(e=>{let t=new bs.default.Socket,r=!1,o=n=>{if(!r){r=!0;try{t.destroy()}catch{}e(n)}};t.setTimeout(He.internetCheckTimeoutMs),t.once("connect",()=>o(!0)),t.once("timeout",()=>o(!1)),t.once("error",()=>o(!1));try{t.connect(He.internetCheckPort,He.internetCheckHost)}catch{o(!1)}})}async function dl(){Eo=!0;try{let e=0;for(;;){if(e++,await Rs())return;await new Promise(t=>setTimeout(t,Se(ce.internet,e)))}}finally{Eo=!1}}async function Kn(e,t){if(!Hn){Q.warn("No restartCallback registered \u2014 skip");return}if(!en&&!(Date.now()-yo<ul)){yo=Date.now(),en=!0;try{await dl();let r=Se(ce.tunnelRestart,Dn+1);await new Promise(o=>setTimeout(o,r)),await Hn(e),Dn=0,yo=0}catch(r){Dn++,Q.error(`restart failed (#${Dn}): ${r?.message||r}`),setImmediate(()=>{en=!1,Kn(e,"retry after fail")});return}finally{en=!1}}}var ml={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 hl(){let e=ot.default.platform(),t=ot.default.arch(),r=ml[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[t];if(!o)throw new Error(`Unsupported architecture: ${t} for platform ${e}`);return`${xs}/${o}`}var gl=150;async function Ps(e,t,r){return new Promise((o,n)=>{let i=W.default.createWriteStream(t);So.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),W.default.unlinkSync(t),Ps(s.headers.location,t,r).then(o).catch(n);return}if(s.statusCode!==200){i.close(),W.default.unlinkSync(t),n(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>=gl&&(l=p,u=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(t))}),i.on("error",f=>{i.close(),W.default.unlinkSync(t),n(f)})}).on("error",s=>{i.close(),W.default.existsSync(t)&&W.default.unlinkSync(t),n(s)})})}async function jn(e){if(W.default.existsSync(Bn)||W.default.mkdirSync(Bn,{recursive:!0}),W.default.existsSync(qt))return nn||W.default.chmodSync(qt,"755"),qt;let t=hl(),r=t.endsWith(".tgz"),o=r?rt.default.join(Bn,"cloudflared.tgz"):qt;try{return e?.({phase:"download",percent:0}),await Ps(t,o,n=>{e?.({phase:"download",percent:n})}),await yl(t,o),r&&(e?.({phase:"extract"}),(0,je.execSync)(`tar -xzf "${o}" -C "${Bn}"`,{stdio:"pipe",windowsHide:!0}),W.default.unlinkSync(o)),nn||W.default.chmodSync(qt,"755"),qt}catch(n){try{W.default.existsSync(o)&&W.default.unlinkSync(o)}catch{}throw console.error("Failed to download cloudflared:",n.message),n}}function ks(e){return new Promise((t,r)=>{So.default.get(e,o=>{if([301,302].includes(o.statusCode))return ks(o.headers.location).then(t).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let n="";o.on("data",i=>n+=i),o.on("end",()=>t(n))}).on("error",r)})}async function yl(e,t){let r=rt.default.basename(e),o;try{o=await ks(`${xs}/sha256sum.txt`)}catch(c){Q.warn(`sha256 manifest unavailable (${c.message}), skipping verify`);return}let n=o.split(`
192
+ `).find(c=>c.includes(r));if(!n){Q.warn(`No sha256 entry for ${r}, skipping verify`);return}let i=n.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(W.default.readFileSync(t)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`)}function wl(e){let t=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(t))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function Ge(e,t=null,r=null){let o=await jn();Tl(o),r&&(Hn=r),zt=e;let n=W.default.mkdtempSync(rt.default.join(ot.default.tmpdir(),"9remote-quick-")),i=rt.default.join(n,"config.yml");W.default.writeFileSync(i,`# quick-tunnel
193
+ `,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{W.default.rmSync(n,{recursive:!0,force:!0})}catch{}}},c=(0,je.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return ze("cloudflared",c.pid),Jt=c.pid,Fn=!1,new Promise((l,u)=>{let f=!1,p=null,d="",h=setTimeout(()=>{if(!f){f=!0,a(),Jt===c.pid&&(Jt=null);try{c.kill("SIGKILL")}catch{}Ue("cloudflared"),u(new Error("Quick tunnel timed out after 90s"))}},9e4),w=T=>{let I=T.toString();d+=I,d.length>4096&&(d=d.slice(-4096));let A=wl(I);if(A){if(!f){f=!0,p=A,me=A,tn=Date.now(),We=0,Wn=0,Zt=null,clearTimeout(h),a(),xl(),Q.info(`tunnel ready: ${A}`),l({child:c,tunnelUrl:A});return}A!==p&&(Q.info(`URL rotated: ${A}`),p=A,me=A,tn=Date.now(),We=0,Wn=0,t?.(A))}};c.stdout.on("data",w),c.stderr.on("data",w),c.on("error",T=>{f||(f=!0,clearTimeout(h),a(),u(T))}),c.on("exit",(T,I)=>{a();let A=Jt!==c.pid,P=Fn||A;if(Q.info(`cloudflared exited (intentional=${Fn} superseded=${A})`),P||bt("unreachable"),!f){f=!0,clearTimeout(h);let g=d.trim().split(`
194
+ `).slice(-5).join(" | ");Jt=null,u(new Error(`cloudflared exited (code=${T}, signal=${I}) output: ${g||"(empty)"}`));return}P||Kn(e,`quick tunnel exit code ${T}`)})})}function Pr(e){if(nn)try{(0,je.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function vl(e){return e?e.split(`
195
+ `).flatMap(t=>{let r=t.match(/^\s*(\d+)\s+(.+)$/);return r?[{pid:Number(r[1]),args:r[2].trim()}]:[]}):[]}function El(e,t){return Array.isArray(e)?e.filter(r=>{if(!r?.args||typeof r.pid!="number")return!1;let o=r.args.split(/\s+/);return o.includes(t)&&o.includes("tunnel")}).map(r=>r.pid):[]}function Sl(e){try{let t=nn?(0,je.execSync)(`powershell -NoProfile -Command "Get-CimInstance Win32_Process -Filter 'Name=\\'cloudflared.exe\\'' | ForEach-Object { \\"$($_.ProcessId) $($_.CommandLine)\\"" }"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}):(0,je.execSync)("ps -eo pid=,args=",{encoding:"utf8",stdio:["ignore","pipe","ignore"]});return El(vl(t),e)}catch{return[]}}function Tl(e){let t=Sl(e);for(let r of t)r!==process.pid&&(Q.info(`killing leftover cloudflared pid=${r}`),Pr(r));return t}function Al(e){try{let t=[];if(nn){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`;t=(0,je.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(n=>+n.trim()).filter(Boolean)}else t=(0,je.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
196
+ `).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(t))Pr(r)}catch{}}function Te(){if(!wo){wo=!0;try{try{if(W.default.existsSync(vo)){let t=parseInt(W.default.readFileSync(vo,"utf8"));Number.isFinite(t)&&(Fn=!0,Pr(t)),W.default.unlinkSync(vo)}}catch{}let e=In("cloudflared");Fn=!0,Jt=null,e&&(Pr(e),Ue("cloudflared")),Al(k)}finally{setTimeout(()=>{wo=!1},2e3)}}}function Is(){if(!me)return!1;let e=In("cloudflared");return!!e&&zr(e)}function Os(){Dn=0,en=!1,Hn=null,zt=null,me=null,We=0,Wn=0,Zt=null,Rl()}var bl=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function As(){let e=ot.default.networkInterfaces(),t=[];for(let[r,o]of Object.entries(e))if(o&&!bl.test(r))for(let n of o)!n.internal&&n.family==="IPv4"&&t.push(`${r}:${n.address}`);return t.sort().join("|")}function xl(){Un||(Rr=As(),go=Date.now(),Un=setInterval(async()=>{try{let e=Date.now(),t=e-go;if(go=e,Eo||en||!Hn||zt==null)return;if(t>ll){if(Q.info(`Sleep/wake detected (gap=${t}ms)`),me){let s=!1;for(let a=0;a<3;a++){if((await Yt(me)).ok){s=!0;break}a<2&&await new Promise(l=>setTimeout(l,3e3))}if(s)return;Q.info("tunnel unresponsive after sleep \u2192 restarting")}bt("unreachable"),Te(),Kn(zt,"woke from sleep");return}let r=As(),o=r!==Rr;Rr=r;let n=In("cloudflared"),i=!n||!zr(n);if(!o&&!i){if(me&&tn&&Date.now()-tn>Ss&&e-Wn>=He.edgeProbeIntervalMs){Wn=e;let s=await Yt(me);if(s.ok)We=0;else if(++We>=He.edgeProbeFailureThreshold){let a=await al(He.readyTimeoutMs);if(a>0){Q.info(`edge probe failing but cloudflared holds ${a} connection(s) \u2014 not restarting`),We=0;return}Q.warn(`tunnel unreachable but cloudflared alive \u2014 edge lost after ${We} probes (ready=${a??"unknown"}), restarting`),We=0,bt("unreachable"),Te(),Kn(zt,"tunnel unreachable (edge lost)")}else Q.debug(`edge probe failed (${We}/${He.edgeProbeFailureThreshold}) \u2014 ${s.dnsCode??s.httpStatus??"no response"}`)}return}if(o&&!i&&tn&&Date.now()-tn<Ss||(o&&Q.info("Network change detected"),i&&Q.warn("cloudflared not alive \u2014 watchdog"),bt("unreachable"),await new Promise(s=>setTimeout(s,He.networkRestoreDelayMs)),!await Rs()))return;if(o&&!i&&me){let s=!1;for(let a=0;a<2;a++){if((await Yt(me)).ok){s=!0;break}a===0&&await new Promise(l=>setTimeout(l,2e3))}if(s){Q.info("Tunnel survived network change, skip restart");return}}o&&!i&&Te(),Kn(zt,o?"network change":"liveness watchdog")}catch(e){Q.error(`network monitor tick failed: ${e?.message||e}`)}},He.networkCheckIntervalMs))}function Rl(){Un&&(clearInterval(Un),Un=null),Rr=null}sn();var it=R(require("crypto"),1),cn=require("fs");var Ks=require("path");var Of=Buffer.from("302a300506032b656e","hex");var Or=(0,Ks.join)(G.CONFIG,"hostKey.json"),Df=Buffer.from("302a300506032b6570032100","hex"),an=null;function bo(){if(an)return an;try{if((0,cn.existsSync)(Or)){let s=JSON.parse((0,cn.readFileSync)(Or,"utf8")),a=Buffer.from(s.publicKey,"base64");if(!s.x25519PrivateKey){let l=it.default.generateKeyPairSync("x25519");s.x25519PrivateKey=l.privateKey.export({type:"pkcs8",format:"der"}).toString("base64"),s.x25519PublicKey=l.publicKey.export({type:"spki",format:"der"}).toString("base64"),Be(Or,s)}let c=Buffer.from(s.x25519PublicKey,"base64");return an={privateKey:it.default.createPrivateKey({key:Buffer.from(s.privateKey,"base64"),format:"der",type:"pkcs8"}),publicKey:it.default.createPublicKey({key:a,format:"der",type:"spki"}),publicKeyB64:a.subarray(-32).toString("base64"),x25519PrivateKey:it.default.createPrivateKey({key:Buffer.from(s.x25519PrivateKey,"base64"),format:"der",type:"pkcs8"}),x25519PublicKeyB64:c.subarray(-32).toString("base64")},an}}catch{}(0,cn.mkdirSync)(G.CONFIG,{recursive:!0});let{privateKey:e,publicKey:t}=it.default.generateKeyPairSync("ed25519"),r=t.export({type:"spki",format:"der"}).toString("base64"),o=e.export({type:"pkcs8",format:"der"}).toString("base64"),n=it.default.generateKeyPairSync("x25519"),i=n.publicKey.export({type:"spki",format:"der"}).toString("base64");return Be(Or,{privateKey:o,publicKey:r,x25519PrivateKey:n.privateKey.export({type:"pkcs8",format:"der"}).toString("base64"),x25519PublicKey:i}),an={privateKey:e,publicKey:t,publicKeyB64:Buffer.from(r,"base64").subarray(-32).toString("base64"),x25519PrivateKey:n.privateKey,x25519PublicKeyB64:Buffer.from(i,"base64").subarray(-32).toString("base64")},an}function st(){return bo().publicKeyB64}function at(){return bo().x25519PublicKeyB64}var _l="9remote-session-v1";function Cl({apiKey:e,tunnelUrl:t,localIp:r,expiryMinutes:o,ts:n}){let i=a=>{let c=a==null?"":String(a);return`${c.length}:${c}`},s=`${_l}|${i(e)}${i(t)}${i(r)}${i(o)}${i(n)}`;return it.default.sign(null,Buffer.from(s,"utf8"),bo().privateKey).toString("base64")}function xt(e){let t=Date.now();return{ts:t,sig:Cl({...e,ts:t})}}async function ct(e,t={}){let r=t.intervalMs??tt.intervalMs,o=t.timeoutMs??tt.timeoutMs,n=`${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>tt.maxLogEntries?c.slice(-tt.maxLogEntries):c;F({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,Vt(),i){let f=await fo(i,tt.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;jt(`#${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(n,{signal:AbortSignal.timeout(tt.fetchTimeoutMs)}),p=Date.now()-u;if(jt(`#${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,tt.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",w=h?"connecting...":d;jt(`#${a} \u2192 ${w}`),l({attempt:a,status:w,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 lt=H("tunnel"),xo=null,Hs=null,Ws=0;async function Rt(e,t){if(lt.debug(`updateTunnelUrl: key=${e?.slice(0,8)} url=${t}`),Ml(e),t&&t===Hs&&Date.now()-Ws<Ui){lt.debug("updateTunnelUrl: skipped (debounce, same URL)");return}xo&&(xo.cancelled=!0);let r={cancelled:!1};xo=r;let o=fs();Sr({config:ce.urlSync,label:`urlSync ${t}`,log:n=>lt.warn(n),ctx:r,task:async()=>{let n=await K(`${C}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let s={apiKey:V(e),tunnelUrl:t,localIp:o?`${o}:${k}`:null};return{...s,...xt(s)}})())});if(r.cancelled)return!0;if(n.ok)return Hs=t,Ws=Date.now(),lt.debug(`urlSync OK: pushed ${t} to server`),$l(t),!0;let i=await n.text().catch(()=>"");return lt.warn(`urlSync HTTP ${n.status}: ${i.slice(0,200)}`),!1}}),t&&ys(t)}var ln=null,un=null,Ro=!1,ko=0;async function js(e,t){let r={apiKey:e,online:t},o=await K(`${C}/api/session/heartbeat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...r,...xt(r)})});return o.ok||lt.warn(`heartbeat online=${t} HTTP ${o.status}`),o.ok}async function Po(){if(!(Ro||!un)){Ro=!0;try{await js(un,!0),ko=Date.now()}catch(e){lt.debug(`heartbeat failed: ${e?.message||e}`)}finally{Ro=!1}}}function Ml(e){let t=V(e);if(t){if(ln&&un===t){Date.now()-ko>=ro&&Po();return}Io(),un=t,Po(),ln=setInterval(Po,ro),ln.unref?.()}}function Io({offline:e=!1}={}){ln&&(clearInterval(ln),ln=null);let t=un;return un=null,ko=0,!e||!t?null:js(t,!1).catch(r=>lt.debug(`goodbye failed: ${r?.message||r}`))}var Yn=null;async function $l(e){if(Yn?.url===e)return;let t={url:e};Yn=t,ws();try{let r=await ct(e,{timeoutMs:Hi});if(Yn!==t)return;r&&bt("healthy")}catch{}finally{Yn===t&&(Yn=null),vs()}}var Ye=H("server"),Xs=Qn.default.dirname((0,Ys.fileURLToPath)(__importMetaUrl)),Nl=Qn.default.resolve(Xs,"./server.cjs"),Gs=Qn.default.resolve(Xs,"../../index.js");function Lr(e){try{process.platform==="win32"?(0,Xn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,Xn.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function ut(e,t,r){let o=null,n=!1,i=!1,s=!0,a=0,c=null,l=()=>{s&&(Lr(k),s=!1);let u=process.env.NODE_ENV==="development"&&Oo.default.existsSync(Gs),f=u?Gs:Nl;Oo.default.existsSync(f)||(Ye.error(`Server not found: ${f}`),process.exit(1));let p={...process.env,PORT:String(k)};u||delete p.NODE_ENV,o=(0,Xn.spawn)(jo,[f],{cwd:Qn.default.dirname(f),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:Go(p)}),c&&clearTimeout(c),c=setTimeout(()=>{a=0},Di),o.on("exit",(d,h)=>{if(c&&(clearTimeout(c),c=null),n)return;if(i){i=!1,Ye.info("Restarting server (requested)..."),setTimeout(()=>{l(),r?.()},500);return}Ye.error(`Server exited unexpectedly (code: ${d}, signal: ${h})`),a++;let w=Se(ce.server,a);Ye.warn(`Restarting server in ${w}ms (fail#${a})`),t&&t(),setTimeout(()=>{l(),r?.()},w)}),o.on("error",d=>{Ye.error(`Server error: ${d.message}`)}),e?.(o)};return l(),{getProcess:()=>o,shutdown:()=>{if(n=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}},restart:()=>{if(!o)return!1;i=!0;try{o.kill("SIGTERM")}catch{}return setTimeout(()=>{try{o&&i&&o.kill("SIGKILL")}catch{}},2e3),!0}}}function Qs(e){return e?.restart?e.restart():!1}function Pt({serverManager:e,tunnelProcess:t,exit:r=!0,code:o=0}={}){try{Nn()}catch{}try{e?.shutdown?.()}catch{}try{t?.kill?.()}catch{}try{Te()}catch{}try{Gn()}catch{}try{Lr(k)}catch{}try{Os()}catch{}try{si()}catch{}try{Ue("agent")}catch{}try{Ue("cloudflared")}catch{}let n=Io({offline:!0});if(r){let i=new Promise(a=>setTimeout(a,Bi)),s=n?Promise.race([n,new Promise(a=>setTimeout(a,Fi))]):null;Promise.all([i,s]).finally(()=>process.exit(o))}}var Vs=!1;function ft(e,t){if(Vs)return;Vs=!0;let r=!1,o=n=>{r||(r=!0,Ye.info(`Stopping 9Remote (${n})...`),Pt({serverManager:e,tunnelProcess:t}),Ye.info("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:n})=>{n({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",n=>{Ye.error(`Uncaught exception: ${n?.stack||n?.message||n}`),o("uncaughtException"),setTimeout(()=>process.exit(1),no)}),process.on("unhandledRejection",n=>{Ye.error(`Unhandled rejection: ${n?.stack||n?.message||n}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),no)})}sn();var Js=R(require("crypto"),1),Zs=require("path");var Dl=H("pairing"),zs=(0,Zs.join)(G.STATE,"pairing.json"),qs="ABCDEFGHIJKLMNPQRSTUVWXYZ123456789",Bl=2;function ea(){let e="";for(let t=0;t<Bl;t++)e+=qs[Js.default.randomInt(qs.length)];return e}function Ul(){let e=oi(zs,null);return!e||Date.now()>e.expiresAt?null:e}function Fl(e){try{Be(zs,e)}catch(t){Dl.error(`persist pairing state: ${t.message}`)}}function ta(e,t,r,o=null){Fl({tempKey:e,tail:t,expiresAt:r,workerUrl:o})}function na(){let e=Ul();return e?{tempKey:e.tempKey,tail:e.tail,expiresAt:e.expiresAt}:null}var ra=H("session"),Kl=10;async function qn(e,t){try{let r=await K(`${t}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let i={apiKey:V(e),expiryMinutes:Kl};return{...i,...xt(i)}})())});if(!r.ok){let i=await r.json().catch(()=>null);throw new Error(i?.error||`HTTP ${r.status}`)}let o=await r.json(),n=ea();return ta(o.tempKey,n,o.expiresAt,t),{...o,oneTimeKey:`${o.tempKey}${n}`}}catch(r){return ra.error(`Temp key creation failed: ${r?.message||r}`),null}}function Jn(e,t){return t?.tempKey?`${e}/login?k=${t.tempKey}#${t.oneTimeKey}`:`${e}/login`}async function _r(e,t,r,o){try{let n=await K(`${t}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(e),hostPublicKey:st(),hostX25519Key:at(),tempKey:na()?.tempKey||void 0})});if(!n.ok)throw new Error(`HTTP ${n.status}`);return r&&await K(`${t}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(e),tunnelUrl:r,...xt({apiKey:V(e),tunnelUrl:r})})}).catch(()=>{}),o&&V(o)!==V(e)&&await K(`${t}/api/session/delete`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(o),...xt({apiKey:V(o)})})}).catch(()=>{}),!0}catch(n){return ra.error(`Session registration failed: ${n?.message||n}`),!1}}var kt=H("tunnel");async function Hl(e,t,r,o){let n=0;for(;;){n++;try{return await Ge(e,t,r)}catch(i){let s=Se(ce.tunnelSpawn,n);kt.warn(`spawn attempt ${n} failed: ${i?.message||i} \u2014 retry in ${s}ms`),o?.({attempt:n,delay:s}),await new Promise(a=>setTimeout(a,s))}}}function Xe({onUrlUpdate:e,setTunnel:t,onRetry:r}){return async o=>{try{let n=await Hl(o,e,null,r);Qe(),t(n.child),await e(n.tunnelUrl),kt.info(`Tunnel restarted: ${n.tunnelUrl}`)}catch(n){kt.error(`Tunnel restart failed: ${n?.message||n}`)}}}var Cr=null;function Qe(){Cr&&(Cr.cancelled=!0,Cr=null)}function fn(e,{onUrlUpdate:t,onRestart:r,setActiveTunnel:o,onReady:n}){Qe();let i={cancelled:!1};return Cr=i,Sr({config:ce.tunnelRateLimit,task:async()=>{if(i.cancelled)return!0;if(Is())return kt.info("bg-tunnel: a tunnel is already live \u2014 standing down"),!0;let s=await Ge(e,t,r);if(i.cancelled){try{Te()}catch{}return!0}try{o?.(s.child),await t?.(s.tunnelUrl),await n?.(s),kt.info(`bg tunnel up: ${s.tunnelUrl}`)}catch(a){kt.error(`bg tunnel post-spawn failed: ${a?.message||a}`)}return!0},label:"bg-tunnel",log:s=>kt.info(s),ctx:i}),i}var No=R(Pa(),1);var Jl=H("session");function Zl(e,t="\u{1F4F1} Scan QR to connect:"){console.log(ie.orange(`
197
+ ${t}`)),No.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{console.log(r.trim())})}function zl(e){return new Promise(t=>{No.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{t(ie.orangeDim("\u{1F4F1} Scan QR to connect:")+`
198
+ `+r.trim())})})}async function Dr(e,t){let r=await qn(e,C),o=Math.min(Fe.headerWidth,process.stdout.columns||55);if(!r){Jl.warn("Temp key creation failed \u2014 showing UI without a QR"),await $(L.READY,{tunnelUrl:t,permanentKey:e,workerUrl:C}),console.log(m.red(`
199
+ \u274C Failed to create one-time key \u2014 generate a new one from the menu`)),console.log(ie.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(ie.orange("\u2550".repeat(o)));return}let n=Jn(C,r);await $(L.READY,{tunnelUrl:t,oneTimeKey:r.oneTimeKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:n,workerUrl:C}),Zl(n),console.log(m.gray(`
200
200
  QR will expire in 10 minutes (one-time use)
201
- `)),console.log(ie.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),console.log(m.white("One-Time Key".padEnd(14))+ie.orange.bold(r.oneTimeKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(ie.orange("\u2550".repeat(o)))}async function pn(e,t,r,o=""){let n=Math.min(Fe.headerWidth,process.stdout.columns||Fe.headerWidth),i=[];return e&&r?(i.push(await Zl(r)),i.push(m.gray(`
201
+ `)),console.log(ie.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),console.log(m.white("One-Time Key".padEnd(14))+ie.orange.bold(r.oneTimeKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(ie.orange("\u2550".repeat(o)))}async function pn(e,t,r,o=""){let n=Math.min(Fe.headerWidth,process.stdout.columns||Fe.headerWidth),i=[];return e&&r?(i.push(await zl(r)),i.push(m.gray(`
202
202
  QR expires in 30 minutes (one-time use)
203
203
  `))):i.push(m.gray(`
204
204
  (One-time key used \u2014 generate a new one from menu)
205
205
  `)),i.push(ie.orange("\u2550".repeat(n)),m.white("App URL".padEnd(14))+m.gray(`${C}/login`)),Yo.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(t),ie.orange("\u2550".repeat(n))),i.join(`
206
- `)}var $e=H("cmd");function mt(e,t,r,o){let n=!1;setInterval(async()=>{if(n)return;let i=ai();if(i){n=!0;try{if(i==="stop-tunnel")await Pa(e,t);else if(i==="restart-tunnel")await Pa(e,t),await ka(e,t,r);else if(i==="start-tunnel"){if(await ka(e,t,r)==="alreadyRunning"){n=!1;return}}else i==="regenerate-key"?await zl():i==="shutdown"?eu(e,t):i==="update"?await Xi():i==="restart"&&Xs(o?.())}catch(s){$e.error(`cmd "${i}" failed: ${s?.message||s}`)}finally{n=!1}}},Ee.cmdMs)}async function Pa(e,t){Qe(),Nn();let r=e();r&&(r.kill(),t(null),$e.info("Tunnel stopped")),await $(L.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:""}),Ir({tunnelUrl:"",running:!0})}async function ka(e,t,r){let o=e();if(o)if(o.killed||o.exitCode!=null)t(null);else{let n=await X("/api/ui/state");return await $(L.READY,{tunnelUrl:n?.tunnelUrl||""}),"alreadyRunning"}Qe(),$e.info("Starting...");try{await $(L.PREPARING),await jn(xr),await $(L.CONNECTING);let n=await K(`${C}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(r),hostPublicKey:st(),hostX25519Key:at()})});if(!n.ok)throw new Error(`Session create failed: ${n.status}`);await $(L.TUNNELING);let i=async l=>{await Rt(r,l),await F({tunnelUrl:l}),Qt(l),Ir({tunnelUrl:l,running:!0})},s=({attempt:l,delay:u})=>{F({tunnelRetry:{attempt:l,delay:u,at:Date.now()}})},a=null;try{a=await Ge(k,i,Xe({onUrlUpdate:i,setTunnel:l=>t(l),onRetry:s}))}catch(l){$e.error(`Tunnel spawn failed: ${l?.message||l} \u2014 QR RTC-only, bg retry`)}F({tunnelRetry:null});let c="";a&&(t(a.child),c=a.tunnelUrl,await $(L.VERIFYING),await ct(c)||($e.warn("Tunnel health check timed out \u2014 bg reconnect"),c="",t(null),a=null)),await Dr(r,c),await $(L.READY,{tunnelUrl:c}),a||fn(k,{onUrlUpdate:i,onRestart:Xe({onUrlUpdate:i,setTunnel:l=>t(l),onRetry:s}),setActiveTunnel:t,onReady:async l=>{await $(L.READY,{tunnelUrl:l.tunnelUrl})}})}catch(n){$e.error(`Failed to start: ${n.message}`),await $(L.STOPPED)}}async function zl(){let e=await Ct(),t=Mt(e),r=ir();if(!await _r(t,C,ii()?.tunnelUrl,r?.key)){$e.error("Key regeneration aborted \u2014 could not register the new key");return}wt(e,t,r?.name||"Default"),await F({permanentKey:t,oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:"",pairingUsed:!0}),$e.info(`Key regenerated: ${rr(t)}`)}function eu(e,t){Qe(),$e.info("Shutting down 9Remote completely...");let r=e();t(null),Pt({tunnelProcess:r}),$e.info("9Remote stopped")}async function Ia(){ze("agent",process.pid),Wt(Re());let e=await Ze(),t=process.argv.find(a=>a.startsWith("--theme=")),r=t?t.split("=")[1]:null,o=await se(),n=o?{getProcess:()=>null,shutdown:()=>{}}:ut(null,null);o||await new Promise(a=>setTimeout(a,de.serverBootMs));let i=`http://localhost:${k}`;console.log(m.green(`
207
- \u{1F310} UI ready at ${i}`));let s=null;await F({permanentKey:e.key,step:L.STOPPED,theme:r}),ft(n,null),mt(()=>s,a=>{s=a},e.key,()=>n),process.argv.includes("--start")&&$t("start-tunnel"),await new Promise(()=>{})}sn();async function Oa(){ze("agent",process.pid),Ni().catch(()=>{});let e=await Ze(),t=process.argv.find(l=>l.startsWith("--theme=")),r=t?t.split("=")[1]:null,o=await se(),n=o?{getProcess:()=>null,shutdown:()=>{}}:ut(null,null);o||await new Promise(l=>setTimeout(l,de.serverBootMs));let i=`http://localhost:${k}`,s=null;await F({permanentKey:e.key,step:L.STOPPED,theme:r});let a=()=>{let l=s;s=null,Pt({serverManager:n,tunnelProcess:l,exit:!1})};ft(n,null),mt(()=>s,l=>{s=l},e.key,()=>n);try{Ue("cloudflared")}catch{}process.argv.includes("--start")&&$t("start-tunnel"),await To({port:k,onQuit:a,onOpenUI:()=>Vn(i)})&&Ao({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var ht=H("mode");async function tu(e){ht.info("Starting server..."),await $(L.PREPARING);try{Te(),await new Promise(a=>setTimeout(a,de.killCloudflaredMs))}catch{}try{let a=await K(`${C}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(e),hostPublicKey:st(),hostX25519Key:at()})});if(!a.ok)return ht.error(`Session create failed: ${a.status}`),null}catch(a){return ht.error(`Session create failed: ${a.message}`),null}let t=await se(),r=t?{getProcess:()=>null,shutdown:()=>{}}:ut(null,null);t||await new Promise(a=>setTimeout(a,de.serverBootMs)),ht.info("Starting tunnel..."),await $(L.CONNECTING);let o={current:null},n="",i=async a=>{ht.info(`Tunnel URL rotated: ${a}`),await Rt(e,a),F({tunnelUrl:a}),Qt(a)},s=null;try{s=await Ge(k,i,Xe({onUrlUpdate:i,setTunnel:a=>{o.current=a}}))}catch(a){ht.error(`Tunnel spawn failed: ${a.message} \u2014 RTC-only, bg retry`)}return s&&(o.current=s.child,n=s.tunnelUrl,await ct(n)||(ht.warn("Tunnel health check timed out \u2014 bg reconnect"),o.current=null,n="",s=null)),s||fn(k,{onUrlUpdate:i,onRestart:Xe({onUrlUpdate:i,setTunnel:a=>{o.current=a}}),setActiveTunnel:a=>{o.current=a},onReady:async a=>{await $(L.READY,{tunnelUrl:a.tunnelUrl})}}),n&&await Rt(e,n),await $(L.READY,{tunnelUrl:n}),bn({apiKey:e,tunnelUrl:n,serverPid:r.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:r,tunnelRef:o,tunnelUrl:n}}async function La(){Wt(Re());let e=await Ze();ht.info(`Using key: ${rr(e.key)} (${e.name})`);let t=await tu(e.key);t||process.exit(1);let{serverManager:r,tunnelRef:o,tunnelUrl:n}=t;await Dr(e.key,n),ft(r,o.current),mt(()=>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")}`})},Ee.statsMs),await new Promise(()=>{})}var _a=R(require("path"),1),Ca=R(require("fs"),1);sn();async function Ma(){let e=`http://localhost:${k}`;await se()&&(Lr(k),await new Promise(c=>setTimeout(c,500)));let t=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&t.push(r);let o=Rn;try{Ca.default.mkdirSync(_a.default.dirname(o),{recursive:!0})}catch{}let n=null;try{n=Mi(t),n&&ze("agent",n)}catch(c){console.log(m.red(`
206
+ `)}var $e=H("cmd");function mt(e,t,r,o){let n=!1;setInterval(async()=>{if(n)return;let i=ai();if(i){n=!0;try{if(i==="stop-tunnel")await ka(e,t);else if(i==="restart-tunnel")await ka(e,t),await Ia(e,t,r);else if(i==="start-tunnel"){if(await Ia(e,t,r)==="alreadyRunning"){n=!1;return}}else i==="regenerate-key"?await eu():i==="shutdown"?tu(e,t):i==="update"?await Qi():i==="restart"&&Qs(o?.())}catch(s){$e.error(`cmd "${i}" failed: ${s?.message||s}`)}finally{n=!1}}},Ee.cmdMs)}async function ka(e,t){Qe(),Nn();let r=e();r&&(r.kill(),t(null),$e.info("Tunnel stopped")),await $(L.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:""}),Ir({tunnelUrl:"",running:!0})}async function Ia(e,t,r){let o=e();if(o)if(o.killed||o.exitCode!=null)t(null);else{let n=await X("/api/ui/state");return await $(L.READY,{tunnelUrl:n?.tunnelUrl||""}),"alreadyRunning"}Qe(),$e.info("Starting...");try{await $(L.PREPARING),await jn(xr),await $(L.CONNECTING);let n=await K(`${C}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(r),hostPublicKey:st(),hostX25519Key:at()})});if(!n.ok)throw new Error(`Session create failed: ${n.status}`);await $(L.TUNNELING);let i=async l=>{await Rt(r,l),await F({tunnelUrl:l}),Qt(l),Ir({tunnelUrl:l,running:!0})},s=({attempt:l,delay:u})=>{F({tunnelRetry:{attempt:l,delay:u,at:Date.now()}})},a=null;try{a=await Ge(k,i,Xe({onUrlUpdate:i,setTunnel:l=>t(l),onRetry:s}))}catch(l){$e.error(`Tunnel spawn failed: ${l?.message||l} \u2014 QR RTC-only, bg retry`)}F({tunnelRetry:null});let c="";a&&(t(a.child),c=a.tunnelUrl,await $(L.VERIFYING),await ct(c)||($e.warn("Tunnel health check timed out \u2014 bg reconnect"),c="",t(null),a=null)),await Dr(r,c),await $(L.READY,{tunnelUrl:c}),a||fn(k,{onUrlUpdate:i,onRestart:Xe({onUrlUpdate:i,setTunnel:l=>t(l),onRetry:s}),setActiveTunnel:t,onReady:async l=>{await $(L.READY,{tunnelUrl:l.tunnelUrl})}})}catch(n){$e.error(`Failed to start: ${n.message}`),await $(L.STOPPED)}}async function eu(){let e=await Ct(),t=Mt(e),r=ir();if(!await _r(t,C,ii()?.tunnelUrl,r?.key)){$e.error("Key regeneration aborted \u2014 could not register the new key");return}wt(e,t,r?.name||"Default"),await F({permanentKey:t,oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:"",pairingUsed:!0}),$e.info(`Key regenerated: ${rr(t)}`)}function tu(e,t){Qe(),$e.info("Shutting down 9Remote completely...");let r=e();t(null),Pt({tunnelProcess:r}),$e.info("9Remote stopped")}async function Oa(){ze("agent",process.pid),Wt(Re());let e=await Ze(),t=process.argv.find(a=>a.startsWith("--theme=")),r=t?t.split("=")[1]:null,o=await se(),n=o?{getProcess:()=>null,shutdown:()=>{}}:ut(null,null);o||await new Promise(a=>setTimeout(a,de.serverBootMs));let i=`http://localhost:${k}`;console.log(m.green(`
207
+ \u{1F310} UI ready at ${i}`));let s=null;await F({permanentKey:e.key,step:L.STOPPED,theme:r}),ft(n,null),mt(()=>s,a=>{s=a},e.key,()=>n),process.argv.includes("--start")&&$t("start-tunnel"),await new Promise(()=>{})}sn();async function La(){ze("agent",process.pid),Ni().catch(()=>{});let e=await Ze(),t=process.argv.find(l=>l.startsWith("--theme=")),r=t?t.split("=")[1]:null,o=await se(),n=o?{getProcess:()=>null,shutdown:()=>{}}:ut(null,null);o||await new Promise(l=>setTimeout(l,de.serverBootMs));let i=`http://localhost:${k}`,s=null;await F({permanentKey:e.key,step:L.STOPPED,theme:r});let a=()=>{let l=s;s=null,Pt({serverManager:n,tunnelProcess:l,exit:!1})};ft(n,null),mt(()=>s,l=>{s=l},e.key,()=>n);try{Ue("cloudflared")}catch{}process.argv.includes("--start")&&$t("start-tunnel"),await To({port:k,onQuit:a,onOpenUI:()=>Vn(i)})&&Ao({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var ht=H("mode");async function nu(e){ht.info("Starting server..."),await $(L.PREPARING);try{Te(),await new Promise(a=>setTimeout(a,de.killCloudflaredMs))}catch{}try{let a=await K(`${C}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(e),hostPublicKey:st(),hostX25519Key:at()})});if(!a.ok)return ht.error(`Session create failed: ${a.status}`),null}catch(a){return ht.error(`Session create failed: ${a.message}`),null}let t=await se(),r=t?{getProcess:()=>null,shutdown:()=>{}}:ut(null,null);t||await new Promise(a=>setTimeout(a,de.serverBootMs)),ht.info("Starting tunnel..."),await $(L.CONNECTING);let o={current:null},n="",i=async a=>{ht.info(`Tunnel URL rotated: ${a}`),await Rt(e,a),F({tunnelUrl:a}),Qt(a)},s=null;try{s=await Ge(k,i,Xe({onUrlUpdate:i,setTunnel:a=>{o.current=a}}))}catch(a){ht.error(`Tunnel spawn failed: ${a.message} \u2014 RTC-only, bg retry`)}return s&&(o.current=s.child,n=s.tunnelUrl,await ct(n)||(ht.warn("Tunnel health check timed out \u2014 bg reconnect"),o.current=null,n="",s=null)),s||fn(k,{onUrlUpdate:i,onRestart:Xe({onUrlUpdate:i,setTunnel:a=>{o.current=a}}),setActiveTunnel:a=>{o.current=a},onReady:async a=>{await $(L.READY,{tunnelUrl:a.tunnelUrl})}}),n&&await Rt(e,n),await $(L.READY,{tunnelUrl:n}),bn({apiKey:e,tunnelUrl:n,serverPid:r.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:r,tunnelRef:o,tunnelUrl:n}}async function _a(){Wt(Re());let e=await Ze();ht.info(`Using key: ${rr(e.key)} (${e.name})`);let t=await nu(e.key);t||process.exit(1);let{serverManager:r,tunnelRef:o,tunnelUrl:n}=t;await Dr(e.key,n),ft(r,o.current),mt(()=>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")}`})},Ee.statsMs),await new Promise(()=>{})}var Ca=R(require("path"),1),Ma=R(require("fs"),1);sn();async function $a(){let e=`http://localhost:${k}`;await se()&&(Lr(k),await new Promise(c=>setTimeout(c,500)));let t=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&t.push(r);let o=Rn;try{Ma.default.mkdirSync(Ca.default.dirname(o),{recursive:!0})}catch{}let n=null;try{n=Mi(t),n&&ze("agent",n)}catch(c){console.log(m.red(`
208
208
  \u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+Ee.bgServerReadyTimeoutMs,s=!1;for(;Date.now()<i;){if(await se()){s=!0;break}await new Promise(c=>setTimeout(c,Ee.bgServerReadyIntervalMs))}s||(console.log(m.red(`
209
209
  \u274C Background server failed to start.`)),console.log(m.gray(` Check log: ${o}
210
210
  `)),process.exit(1)),$t("start-tunnel"),Vn(e);let a=n?` (PID: ${n})`:"";console.log(m.green(`
211
211
  \u{1F310} 9Remote running at ${e}${a}`)),console.log(m.gray(`\u{1F4A1} Log: ${o}
212
- `)),await new Promise(c=>setTimeout(c,de.bgSpawnFlushMs)),process.exit(0)}var $a=R(require("readline"),1);var Do=H("mode"),dn=null;async function Na(){console.clear(),os(),cs(!0),await $(L.PREPARING);let e=await Ze(),t=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await se()){r=ut(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{$a.default.emitKeypressEvents(process.stdin)}catch{}t?.()});let g=Date.now()+Ee.serverReadyTimeoutMs;for(;Date.now()<g&&!await se();)await new Promise(b=>setTimeout(b,Ee.serverReadyIntervalMs))}try{Te(),await new Promise(g=>setTimeout(g,de.killCloudflaredTuiMs))}catch{}await jn(xr),await $(L.CONNECTING);try{let g=await K(`${C}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(e.key),hostPublicKey:st(),hostX25519Key:at()})});if(!g.ok)throw new Error(`Session create failed: ${g.status}`)}catch(g){Do.error(`Failed to connect: ${g.message}`),process.exit(1)}await $(L.TUNNELING);let n=await qn(e.key,C),i=Jn(C,n),s=n?.oneTimeKey||"",a=i,c="",l=null,u={current:null},f=async g=>{c=g,await Rt(e.key,g),await F({tunnelUrl:g}),Qt(g),l!==null&&(l=await pn(s,e.key,a,c),t?.())},p=null;try{p=await Ge(k,f,Xe({onUrlUpdate:f,setTunnel:g=>{u.current=g}}))}catch(g){Do.error(`Tunnel spawn failed: ${g?.message||g} \u2014 QR RTC-only, bg retry`)}p&&(u.current=p.child,c=p.tunnelUrl,bn({apiKey:e.key,tunnelUrl:p.tunnelUrl,tunnelPid:p.child?.pid}),await $(L.VERIFYING),await ct(p.tunnelUrl)?await f(p.tunnelUrl):(Do.warn("Tunnel health check timed out \u2014 bg reconnect"),u.current=null,c="",p=null)),p||fn(k,{onUrlUpdate:f,onRestart:Xe({onUrlUpdate:f,setTunnel:g=>{u.current=g}}),setActiveTunnel:g=>{u.current=g},onReady:async g=>{bn({apiKey:e.key,tunnelUrl:g.tunnelUrl,tunnelPid:g.child?.pid}),await $(L.READY,{tunnelUrl:g.tunnelUrl})}}),await $(L.READY,{tunnelUrl:c,oneTimeKey:n?.oneTimeKey||"",oneTimeKeyExpiresAt:n?.expiresAt||null,permanentKey:e.key,qrUrl:i,workerUrl:C}),await new Promise(g=>setTimeout(g,de.trayReadyMs)),l=await pn(s,e.key,a,c);let d=[],h=!1,w=()=>{h||t?.()},S=async(g,b,T)=>{if(!h){h=!0;try{let I=await is(b,T);await ee(`/api/device/${I?"approve":"reject"}`,{socketId:g})}catch{}finally{h=!1,t?.()}}},O=ss(k,async(g,b)=>{if(g==="log"&&b.message)d.push(b.message),d.length>Fe.maxLogLines&&d.shift();else if(g==="state"){let T=b.permanentKey||e.key,I=b.oneTimeKey!==void 0?b.oneTimeKey:s,_=b.qrUrl!==void 0?b.qrUrl:a,U=b.tunnelUrl!==void 0?b.tunnelUrl:c;(I!==s||T!==e.key||U!==c)&&(s=I,a=_,c=U,b.permanentKey&&(e={...e,key:b.permanentKey}),l=await pn(s,e.key,a,c),w())}else g==="permissions"?(h||Promise.resolve(dn?.()).catch(()=>{}),w()):g==="autostart"||g==="sleepInhibit"?(h||Promise.resolve(dn?.()).catch(()=>{}),w()):g==="deviceApproval"&&b.action==="pending"&&await S(b.socketId,b.deviceId,b.ip)}),A=setInterval(async()=>{if(!h)try{let b=(await X("/api/device/pending"))?.pending?.[0];b&&await S(b.socketId,b.deviceId,b.ip)}catch{}},Ee.pendingApprovalMs);ft({getProcess:r.getProcess,shutdown:()=>{Qe(),r.shutdown();try{u.current?.kill()}catch{}O(),clearInterval(A)}}),mt(()=>u.current,g=>{u.current=g},e.key,()=>r),await nu(e,c,()=>l,g=>{l=g},g=>{t=g},()=>{Qe();try{O()}catch{}try{clearInterval(A)}catch{}Pt({serverManager:r,tunnelProcess:u.current,exit:!1})},d)}async function nu(e,t,r,o,n,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await uo(),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;n(()=>f?.());let p=await Le("",u,0,r,h=>{f=h},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let h=`http://localhost:${k}`,{openBrowser:w}=await Promise.resolve().then(()=>(sn(),Us));w(h),console.log(m.green(`
212
+ `)),await new Promise(c=>setTimeout(c,de.bgSpawnFlushMs)),process.exit(0)}var Na=R(require("readline"),1);var Do=H("mode"),dn=null;async function Da(){console.clear(),is(),ls(!0),await $(L.PREPARING);let e=await Ze(),t=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await se()){r=ut(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{Na.default.emitKeypressEvents(process.stdin)}catch{}t?.()});let g=Date.now()+Ee.serverReadyTimeoutMs;for(;Date.now()<g&&!await se();)await new Promise(b=>setTimeout(b,Ee.serverReadyIntervalMs))}try{Te(),await new Promise(g=>setTimeout(g,de.killCloudflaredTuiMs))}catch{}await jn(xr),await $(L.CONNECTING);try{let g=await K(`${C}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(e.key),hostPublicKey:st(),hostX25519Key:at()})});if(!g.ok)throw new Error(`Session create failed: ${g.status}`)}catch(g){Do.error(`Failed to connect: ${g.message}`),process.exit(1)}await $(L.TUNNELING);let n=await qn(e.key,C),i=Jn(C,n),s=n?.oneTimeKey||"",a=i,c="",l=null,u={current:null},f=async g=>{c=g,await Rt(e.key,g),await F({tunnelUrl:g}),Qt(g),l!==null&&(l=await pn(s,e.key,a,c),t?.())},p=null;try{p=await Ge(k,f,Xe({onUrlUpdate:f,setTunnel:g=>{u.current=g}}))}catch(g){Do.error(`Tunnel spawn failed: ${g?.message||g} \u2014 QR RTC-only, bg retry`)}p&&(u.current=p.child,c=p.tunnelUrl,bn({apiKey:e.key,tunnelUrl:p.tunnelUrl,tunnelPid:p.child?.pid}),await $(L.VERIFYING),await ct(p.tunnelUrl)?await f(p.tunnelUrl):(Do.warn("Tunnel health check timed out \u2014 bg reconnect"),u.current=null,c="",p=null)),p||fn(k,{onUrlUpdate:f,onRestart:Xe({onUrlUpdate:f,setTunnel:g=>{u.current=g}}),setActiveTunnel:g=>{u.current=g},onReady:async g=>{bn({apiKey:e.key,tunnelUrl:g.tunnelUrl,tunnelPid:g.child?.pid}),await $(L.READY,{tunnelUrl:g.tunnelUrl})}}),await $(L.READY,{tunnelUrl:c,oneTimeKey:n?.oneTimeKey||"",oneTimeKeyExpiresAt:n?.expiresAt||null,permanentKey:e.key,qrUrl:i,workerUrl:C}),await new Promise(g=>setTimeout(g,de.trayReadyMs)),l=await pn(s,e.key,a,c);let d=[],h=!1,w=()=>{h||t?.()},T=async(g,b,S)=>{if(!h){h=!0;try{let O=await ss(b,S);await ee(`/api/device/${O?"approve":"reject"}`,{socketId:g})}catch{}finally{h=!1,t?.()}}},I=as(k,async(g,b)=>{if(g==="log"&&b.message)d.push(b.message),d.length>Fe.maxLogLines&&d.shift();else if(g==="state"){let S=b.permanentKey||e.key,O=b.oneTimeKey!==void 0?b.oneTimeKey:s,_=b.qrUrl!==void 0?b.qrUrl:a,U=b.tunnelUrl!==void 0?b.tunnelUrl:c;(O!==s||S!==e.key||U!==c)&&(s=O,a=_,c=U,b.permanentKey&&(e={...e,key:b.permanentKey}),l=await pn(s,e.key,a,c),w())}else g==="permissions"?(h||Promise.resolve(dn?.()).catch(()=>{}),w()):g==="autostart"||g==="sleepInhibit"?(h||Promise.resolve(dn?.()).catch(()=>{}),w()):g==="deviceApproval"&&b.action==="pending"&&await T(b.socketId,b.deviceId,b.ip)}),A=setInterval(async()=>{if(!h)try{let b=(await X("/api/device/pending"))?.pending?.[0];b&&await T(b.socketId,b.deviceId,b.ip)}catch{}},Ee.pendingApprovalMs);ft({getProcess:r.getProcess,shutdown:()=>{Qe(),r.shutdown();try{u.current?.kill()}catch{}I(),clearInterval(A)}}),mt(()=>u.current,g=>{u.current=g},e.key,()=>r),await ru(e,c,()=>l,g=>{l=g},g=>{t=g},()=>{Qe();try{I()}catch{}try{clearInterval(A)}catch{}Pt({serverManager:r,tunnelProcess:u.current,exit:!1})},d)}async function ru(e,t,r,o,n,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await uo(),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;n(()=>f?.());let p=await Le("",u,0,r,h=>{f=h},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let h=`http://localhost:${k}`,{openBrowser:w}=await Promise.resolve().then(()=>(sn(),Fs));w(h),console.log(m.green(`
213
213
  \u{1F310} Opening ${h}
214
- `))}else if(d==="keys")await ru(e,t,o,r);else if(d==="desktop")await su();else if(d==="devices")await au();else if(d==="settings")await iu();else if(d==="logs")await cu();else{try{i?.()}catch{}console.log(m.gray(`
214
+ `))}else if(d==="keys")await ou(e,t,o,r);else if(d==="desktop")await au();else if(d==="devices")await cu();else if(d==="settings")await su();else if(d==="logs")await lu();else{try{i?.()}catch{}console.log(m.gray(`
215
215
  Goodbye!
216
- `)),process.exit(0)}}}async function ru(e,t,r,o){let n=[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:m.gray("\u2190 Back"),action:"back"}],i=await Le("Keys",n,0,o),s=i>=0?n[i].action:"back";if(s==="otk"){let a=await qn(e.key,C);if(a){let c=Jn(C,a);r(await pn(a.oneTimeKey,e.key,c,t)),await F({oneTimeKey:a.oneTimeKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await co(m.yellow("Replace current key and disconnect all sessions? Continue?"))){let c=await Ct(),l=Mt(c);if(!await _r(l,C,t,e.key)){r(m.red("Key regeneration failed \u2014 could not reach the server"));return}let u=wt(c,l,e.name||"Default");Object.assign(e,u),r(await pn("",e.key,"",t)),await F({permanentKey:e.key,oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:"",pairingUsed:!0})}}var Da={"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 ou(e,t){let r=t.map(s=>({label:Da[s]||s,action:s}));r.push({label:m.gray("\u2190 Back"),action:"back"});let o=Math.max(0,t.indexOf(e)),n=await Le("Prevent sleep",r,o),i=n>=0?r[n].action:"back";i!=="back"&&await ee("/api/sleep-inhibit",{mode:i})}async function iu(){for(;;){let e=!1,t="never",r=[],o=()=>[{label:`Launch on system startup: ${e?m.green("ON"):m.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${m.green(Da[t]||t)} \u25B6`,action:"sleep"},{label:m.gray("\u2190 Back"),action:"back"}],n=o(),i=null,s=async()=>{let l=await uo();e=!!l.autoStart,t=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],n=o(),i?.()};await s(),dn=s;let a=await Le("Settings",n,0,"",l=>{i=l});dn=null;let c=a>=0?n[a].action:"back";if(c==="autostart")await ee("/api/autostart",{enabled:!e});else if(c==="sleep")await ou(t,r);else return}}async function su(){for(;;){let e=!1,t={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?m.green("ON \u2192 turn OFF"):m.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${t.screenRecording?m.green("\u2713"):m.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${t.accessibility?m.green("\u2713"):m.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:m.gray("\u2190 Back")}],n=null,i=async()=>{let a=await X("/api/ui/state")||{};e=!!a.desktopEnabled,t={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,n?.()};await i(),dn=i;let s=await Le("Remote Desktop",o,0,"",a=>{n=a});if(dn=null,s===0)await ee("/api/desktop/toggle",{enabled:!e});else if(s===1&&!t.screenRecording)await ee("/api/permissions/request",{type:"screenRecording"})||Er("screenRecording");else if(s===2&&!t.accessibility)await ee("/api/permissions/request",{type:"accessibility"})||Er("accessibility");else if(s===3||s===-1)return}}async function au(){for(;;){let[e,t]=await Promise.all([X("/api/device/approved"),X("/api/device/auto-approve")]),r=e?.devices||[],o=!!t?.enabled,n=[{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 Le(`Approved Devices (${r.length})`,n,0);if(i===-1)return;let s=n[i];if(s.action==="back")return;if(s.action==="toggle"){await ee("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await co(m.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await ee("/api/device/remove",{deviceId:s.deviceId})}}async function cu(){let e=hi(Vo),t=e.length?e.join(`
216
+ `)),process.exit(0)}}}async function ou(e,t,r,o){let n=[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:m.gray("\u2190 Back"),action:"back"}],i=await Le("Keys",n,0,o),s=i>=0?n[i].action:"back";if(s==="otk"){let a=await qn(e.key,C);if(a){let c=Jn(C,a);r(await pn(a.oneTimeKey,e.key,c,t)),await F({oneTimeKey:a.oneTimeKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await co(m.yellow("Replace current key and disconnect all sessions? Continue?"))){let c=await Ct(),l=Mt(c);if(!await _r(l,C,t,e.key)){r(m.red("Key regeneration failed \u2014 could not reach the server"));return}let u=wt(c,l,e.name||"Default");Object.assign(e,u),r(await pn("",e.key,"",t)),await F({permanentKey:e.key,oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:"",pairingUsed:!0})}}var Ba={"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 iu(e,t){let r=t.map(s=>({label:Ba[s]||s,action:s}));r.push({label:m.gray("\u2190 Back"),action:"back"});let o=Math.max(0,t.indexOf(e)),n=await Le("Prevent sleep",r,o),i=n>=0?r[n].action:"back";i!=="back"&&await ee("/api/sleep-inhibit",{mode:i})}async function su(){for(;;){let e=!1,t="never",r=[],o=()=>[{label:`Launch on system startup: ${e?m.green("ON"):m.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${m.green(Ba[t]||t)} \u25B6`,action:"sleep"},{label:m.gray("\u2190 Back"),action:"back"}],n=o(),i=null,s=async()=>{let l=await uo();e=!!l.autoStart,t=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],n=o(),i?.()};await s(),dn=s;let a=await Le("Settings",n,0,"",l=>{i=l});dn=null;let c=a>=0?n[a].action:"back";if(c==="autostart")await ee("/api/autostart",{enabled:!e});else if(c==="sleep")await iu(t,r);else return}}async function au(){for(;;){let e=!1,t={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?m.green("ON \u2192 turn OFF"):m.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${t.screenRecording?m.green("\u2713"):m.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${t.accessibility?m.green("\u2713"):m.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:m.gray("\u2190 Back")}],n=null,i=async()=>{let a=await X("/api/ui/state")||{};e=!!a.desktopEnabled,t={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,n?.()};await i(),dn=i;let s=await Le("Remote Desktop",o,0,"",a=>{n=a});if(dn=null,s===0)await ee("/api/desktop/toggle",{enabled:!e});else if(s===1&&!t.screenRecording)await ee("/api/permissions/request",{type:"screenRecording"})||Er("screenRecording");else if(s===2&&!t.accessibility)await ee("/api/permissions/request",{type:"accessibility"})||Er("accessibility");else if(s===3||s===-1)return}}async function cu(){for(;;){let[e,t]=await Promise.all([X("/api/device/approved"),X("/api/device/auto-approve")]),r=e?.devices||[],o=!!t?.enabled,n=[{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 Le(`Approved Devices (${r.length})`,n,0);if(i===-1)return;let s=n[i];if(s.action==="back")return;if(s.action==="toggle"){await ee("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await co(m.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await ee("/api/device/remove",{deviceId:s.deviceId})}}async function lu(){let e=hi(Vo),t=e.length?e.join(`
217
217
  `):m.gray(" No logs yet"),r=`
218
218
  ${m.dim("Log file:")} ${m.cyan(Rn)}
219
- ${m.dim(`Tail: tail -f ${Rn}`)}`;await Le("Logs",[{label:m.gray("\u2190 Back")}],0,t+r)}async function Ba(){let e=Re(),t=await Yi(),r=ao(e,t?.latest??null),o=[];t?.latest&&o.push({label:m.yellow(`Update to v${t.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:m.gray("Exit"),action:"exit"});let n=await Le("",o,0,r),i=n>=0?o[n].action:"exit";if(i==="update"){let s=Math.min(Fe.headerWidth,process.stdout.columns||Fe.headerWidth);vr(),console.log(ie.orange(`
219
+ ${m.dim(`Tail: tail -f ${Rn}`)}`;await Le("Logs",[{label:m.gray("\u2190 Back")}],0,t+r)}async function Ua(){let e=Re(),t=await Xi(),r=ao(e,t?.latest??null),o=[];t?.latest&&o.push({label:m.yellow(`Update to v${t.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:m.gray("Exit"),action:"exit"});let n=await Le("",o,0,r),i=n>=0?o[n].action:"exit";if(i==="update"){let s=Math.min(Fe.headerWidth,process.stdout.columns||Fe.headerWidth);vr(),console.log(ie.orange(`
220
220
  `+"\u2550".repeat(s))),console.log(m.gray(` \u2713 Stopped running instances
221
221
  `)),console.log(m.yellow(` \u2B06 Run this command to update:
222
222
  `)),console.log(m.white.bold(` npm i -g ${De}
223
223
  `)),console.log(ie.orange("\u2550".repeat(s))+`
224
- `),process.exit(0)}else i==="ui"?await Ma():i==="tui"?await Na():process.exit(0)}var Ua=[["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 Bo(){Wt(Re()),console.log(m.white.bold(`
224
+ `),process.exit(0)}else i==="ui"?await $a():i==="tui"?await Da():process.exit(0)}var Fa=[["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 Bo(){Wt(Re()),console.log(m.white.bold(`
225
225
  Usage:
226
- `));let e=Math.max(...Ua.map(([t])=>t.length))+2;for(let[t,r]of Ua)console.log(" "+m.cyan(t.padEnd(e))+m.gray(r));console.log()}async function Zn(){return await se()?!0:(console.log(m.red(`
226
+ `));let e=Math.max(...Fa.map(([t])=>t.length))+2;for(let[t,r]of Fa)console.log(" "+m.cyan(t.padEnd(e))+m.gray(r));console.log()}async function Zn(){return await se()?!0:(console.log(m.red(`
227
227
  \u2717 Server not running. Start it first: `)+m.cyan("9remote start")+`
228
- `),!1)}async function lu(e){if(!await Zn())return;if(e){let r=await ee("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(m.red(`
228
+ `),!1)}async function uu(e){if(!await Zn())return;if(e){let r=await ee("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(m.red(`
229
229
  \u2717 Regenerate failed
230
230
  `));return}console.log(m.green(`
231
231
  \u2713 New key: `)+m.white.bold(o.permanentKey)+`
@@ -233,17 +233,17 @@ Usage:
233
233
  \u2717 No key yet. Run: `)+m.cyan("9remote start")+`
234
234
  `);return}console.log(m.white(`
235
235
  Key`.padEnd(14))+m.white.bold(t.permanentKey)),t.qrUrl&&console.log(m.white("Connect URL".padEnd(14))+m.cyan(t.qrUrl)),console.log(m.white("App URL".padEnd(14))+m.gray(`${C}/login`)+`
236
- `)}async function uu(){if(!await Zn())return;let e=await ee("/api/key/one-time"),t=e&&e.ok?await e.json():null;if(!t?.qrUrl){console.log(m.red(`
236
+ `)}async function fu(){if(!await Zn())return;let e=await ee("/api/key/one-time"),t=e&&e.ok?await e.json():null;if(!t?.qrUrl){console.log(m.red(`
237
237
  \u2717 Failed to create one-time key
238
238
  `));return}console.log(m.green(`
239
239
  \u2713 One-time key (30 min): `)+m.white.bold(t.oneTimeKey)),console.log(m.white("Connect URL ")+m.cyan(t.qrUrl)+`
240
- `)}async function fu(){if(!await Zn())return;let t=(await X("/api/device/approved")||{}).devices||[],r=await X("/api/device/auto-approve")||{};if(console.log(m.white(`
240
+ `)}async function pu(){if(!await Zn())return;let t=(await X("/api/device/approved")||{}).devices||[],r=await X("/api/device/auto-approve")||{};if(console.log(m.white(`
241
241
  Auto-approve: `)+(r.enabled?m.green("ON"):m.gray("OFF"))),!t.length){console.log(m.gray(`No approved devices
242
- `));return}console.log(m.white(`Approved devices (${t.length}):`));for(let o of t)console.log(" "+m.cyan(o.deviceId));console.log()}async function pu(e){if(!await Zn())return;let t=e==="on";if(e!=="on"&&e!=="off"){console.log(m.red(`
242
+ `));return}console.log(m.white(`Approved devices (${t.length}):`));for(let o of t)console.log(" "+m.cyan(o.deviceId));console.log()}async function du(e){if(!await Zn())return;let t=e==="on";if(e!=="on"&&e!=="off"){console.log(m.red(`
243
243
  \u2717 Usage: 9remote auto-approve <on|off>
244
244
  `));return}let r=await ee("/api/device/auto-approve",{enabled:t}),o=r&&r.ok?await r.json():null;console.log(m.green(`
245
245
  \u2713 Auto-approve: `)+(o?.enabled?m.green("ON"):m.gray("OFF"))+`
246
- `)}async function du(e){if(!await Zn())return;if(!e){let n=(await X("/api/device/pending")||{}).pending||[];if(!n.length){console.log(m.gray(`
246
+ `)}async function mu(e){if(!await Zn())return;if(!e){let n=(await X("/api/device/pending")||{}).pending||[];if(!n.length){console.log(m.gray(`
247
247
  No pending devices
248
248
  `));return}console.log(m.white(`
249
249
  Pending devices (${n.length}):`));for(let i of n)console.log(" "+m.cyan(i.socketId)+m.gray(` ${i.deviceId?.slice(0,8)||""} ${i.ip||""}`));console.log(m.gray(`
@@ -252,5 +252,5 @@ Approve with: `)+m.cyan("9remote approve <socketId>")+`
252
252
  \u2713 Approved
253
253
  `):m.red(`
254
254
  \u2717 Approve failed (invalid socketId?)
255
- `))}async function Fa(e){let t=e[2],r=e.slice(3);switch(t){case"help":case"-h":case"--help":return Bo(),!0;case"key":return await lu(r.includes("--new")),!0;case"otk":return await uu(),!0;case"devices":return await fu(),!0;case"auto-approve":return await pu(r[0]),!0;case"approve":return await du(r[0]),!0;default:return!1}}var Uo=process.argv[2];(Uo==="version"||Uo==="--version"||Uo==="-v")&&(process.stdout.write(Re()+`
256
- `),process.exit(0));mi();async function mu(){let e=process.argv[2];if(await Fa(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||vr(),e==="ui"?await Ia():e==="start"||process.argv.includes("--auto")?await La():process.argv.includes("--tray")||process.argv.includes("--start")?await Oa():process.stdin.isTTY?await Ba():Bo()}mu().catch(console.error);
255
+ `))}async function Ka(e){let t=e[2],r=e.slice(3);switch(t){case"help":case"-h":case"--help":return Bo(),!0;case"key":return await uu(r.includes("--new")),!0;case"otk":return await fu(),!0;case"devices":return await pu(),!0;case"auto-approve":return await du(r[0]),!0;case"approve":return await mu(r[0]),!0;default:return!1}}var Uo=process.argv[2];(Uo==="version"||Uo==="--version"||Uo==="-v")&&(process.stdout.write(Re()+`
256
+ `),process.exit(0));mi();async function hu(){let e=process.argv[2];if(await Ka(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||vr(),e==="ui"?await Oa():e==="start"||process.argv.includes("--auto")?await _a():process.argv.includes("--tray")||process.argv.includes("--start")?await La():process.stdin.isTTY?await Ua():Bo()}hu().catch(console.error);