termill 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AUTHORING.md CHANGED
@@ -36,6 +36,7 @@ Add a `termill` property to your `package.json`:
36
36
  | `description` | Yes | Short description shown in search results |
37
37
  | `launchCommand` | Yes | The command termill runs to launch the game (typically your `bin` key) |
38
38
  | `category` | No | Category tag for discovery filtering (e.g. `puzzle`, `action`, `arcade`) |
39
+ | `creatorKey` | No | Your Ed25519 public key (64-char hex from `~/.termill/keys/id_ed25519.pub`). Enables feedback moderation — without it, you cannot flag or moderate feedback on your game. |
39
40
 
40
41
  ---
41
42
 
@@ -43,6 +44,7 @@ Add a `termill` property to your `package.json`:
43
44
 
44
45
  - The `bin` field must point to a runnable Node.js script.
45
46
  - The script must start with a `#!/usr/bin/env node` shebang on line 1.
47
+ - **Do not rely on npm lifecycle scripts** (`postinstall`, `preinstall`, etc.). termill installs packages with `--ignore-scripts` for security — lifecycle scripts will not run.
46
48
 
47
49
  ```js
48
50
  #!/usr/bin/env node
@@ -128,13 +130,60 @@ Each check prints `✓`, `✗`, or `⚠` (warning). Exit code is 0 when all requ
128
130
  "termill": {
129
131
  "name": "My Termill Game",
130
132
  "description": "A fun terminal puzzle game.",
131
- "launchCommand": "my-termill-game"
133
+ "launchCommand": "my-termill-game",
134
+ "creatorKey": "your64charhexpublickeyhere..."
132
135
  }
133
136
  }
134
137
  ```
135
138
 
136
139
  ---
137
140
 
141
+ ## Feedback system
142
+
143
+ termill includes a decentralized feedback system. Players can leave comments on any game, and creators can view and moderate feedback via the creator dashboard.
144
+
145
+ ### How it works
146
+
147
+ - Feedback records are signed with the player's Ed25519 keypair and stored locally.
148
+ - Records are distributed via the P2P gossip network — no central server required.
149
+ - Records are append-only and immutable. Edits and retractions are new records that reference the original.
150
+ - Creators can publish moderation flags that propagate via gossip. Each peer decides whether to respect creator flags.
151
+
152
+ ### Setting up as a creator
153
+
154
+ 1. Run `termill` to generate your identity (if you haven't already).
155
+ 2. Copy your public key from `~/.termill/keys/id_ed25519.pub`.
156
+ 3. Add it as `creatorKey` in your game's `termill` metadata block.
157
+ 4. Publish to npm.
158
+
159
+ Once your game is installed by players, you can view feedback in the **creator dashboard** (`[D]` from the home screen).
160
+
161
+ ### Why creatorKey is safe to publish
162
+
163
+ `creatorKey` is your **public** key — it is meant to be visible. Publishing it in your `package.json` does not create a security risk because all moderation actions (flagging feedback, retracting flags) require a cryptographic signature from the matching **private** key, which never leaves your machine.
164
+
165
+ If someone copies your `creatorKey` into their own game's `package.json`, they still cannot moderate feedback on your games — signature verification will reject anything not signed by your private key. The only effect is that your creator dashboard would show their game alongside yours, which is a cosmetic annoyance at worst.
166
+
167
+ Conversely, there is no reason to use someone else's `creatorKey` — you would not be able to moderate feedback on that game, and your own games would disappear from your dashboard.
168
+
169
+ ---
170
+
171
+ ## Identity portability
172
+
173
+ Your termill identity (Ed25519 keypair) lives at `~/.termill/keys/`. To use the same identity on another device:
174
+
175
+ ```bash
176
+ # Export (creates a password-encrypted file)
177
+ termill export-identity
178
+
179
+ # Transfer termill-identity.json to the other device, then:
180
+ termill import-identity termill-identity.json
181
+ ```
182
+
183
+ The export file is encrypted with AES-256-GCM using a password-derived key (scrypt). Your private key is never stored in plaintext outside of `~/.termill/keys/`.
184
+
185
+ ---
186
+
138
187
  ## Questions and support
139
188
 
140
189
  Open an issue on the [termill GitHub repository](https://github.com/example/termill) or search npm for other termill games for inspiration.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,7 @@
1
- # v0.2.1Authoring Doc Fix
1
+ # v0.4.0App Updates
2
2
 
3
- Released: 2026-03-21
3
+ Released: [TBD]
4
4
 
5
- - `AUTHORING.md` is now included in the npm package, so the link from the README resolves correctly on npmjs.com
5
+ - [planned] Unified update system check all installed apps and termill itself for newer versions on npm
6
+ - [planned] Startup notification banner when updates are available
7
+ - [planned] Dedicated update screen accessible from home — view outdated apps, update individually or all at once
package/README.md CHANGED
@@ -54,7 +54,7 @@ Press `CTRL+C` at any time to quit.
54
54
 
55
55
  ## For Game Authors
56
56
 
57
- Want to publish a terminal game to the termill ecosystem? Use `termill init` to scaffold a compliant project in seconds, `termill validate .` to check it before publishing, then `npm publish` to make it discoverable. Full spec and getting-started guide in [AUTHORING.md](AUTHORING.md).
57
+ Want to publish a terminal game to the termill ecosystem? Use `termill init` to scaffold a compliant project in seconds, `termill validate .` to check it before publishing, then `npm publish` to make it discoverable. Full spec and getting-started guide in [AUTHORING.md](https://unpkg.com/termill/AUTHORING.md).
58
58
 
59
59
  ---
60
60
 
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const _0x41a03d=_0x7ba9;(function(_0x59813f,_0xdb33b8){const _0x233ffa=_0x7ba9,_0x4dc150=_0x59813f();while(!![]){try{const _0x2c57cd=-parseInt(_0x233ffa(0xf7))/0x1*(-parseInt(_0x233ffa(0xc4))/0x2)+-parseInt(_0x233ffa(0x16c))/0x3*(parseInt(_0x233ffa(0x168))/0x4)+parseInt(_0x233ffa(0xe3))/0x5+-parseInt(_0x233ffa(0xa9))/0x6+parseInt(_0x233ffa(0xd0))/0x7+parseInt(_0x233ffa(0x141))/0x8*(parseInt(_0x233ffa(0xaf))/0x9)+-parseInt(_0x233ffa(0x137))/0xa*(-parseInt(_0x233ffa(0xbb))/0xb);if(_0x2c57cd===_0xdb33b8)break;else _0x4dc150['push'](_0x4dc150['shift']());}catch(_0x373baf){_0x4dc150['push'](_0x4dc150['shift']());}}}(_0x259c,0xb1113));import{mkdirSync as _0x485479}from'node:fs';import{homedir as _0x555fc1}from'node:os';import{join as _0x34c088}from'node:path';var w=_0x34c088(_0x555fc1(),_0x41a03d(0x11c)),x=_0x34c088(w,_0x41a03d(0x124)),k=_0x34c088(w,_0x41a03d(0x145)),b=_0x34c088(w,_0x41a03d(0xe0)),O=[];import{generateKeyPairSync as _0x467e84,sign as _0x4f8e27,verify as _0x3b36d5,createPublicKey as _0x226138}from'node:crypto';import{readFileSync as _0x596c64,writeFileSync as _0x57be24,existsSync as _0x135792,mkdirSync as _0x2b1cf6}from'node:fs';import{join as _0x4523b3}from'node:path';var z=_0x4523b3(x,_0x41a03d(0xfc)),D=_0x4523b3(x,_0x41a03d(0x103));function Q(){const _0x1bdd88=_0x41a03d;_0x2b1cf6(x,{'recursive':!0x0});let {privateKey:_0x579eee,publicKey:_0x5a7dab}=_0x467e84(_0x1bdd88(0x155),{'privateKeyEncoding':{'type':_0x1bdd88(0x175),'format':_0x1bdd88(0xa5)},'publicKeyEncoding':{'type':_0x1bdd88(0x151),'format':_0x1bdd88(0x11b)}}),_0x2013ff=_0x5a7dab['slice'](-0x20)[_0x1bdd88(0xb9)]('hex');return _0x57be24(z,_0x579eee,{'encoding':_0x1bdd88(0x176),'mode':0x180}),_0x57be24(D,_0x2013ff,{'encoding':_0x1bdd88(0x176),'mode':0x1a4}),{'publicKey':_0x2013ff};}function X(){return _0x135792(z)&&_0x135792(D);}function Z(){const _0xdee8a8=_0x41a03d;return _0x596c64(D,_0xdee8a8(0x176))[_0xdee8a8(0x14b)]();}import{readFileSync as _0x23bde5,writeFileSync as _0x35785c,existsSync as _0x4b25ff,mkdirSync as _0x3f6b9d}from'node:fs';import{dirname as _0xe3ba0}from'node:path';function N(){const _0x7a2deb=_0x41a03d;if(!_0x4b25ff(k))return[];try{return JSON[_0x7a2deb(0xf3)](_0x23bde5(k,_0x7a2deb(0x176)));}catch{return[];}}function q(_0x1be6b9){const _0x1393fa=_0x41a03d;_0x3f6b9d(_0xe3ba0(k),{'recursive':!0x0}),_0x35785c(k,JSON[_0x1393fa(0x133)](_0x1be6b9,null,0x2),_0x1393fa(0x176));}function ee(_0x289de3){const _0x4124d4=_0x41a03d;let _0xc88730=N()['filter'](_0x4028f0=>_0x4028f0[_0x4124d4(0xb8)]!==_0x289de3[_0x4124d4(0xb8)]);_0xc88730['push'](_0x289de3),q(_0xc88730);}function te(_0x492d34){const _0x2e5127=_0x41a03d;return N()[_0x2e5127(0x11a)](_0x407f75=>_0x407f75['packageName']===_0x492d34)??null;}function ne(_0x4a42a5){const _0x56b002=_0x41a03d;let _0x56524d=N()[_0x56b002(0xb0)](_0x280487=>_0x280487[_0x56b002(0xb8)]!==_0x4a42a5);q(_0x56524d);}function re(){return N();}import{execSync as _0x38c4e2}from'node:child_process';import{readFileSync as _0x13963b}from'node:fs';import{join as _0x4dc2c4}from'node:path';function Te(_0x14f20a){const _0x2f94c7=_0x41a03d;let _0x166f62=_0x38c4e2('npm\x20root\x20-g',{'encoding':'utf8'})[_0x2f94c7(0x14b)](),_0x14b974=_0x4dc2c4(_0x166f62,_0x14f20a,_0x2f94c7(0xb1)),_0x469eba=JSON[_0x2f94c7(0xf3)](_0x13963b(_0x14b974,_0x2f94c7(0x176)));if(!_0x469eba[_0x2f94c7(0xad)])throw new Error(_0x2f94c7(0x12e)+_0x14f20a+_0x2f94c7(0x117));return _0x469eba[_0x2f94c7(0xad)];}function Re(_0x111a11){const _0x5857f0=_0x41a03d;try{let _0x11d8ad=JSON[_0x5857f0(0xf3)](_0x38c4e2(_0x5857f0(0x10c)+_0x111a11+_0x5857f0(0x16a),{'encoding':_0x5857f0(0x176)}));return typeof _0x11d8ad==_0x5857f0(0x15d)?_0x11d8ad:String(_0x11d8ad);}catch{return _0x5857f0(0x115);}}async function _(_0x2b2856){const _0x2a3328=_0x41a03d;let _0x20efe7=te(_0x2b2856);if(_0x20efe7){let _0x3e17d0=Re(_0x2b2856);if(_0x3e17d0!=='unknown'&&_0x3e17d0===_0x20efe7[_0x2a3328(0x157)])return{'alreadyCurrent':!0x0};}_0x38c4e2(_0x2a3328(0x147)+_0x2b2856,{'stdio':'inherit'});let _0xb91aee=Te(_0x2b2856),_0x15e51a=JSON[_0x2a3328(0xf3)](_0x38c4e2(_0x2a3328(0x158)+_0x2b2856,{'encoding':_0x2a3328(0x176)}))[_0x2a3328(0x15e)]?.[_0x2b2856]?.['version']??'unknown';return ee({'packageName':_0x2b2856,'title':_0xb91aee[_0x2a3328(0xb5)]??_0x2b2856,'description':_0xb91aee[_0x2a3328(0x14c)]??'','version':_0x15e51a,'launchCommand':_0xb91aee['launchCommand'],'installedAt':new Date()[_0x2a3328(0x11e)]()}),_0x20efe7?{'updated':!0x0}:{};}async function oe(_0x2cf160){const _0x1cddc4=_0x41a03d;_0x38c4e2(_0x1cddc4(0xea)+_0x2cf160,{'stdio':'inherit'}),ne(_0x2cf160);}import{spawn as _0x2bf447}from'node:child_process';function Ae(){const _0x741bce=_0x41a03d;let _0xc6c261=process[_0x741bce(0x179)];return _0xc6c261===_0x741bce(0xdc)||_0xc6c261===_0x741bce(0x165)?_0xc6c261:_0x741bce(0x12c);}function Le(_0x45b988,_0x3c0358){const _0x2bb8d0=_0x41a03d;switch(_0x3c0358){case'win32':return{'cmd':_0x2bb8d0(0xf8),'args':['/c',_0x2bb8d0(0xd2),_0x2bb8d0(0xf8),'/k',_0x45b988],'options':{'detached':!0x0,'shell':!0x1}};case'darwin':return{'cmd':_0x2bb8d0(0x160),'args':['-e',_0x2bb8d0(0xab)+_0x45b988+'\x22'],'options':{'detached':!0x0}};case _0x2bb8d0(0x12c):default:return{'cmd':process[_0x2bb8d0(0xb3)][_0x2bb8d0(0x113)]??'xterm','args':['-e',_0x45b988],'options':{'detached':!0x0}};}}function T(_0x41506d){const _0x1b5ad2=_0x41a03d;let {cmd:_0x3fb745,args:_0xa5ef3e,options:_0x19c91a}=Le(_0x41506d,Ae());_0x2bf447(_0x3fb745,_0xa5ef3e,{..._0x19c91a,'stdio':_0x1b5ad2(0x11f)})[_0x1b5ad2(0x126)]();}import{readFileSync as _0x28ad62,writeFileSync as _0x1e7a2d,existsSync as _0x5820e6,mkdirSync as _0x1b5e87}from'node:fs';import{dirname as _0x56c2f6}from'node:path';function Je(){const _0x3492d9=_0x41a03d;if(!_0x5820e6(b))return[...O];try{return JSON[_0x3492d9(0xf3)](_0x28ad62(b,_0x3492d9(0x176)));}catch{return[...O];}}function Ge(_0x52e00e){const _0x2a56eb=_0x41a03d;_0x1b5e87(_0x56c2f6(b),{'recursive':!0x0}),_0x1e7a2d(b,JSON['stringify'](_0x52e00e,null,0x2),_0x2a56eb(0x176));}async function He(_0x2e87a5){const _0x2a6e66=_0x41a03d;try{let _0x40cb56=await fetch(_0x2e87a5+_0x2a6e66(0x111),{'signal':AbortSignal[_0x2a6e66(0xb7)](0x1388)});return _0x40cb56['ok']?await _0x40cb56[_0x2a6e66(0x130)]():[];}catch{return[];}}async function Be(_0x1acdc1){const _0x257ee2=_0x41a03d;try{let _0xa2e0b4=await fetch(_0x1acdc1+_0x257ee2(0xd1),{'signal':AbortSignal[_0x257ee2(0xb7)](0x1388)});return _0xa2e0b4['ok']?await _0xa2e0b4[_0x257ee2(0x130)]():[];}catch{return[];}}async function se(){const _0x590651=_0x41a03d;let _0x3814a9=Je(),[_0x42284f,_0x481f3e]=await Promise[_0x590651(0xee)]([Promise[_0x590651(0xee)](_0x3814a9[_0x590651(0x138)](_0x6daeb4=>He(_0x6daeb4))),Promise[_0x590651(0xee)](_0x3814a9[_0x590651(0x138)](_0x267878=>Be(_0x267878)))]),_0x78f0ad=_0x42284f['flat'](),_0x12597d=_0x481f3e[_0x590651(0xf2)](),_0x4d9266=[...new Set([..._0x3814a9,..._0x12597d])];return Ge(_0x4d9266),{'games':_0x78f0ad,'peers':_0x4d9266};}var Ye=_0x41a03d(0xa6);function Fe(_0x43534c){const _0x4603bb=_0x41a03d;let _0xdd8858=_0x43534c[_0x4603bb(0xad)]??{};return{'packageName':_0x43534c[_0x4603bb(0xc0)],'title':_0xdd8858[_0x4603bb(0xb5)]??_0x43534c[_0x4603bb(0xc0)],'description':_0xdd8858[_0x4603bb(0x14c)]??_0x43534c['description']??'','version':_0x43534c[_0x4603bb(0x157)]??'unknown','keywords':_0x43534c['keywords']??[]};}function _0x7ba9(_0x24af0b,_0x208c12){_0x24af0b=_0x24af0b-0xa4;const _0x259c5a=_0x259c();let _0x7ba9ab=_0x259c5a[_0x24af0b];return _0x7ba9ab;}async function R(_0x268dd1=''){const _0x254856=_0x41a03d;let [_0xd26f8b,_0x2225bf]=await Promise[_0x254856(0xee)]([se()[_0x254856(0x13f)](()=>({'games':[]})),Ue(_0x268dd1)]),_0x7d65d1=_0xd26f8b['games']??[],_0x9f3c83=new Set(_0x7d65d1[_0x254856(0x138)](_0x52e6ad=>_0x52e6ad[_0x254856(0xb8)])),_0x213a28=_0x2225bf[_0x254856(0xb0)](_0x3d1e13=>!_0x9f3c83['has'](_0x3d1e13[_0x254856(0xb8)])),_0x56a7cf=_0x268dd1[_0x254856(0x14b)]()[_0x254856(0x154)](),_0x3829a4=_0x139bc9=>_0x56a7cf?_0x139bc9['packageName'][_0x254856(0x154)]()[_0x254856(0xb6)](_0x56a7cf)||(_0x139bc9[_0x254856(0xb5)]??'')[_0x254856(0x154)]()[_0x254856(0xb6)](_0x56a7cf)||(_0x139bc9['description']??'')[_0x254856(0x154)]()['includes'](_0x56a7cf):!0x0;return[..._0x7d65d1[_0x254856(0xb0)](_0x3829a4),..._0x213a28[_0x254856(0xb0)](_0x3829a4)];}async function Ue(_0x366229){const _0x18047f=_0x41a03d;try{let _0x3b6d7c=_0x366229?encodeURIComponent(_0x366229+_0x18047f(0xaa)):_0x18047f(0x146),_0x947ee9=Ye+_0x18047f(0xce)+_0x3b6d7c+_0x18047f(0x159),_0x1347cf=await fetch(_0x947ee9,{'signal':AbortSignal['timeout'](0x1f40)});return _0x1347cf['ok']?((await _0x1347cf[_0x18047f(0x130)]())[_0x18047f(0xff)]??[])[_0x18047f(0x138)](_0x2e4383=>Fe(_0x2e4383['package'])):[];}catch{return[];}}import{stdout as _0x58adf5}from'node:process';var j='\x1b',M=j+_0x41a03d(0x100),Ve=j+_0x41a03d(0x16d),ze=j+'[2m',Qe=j+_0x41a03d(0x104),ie=()=>_0x58adf5[_0x41a03d(0xeb)]??0x50;function m(_0x258d08){const _0x5c6f26=_0x41a03d;let _0x42815c=ie(),_0x5d0487='\x20'+_0x258d08+'\x20',_0x183c93=Math[_0x5c6f26(0x163)]((_0x42815c-_0x5d0487[_0x5c6f26(0x16b)])/0x2),_0x4f1fbe='─'[_0x5c6f26(0x148)](Math[_0x5c6f26(0xf9)](0x0,_0x183c93))+_0x5d0487+'─'['repeat'](Math[_0x5c6f26(0xf9)](0x0,_0x183c93));console['log'](Qe+_0x4f1fbe[_0x5c6f26(0x134)](0x0,_0x42815c)+M);}function K(_0x59152a,_0x21ebae){const _0x2c45bc=_0x41a03d;_0x59152a[_0x2c45bc(0x127)]((_0x14d1a5,_0x3fe131)=>{const _0x3fa4fa=_0x2c45bc;let _0x3a76f9=(_0x3fe131===_0x21ebae?'>\x20':'\x20\x20')+_0x14d1a5;console[_0x3fa4fa(0xda)](_0x3fe131===_0x21ebae?Ve+_0x3a76f9[_0x3fa4fa(0x139)](ie())+M:_0x3a76f9);});}function J(_0x57791b){const _0xfe8866=_0x41a03d;console[_0xfe8866(0xda)](ze+_0x57791b+M);}function h(_0x3b9a59){let _0x1e4313=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],_0x3162f6=0x0,_0x195aa4=null;return{'start'(){_0x195aa4=setInterval(()=>{const _0x34a3df=_0x7ba9;process[_0x34a3df(0xf4)][_0x34a3df(0xcd)]('\x0d'+_0x1e4313[_0x3162f6++%_0x1e4313['length']]+'\x20'+_0x3b9a59);},0x50);},'stop'(){const _0x5d1062=_0x7ba9;_0x195aa4&&(clearInterval(_0x195aa4),_0x195aa4=null,process['stdout'][_0x5d1062(0xcd)]('\x0d'+'\x20'[_0x5d1062(0x148)](_0x3b9a59[_0x5d1062(0x16b)]+0x4)+'\x0d'));}};}function f(){const _0x4959d1=_0x41a03d;process[_0x4959d1(0xf4)]['write'](_0x4959d1(0x15c));}function G(){return new Promise(_0x3bf1d6=>{const _0x5b8bae=_0x7ba9;let {stdin:_0x192349}=process,_0x1a11ab=_0x192349[_0x5b8bae(0x10e)];_0x192349[_0x5b8bae(0xc8)]&&_0x192349[_0x5b8bae(0xa4)](!0x0),_0x192349[_0x5b8bae(0xc2)](),_0x192349[_0x5b8bae(0xed)](_0x5b8bae(0x176));function _0x5dff84(_0x321638){const _0x32cb51=_0x5b8bae;_0x192349[_0x32cb51(0xd4)]('data',_0x5dff84),_0x192349[_0x32cb51(0xc8)]&&!_0x1a11ab&&_0x192349[_0x32cb51(0xa4)](!0x1),_0x192349[_0x32cb51(0xf0)]();let _0x5127dc=ae(_0x321638);_0x3bf1d6({'name':_0x5127dc,'sequence':_0x321638,'ctrl':_0x321638<='\x1a'&&_0x321638!=='\x0d','shift':!0x1});}_0x192349[_0x5b8bae(0x120)]('data',_0x5dff84);});}function H(_0xceac0e){const _0x26846d=_0x41a03d;let {stdin:_0x47c47f}=process;_0x47c47f['isTTY']&&_0x47c47f['setRawMode'](!0x0),_0x47c47f[_0x26846d(0xc2)](),_0x47c47f[_0x26846d(0xed)](_0x26846d(0x176));function _0x579f44(_0x35a087){_0xceac0e({'name':ae(_0x35a087),'sequence':_0x35a087});}return _0x47c47f['on'](_0x26846d(0x14e),_0x579f44),function(){const _0x2e9352=_0x26846d;_0x47c47f[_0x2e9352(0xd4)](_0x2e9352(0x14e),_0x579f44),_0x47c47f[_0x2e9352(0xc8)]&&_0x47c47f['setRawMode'](!0x1),_0x47c47f[_0x2e9352(0xf0)]();};}function ae(_0x5bd936){const _0x32ea5b=_0x41a03d;return _0x5bd936==='\x0d'||_0x5bd936==='\x0a'?_0x32ea5b(0x118):_0x5bd936==='\x1b'?_0x32ea5b(0xcf):_0x5bd936==='\x1b[A'?'up':_0x5bd936===_0x32ea5b(0x172)?_0x32ea5b(0x13d):_0x5bd936===_0x32ea5b(0x178)?_0x32ea5b(0x174):_0x5bd936===_0x32ea5b(0x13e)?_0x32ea5b(0xae):_0x5bd936==='\x7f'||_0x5bd936==='\x08'?'backspace':_0x5bd936==='\x03'?_0x32ea5b(0x10b):_0x5bd936;}async function ce(){const _0xc5fa68=_0x41a03d;if(f(),m(_0xc5fa68(0xc5)),X()){let _0x297a78=Z();console['log'](_0xc5fa68(0xd3)),console['log']('Your\x20identity:\x20'+_0x297a78[_0xc5fa68(0x134)](0x0,0x10)+'…\x0a'),console[_0xc5fa68(0xda)](_0xc5fa68(0x121)),await E();}else{console[_0xc5fa68(0xda)]('\x0aNo\x20identity\x20found.'),console[_0xc5fa68(0xda)](_0xc5fa68(0x14a)),await E();let _0x10f273=h(_0xc5fa68(0xbd));_0x10f273[_0xc5fa68(0xd2)]();let {publicKey:_0x1cf232}=Q();_0x10f273[_0xc5fa68(0xe2)](),console[_0xc5fa68(0xda)](_0xc5fa68(0xf1)),console[_0xc5fa68(0xda)]('\x20\x20'+_0x1cf232['slice'](0x0,0x10)+'…\x0a'),console[_0xc5fa68(0xda)](_0xc5fa68(0x121)),await E();}}async function B(_0x54c0c1=R){const _0x49822a=_0x41a03d;f(),m(_0x49822a(0x109));let _0x26d167='',_0x59e145=[],_0x4d259d=0x0,_0x34b53e=()=>{const _0x49997c=_0x49822a;f(),m(_0x49997c(0x109)),console[_0x49997c(0xda)](_0x49997c(0x15f)+_0x26d167+'_\x0a'),_0x59e145[_0x49997c(0x16b)]===0x0?console[_0x49997c(0xda)]('\x20\x20No\x20results.\x20Type\x20to\x20search\x20or\x20wait\x20for\x20peer\x20gossip.\x0a'):K(_0x59e145[_0x49997c(0x138)](_0xb4d436=>(_0xb4d436[_0x49997c(0xb5)]??_0xb4d436[_0x49997c(0xb8)])+'\x20\x20'+(_0xb4d436[_0x49997c(0x157)]??'')+'\x20\x20'+(_0xb4d436[_0x49997c(0x14c)]??'')),_0x4d259d),J('[↑↓]\x20navigate\x20\x20[ENTER]\x20install\x20\x20[L]\x20library\x20\x20[CTRL+C]\x20quit');},_0x4958b3=h(_0x49822a(0xe5));_0x4958b3[_0x49822a(0xd2)]();try{_0x59e145=await _0x54c0c1('');}catch{_0x59e145=[];}return _0x4958b3[_0x49822a(0xe2)](),_0x34b53e(),new Promise(_0x5dc7bf=>{let _0x2cd5c1=H(async({name:_0x5c2702,sequence:_0x2dd1e8})=>{const _0x9f8d74=_0x7ba9;if(_0x5c2702==='ctrl+c'&&(_0x2cd5c1(),process[_0x9f8d74(0xa7)](0x0)),_0x5c2702==='up'){_0x4d259d=Math[_0x9f8d74(0xf9)](0x0,_0x4d259d-0x1),_0x34b53e();return;}if(_0x5c2702===_0x9f8d74(0x13d)){_0x4d259d=Math[_0x9f8d74(0x142)](_0x59e145['length']-0x1,_0x4d259d+0x1),_0x34b53e();return;}if(_0x5c2702==='return'){if(_0x59e145['length']===0x0)return;let _0x1ada9a=_0x59e145[_0x4d259d];_0x2cd5c1(),f(),m(_0x9f8d74(0xa8)),console[_0x9f8d74(0xda)](_0x9f8d74(0x162)+_0x1ada9a[_0x9f8d74(0xb8)]+'…\x0a');let _0x217ee9=h(_0x9f8d74(0x147)+_0x1ada9a[_0x9f8d74(0xb8)]);_0x217ee9[_0x9f8d74(0xd2)]();try{await _(_0x1ada9a[_0x9f8d74(0xb8)]),_0x217ee9['stop'](),console[_0x9f8d74(0xda)](_0x9f8d74(0x12a)+_0x1ada9a[_0x9f8d74(0xb8)]+_0x9f8d74(0x135));}catch(_0x327dac){_0x217ee9[_0x9f8d74(0xe2)](),console['log'](_0x9f8d74(0x105)+_0x327dac['message']+_0x9f8d74(0x156));}await E(),_0x5dc7bf(B(_0x54c0c1));return;}if(_0x5c2702[_0x9f8d74(0x154)]()==='l'){_0x2cd5c1(),_0x5dc7bf(_0x9f8d74(0x12b));return;}if(_0x5c2702===_0x9f8d74(0xd6))_0x26d167=_0x26d167[_0x9f8d74(0x134)](0x0,-0x1);else{if(_0x2dd1e8[_0x9f8d74(0x16b)]===0x1&&_0x2dd1e8>='\x20')_0x26d167+=_0x2dd1e8;else return;}_0x4d259d=0x0;let _0x2cb6cc=h(_0x9f8d74(0x177));_0x2cb6cc['start']();try{_0x59e145=await _0x54c0c1(_0x26d167);}catch{_0x59e145=[];}_0x2cb6cc['stop'](),_0x34b53e();});});}async function C(_0x45f32a=T){f(),m('termill\x20—\x20library');let _0x1d0c70=re(),_0xd972ff=0x0,_0x55cbaa=()=>{const _0x119f79=_0x7ba9;f(),m(_0x119f79(0x132)),_0x1d0c70[_0x119f79(0x16b)]===0x0?console['log']('\x0a\x20\x20No\x20games\x20installed.\x20Press\x20H\x20to\x20discover\x20games.\x0a'):(console['log'](''),K(_0x1d0c70['map'](_0x3600b6=>(_0x3600b6[_0x119f79(0xb5)]??_0x3600b6[_0x119f79(0xb8)])+_0x119f79(0x116)+(_0x3600b6[_0x119f79(0x157)]??'?')),_0xd972ff)),J(_0x119f79(0x143));};return _0x55cbaa(),new Promise(_0x1503ce=>{let _0x324fbe=H(async({name:_0x12a306})=>{const _0x255ac5=_0x7ba9;if(_0x12a306===_0x255ac5(0x10b)&&(_0x324fbe(),process[_0x255ac5(0xa7)](0x0)),_0x12a306==='up'){_0xd972ff=Math[_0x255ac5(0xf9)](0x0,_0xd972ff-0x1),_0x55cbaa();return;}if(_0x12a306===_0x255ac5(0x13d)){_0xd972ff=Math[_0x255ac5(0x142)](_0x1d0c70['length']-0x1,_0xd972ff+0x1),_0x55cbaa();return;}if(_0x12a306==='return'&&_0x1d0c70[_0x255ac5(0x16b)]>0x0){let _0x48d104=_0x1d0c70[_0xd972ff];_0x324fbe(),f(),m(_0x255ac5(0x132));let _0x825ec3=h('Checking\x20'+_0x48d104['packageName']+_0x255ac5(0xd9));_0x825ec3['start']();let _0x4aeb91;try{_0x4aeb91=await _(_0x48d104[_0x255ac5(0xb8)]);}catch{_0x4aeb91={'alreadyCurrent':!0x0};}_0x825ec3[_0x255ac5(0xe2)](),_0x4aeb91[_0x255ac5(0xe6)]?console['log']('\x0a✓\x20'+_0x48d104[_0x255ac5(0xb8)]+_0x255ac5(0x112)):console[_0x255ac5(0xda)]('\x0a'+(_0x48d104[_0x255ac5(0xb5)]??_0x48d104[_0x255ac5(0xb8)])+_0x255ac5(0xb4)),_0x45f32a(_0x48d104[_0x255ac5(0x17b)]),_0x1503ce(C(_0x45f32a));return;}if(_0x12a306==='d'||_0x12a306==='D'){if(_0x1d0c70['length']===0x0)return;let _0x1a57ad=_0x1d0c70[_0xd972ff];if(_0x324fbe(),f(),m(_0x255ac5(0x132)),console['log'](_0x255ac5(0xd5)+(_0x1a57ad[_0x255ac5(0xb5)]??_0x1a57ad['packageName'])+'?\x20[Y/N]'),(await G())[_0x255ac5(0xc0)][_0x255ac5(0x154)]()==='y'){let _0x395217=h('Uninstalling\x20'+_0x1a57ad[_0x255ac5(0xb8)]+'…');_0x395217[_0x255ac5(0xd2)]();try{await oe(_0x1a57ad[_0x255ac5(0xb8)]),_0x395217['stop'](),console[_0x255ac5(0xda)](_0x255ac5(0x12a)+_0x1a57ad[_0x255ac5(0xb8)]+_0x255ac5(0xfe));}catch(_0x449c71){_0x395217[_0x255ac5(0xe2)](),console[_0x255ac5(0xda)](_0x255ac5(0x131)+_0x449c71['message']+_0x255ac5(0x156));}await E();}_0x1503ce(C(_0x45f32a));return;}if(_0x12a306==='h'||_0x12a306==='H'||_0x12a306===_0x255ac5(0xcf)){_0x324fbe(),_0x1503ce(_0x255ac5(0x173));return;}});});}async function E(){let _0x53523b;do _0x53523b=await G();while(_0x53523b['name']!=='return');}import{readFileSync as _0x136cbc,existsSync as _0x247463,readdirSync as _0x5c735b,statSync as _0x1ac5b3}from'node:fs';import{join as _0x39427a,resolve as _0x520e6d,isAbsolute as _0xe3300b}from'node:path';import{execSync as _0x1c9da8}from'node:child_process';function tt(_0x31bddd){const _0x2aea36=_0x41a03d;return _0x31bddd[_0x2aea36(0x153)]('.')||_0x31bddd[_0x2aea36(0x153)]('/')||_0xe3300b(_0x31bddd);}function nt(_0x540b40){const _0x57bb2e=_0x41a03d;let _0x4af7ef=_0x39427a(_0x520e6d(_0x540b40),'package.json');if(!_0x247463(_0x4af7ef))return null;try{return JSON[_0x57bb2e(0xf3)](_0x136cbc(_0x4af7ef,_0x57bb2e(0x176)));}catch{return null;}}function rt(_0x424ca9){const _0x1de596=_0x41a03d;try{return JSON[_0x1de596(0xf3)](_0x1c9da8('npm\x20view\x20'+_0x424ca9+_0x1de596(0xd8),{'encoding':_0x1de596(0x176)}));}catch{return null;}}function pe(_0x1d8a84,_0xc29e6f=[]){const _0x128757=_0x41a03d;let _0x5ae646=[];try{for(let _0x1d8510 of _0x5c735b(_0x1d8a84)){if(_0xc29e6f['includes'](_0x1d8510))continue;let _0x22799d=_0x39427a(_0x1d8a84,_0x1d8510),_0x3bb944;try{_0x3bb944=_0x1ac5b3(_0x22799d);}catch{continue;}_0x3bb944['isDirectory']()?_0x5ae646['push'](...pe(_0x22799d,_0xc29e6f)):/\.(js|mjs|cjs)$/[_0x128757(0x149)](_0x1d8510)&&_0x5ae646[_0x128757(0xdd)](_0x22799d);}}catch{}return _0x5ae646;}function ue(_0x53eff6){const _0x45ce68=_0x41a03d;let _0xe8b6eb=tt(_0x53eff6),_0x1384d7=_0xe8b6eb?nt(_0x53eff6):rt(_0x53eff6),_0x26d68e=[];if(!_0x1384d7)return _0x26d68e[_0x45ce68(0xdd)]({'check':_0x45ce68(0x10f),'passed':!0x1,'message':_0xe8b6eb?_0x45ce68(0xfa)+_0x53eff6:'Could\x20not\x20fetch\x20package\x20info\x20for\x20\x22'+_0x53eff6+'\x22\x20from\x20npm'}),_0x26d68e;let _0x12e0ba=_0x1384d7[_0x45ce68(0x119)],_0xa125a0=typeof _0x12e0ba==_0x45ce68(0x15d)?_0x12e0ba:_0x12e0ba&&typeof _0x12e0ba==_0x45ce68(0xde)?Object[_0x45ce68(0x17c)](_0x12e0ba)[0x0]:null,_0x48f4da=!!_0xa125a0;_0x26d68e[_0x45ce68(0xdd)]({'check':_0x45ce68(0xdb),'passed':_0x48f4da,'message':_0x48f4da?_0x45ce68(0x102)+JSON[_0x45ce68(0x133)](_0x12e0ba):'Missing\x20\x22bin\x22\x20field\x20in\x20package.json\x20—\x20add\x20a\x20bin\x20entry\x20pointing\x20to\x20your\x20entry\x20file'});let _0x4b7014=!0x1;if(_0xe8b6eb&&_0x48f4da&&(_0x4b7014=_0x247463(_0x39427a(_0x520e6d(_0x53eff6),_0xa125a0)),_0x26d68e[_0x45ce68(0xdd)]({'check':_0x45ce68(0x12d),'passed':_0x4b7014,'message':_0x4b7014?'bin\x20file\x20found:\x20'+_0xa125a0:_0x45ce68(0xb2)+_0xa125a0})),_0xe8b6eb&&_0x48f4da&&_0x4b7014){let _0x5165f8=_0x39427a(_0x520e6d(_0x53eff6),_0xa125a0),_0x2bcc4f=!0x1;try{_0x2bcc4f=_0x136cbc(_0x5165f8,_0x45ce68(0x176))[_0x45ce68(0x153)](_0x45ce68(0xdf));}catch{}_0x26d68e['push']({'check':_0x45ce68(0xc9),'passed':_0x2bcc4f,'message':_0x2bcc4f?_0x45ce68(0x13a):_0xa125a0+_0x45ce68(0x110)});}let _0x1b36c8=(Array['isArray'](_0x1384d7[_0x45ce68(0x164)])?_0x1384d7[_0x45ce68(0x164)]:[])['includes']('termill');_0x26d68e['push']({'check':'keywords\x20includes\x20\x22termill\x22','passed':_0x1b36c8,'message':_0x1b36c8?_0x45ce68(0x12f):'Add\x20\x22termill\x22\x20to\x20the\x20keywords\x20array\x20in\x20package.json\x20for\x20discoverability'});let _0x54b960=typeof _0x1384d7[_0x45ce68(0x14c)]==_0x45ce68(0x15d)&&_0x1384d7[_0x45ce68(0x14c)][_0x45ce68(0x14b)]()[_0x45ce68(0x16b)]>0x0;_0x26d68e[_0x45ce68(0xdd)]({'check':_0x45ce68(0x10d),'passed':_0x54b960,'message':_0x54b960?_0x45ce68(0x107)+_0x1384d7['description']+'\x22':'Missing\x20or\x20empty\x20\x22description\x22\x20field\x20in\x20package.json'});let _0x3a1166=_0x1384d7[_0x45ce68(0xad)],_0x233915=!!_0x3a1166&&typeof _0x3a1166==_0x45ce68(0xde);if(_0x26d68e[_0x45ce68(0xdd)]({'check':_0x45ce68(0x108),'passed':_0x233915,'message':_0x233915?_0x45ce68(0x17a):_0x45ce68(0x122)}),_0x233915){let _0x1dd4a2=typeof _0x3a1166[_0x45ce68(0xc0)]==_0x45ce68(0x15d)&&_0x3a1166[_0x45ce68(0xc0)][_0x45ce68(0x14b)]()[_0x45ce68(0x16b)]>0x0,_0x1e225e=typeof _0x3a1166[_0x45ce68(0x14c)]=='string'&&_0x3a1166[_0x45ce68(0x14c)]['trim']()[_0x45ce68(0x16b)]>0x0;_0x26d68e[_0x45ce68(0xdd)]({'check':_0x45ce68(0x166),'passed':_0x1dd4a2,'message':_0x1dd4a2?_0x45ce68(0xec)+_0x3a1166['name']+'\x22':_0x45ce68(0x129)}),_0x26d68e[_0x45ce68(0xdd)]({'check':_0x45ce68(0xc3),'passed':_0x1e225e,'message':_0x1e225e?'termill.description:\x20\x22'+_0x3a1166[_0x45ce68(0x14c)]+'\x22':_0x45ce68(0x16e)});}if(_0xe8b6eb){let _0x2ad2cf=!0x1,_0x3ca3da=pe(_0x520e6d(_0x53eff6),[_0x45ce68(0xef),_0x45ce68(0x16f),'dist']);for(let _0x309e3d of _0x3ca3da)try{if(_0x136cbc(_0x309e3d,'utf8')[_0x45ce68(0xb6)](_0x45ce68(0xf6))){_0x2ad2cf=!0x0;break;}}catch{}_0x26d68e['push']({'check':_0x45ce68(0x136),'passed':_0x2ad2cf,'message':_0x2ad2cf?_0x45ce68(0xba):_0x45ce68(0xbf)});}return _0x26d68e;}import{mkdirSync as _0x529fac,writeFileSync as _0x1db138,existsSync as _0x104cc5}from'node:fs';import{join as _0x253e19}from'node:path';import{createInterface as _0x219bc1}from'node:readline';function P(_0x8df6f3,_0xac6b66){return new Promise(_0xfbfde7=>{const _0x585eb7=_0x7ba9;_0x8df6f3['question'](_0xac6b66,_0x5a08fd=>_0xfbfde7(_0x5a08fd[_0x585eb7(0x14b)]()));});}async function me(){const _0x46fc45=_0x41a03d;let _0x559653=_0x219bc1({'input':process[_0x46fc45(0x169)],'output':process[_0x46fc45(0xf4)]});console[_0x46fc45(0xda)]('\x0atermill\x20init\x20—\x20scaffold\x20a\x20new\x20termill\x20game\x20project\x0a');let _0xd80268=await P(_0x559653,_0x46fc45(0x14f)),_0x187bfd=await P(_0x559653,_0x46fc45(0xe1)),_0x250a68=await P(_0x559653,_0x46fc45(0x106)),_0x386070=await P(_0x559653,_0x46fc45(0x125)),_0x338cff=await P(_0x559653,'Category\x20(e.g.\x20puzzle,\x20action,\x20arcade)\x20[optional,\x20press\x20Enter\x20to\x20skip]:\x20');_0x559653[_0x46fc45(0x15b)](),_0xd80268||(console[_0x46fc45(0x10a)](_0x46fc45(0x101)),process[_0x46fc45(0xa7)](0x1));let _0x5f5b06=_0x253e19(process[_0x46fc45(0x11d)](),_0xd80268);_0x104cc5(_0x5f5b06)&&(console[_0x46fc45(0x10a)](_0x46fc45(0x15a)+_0xd80268+_0x46fc45(0xe4)),process[_0x46fc45(0xa7)](0x1)),_0x529fac(_0x5f5b06,{'recursive':!0x0});let _0x279dbd={'name':_0xd80268,'version':'1.0.0','description':_0x250a68||'','main':_0x46fc45(0xd7),'bin':{[_0xd80268]:_0x46fc45(0x114)},'keywords':[_0x46fc45(0xad)],'author':_0x386070||'','license':_0x46fc45(0xbe),'termill':{'name':_0x187bfd||_0xd80268,'description':_0x250a68||'','launchCommand':_0xd80268,..._0x338cff?{'category':_0x338cff}:{}}};_0x1db138(_0x253e19(_0x5f5b06,_0x46fc45(0xb1)),JSON['stringify'](_0x279dbd,null,0x2)+'\x0a',_0x46fc45(0x176));let _0xe48516=[_0x46fc45(0xdf),'','//\x20'+(_0x187bfd||_0xd80268)+_0x46fc45(0x14d),_0x46fc45(0x17d),'',_0x46fc45(0xc6)+(_0x187bfd||_0xd80268)+_0x46fc45(0xac),_0x46fc45(0xe8),'',_0x46fc45(0x167),'process.stdin.setEncoding(\x27utf8\x27);',_0x46fc45(0x150),_0x46fc45(0x144),_0x46fc45(0x170),'']['join']('\x0a');_0x1db138(_0x253e19(_0x5f5b06,_0x46fc45(0xd7)),_0xe48516,'utf8'),_0x1db138(_0x253e19(_0x5f5b06,'.gitignore'),_0x46fc45(0x152),'utf8');let _0x29ab2e=['#\x20'+(_0x187bfd||_0xd80268),'',_0x250a68||'A\x20termill\x20game.','',_0x46fc45(0x128),'',_0x46fc45(0xcb),'npm\x20install\x20-g\x20'+_0xd80268,_0x46fc45(0xad),_0x46fc45(0x161),'',_0x46fc45(0xe7),'','```bash',_0xd80268,_0x46fc45(0x161),'',_0x46fc45(0xe9),'',_0x46fc45(0xbe),'']['join']('\x0a');_0x1db138(_0x253e19(_0x5f5b06,_0x46fc45(0xc1)),_0x29ab2e,_0x46fc45(0x176)),console['log']('\x0a✓\x20Project\x20scaffolded\x20at\x20./'+_0xd80268+'/'),console[_0x46fc45(0xda)]('\x0aNext\x20steps:'),console[_0x46fc45(0xda)]('\x20\x20cd\x20'+_0xd80268),console[_0x46fc45(0xda)]('\x20\x20npm\x20link\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20link\x20globally\x20for\x20local\x20testing'),console['log'](_0x46fc45(0x13b)),console[_0x46fc45(0xda)](_0x46fc45(0xcc)),console[_0x46fc45(0xda)]('');}function _0x259c(){const _0x292b46=['string','dependencies','\x0aSearch:\x20','osascript','```','\x0aInstalling\x20','floor','keywords','darwin','termill.name\x20is\x20set','process.stdin.resume();','3188116DAQaXO','stdin','\x20version\x20--json','length','3LlTwAA','[7m','termill.description\x20is\x20missing\x20or\x20empty','.git','});','function','\x1b[B','home','right','pkcs8','utf8','Searching…','\x1b[C','platform','termill\x20metadata\x20block\x20found','launchCommand','values','//\x20TODO:\x20implement\x20your\x20game\x20here','setRawMode','pem','https://registry.npmjs.org/-/v1/search','exit','termill\x20—\x20installing','8378736fuvRFB','\x20keywords:termill','do\x20shell\x20script\x20\x22open\x20-a\x20Terminal\x20','!\x27);','termill','left','963yvTKHv','filter','package.json','bin\x20file\x20not\x20found\x20at\x20path:\x20','env','\x20is\x20up\x20to\x20date.\x20Launching…','title','includes','timeout','packageName','toString','process.exit()\x20call\x20found\x20in\x20source\x20files','245201ilWRhU','message','Generating\x20Ed25519\x20keypair…','MIT','WARNING:\x20No\x20process.exit()\x20found.\x20termill\x20spawns\x20a\x20new\x20terminal\x20window\x20—\x20your\x20game\x20must\x20call\x20process.exit()\x20on\x20quit\x20to\x20close\x20it\x20cleanly','name','README.md','resume','termill.description\x20is\x20set','347462knFXPq','termill\x20—\x20identity','console.log(\x27Welcome\x20to\x20','check','isTTY','bin\x20file\x20has\x20#!/usr/bin/env\x20node\x20shebang','[termill]\x20Fatal\x20error:','```bash','\x20\x20npm\x20publish\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20publish\x20to\x20npm\x20when\x20ready','write','?text=','escape','5802188YvbRwm','/peers','start','\x0aWelcome\x20back!','removeListener','\x0aUninstall\x20','backspace','index.js','\x20--json','\x20for\x20updates…','log','bin\x20field\x20present','win32','push','object','#!/usr/bin/env\x20node','peers.json','Display\x20name\x20(e.g.\x20My\x20Termill\x20Game):\x20','stop','2059025EdyroT','\x22\x20already\x20exists\x20in\x20the\x20current\x20folder.','Discovering\x20games…','updated','Or\x20run\x20directly:','console.log(\x27Press\x20ENTER\x20to\x20quit.\x27);','##\x20License','npm\x20uninstall\x20-g\x20','columns','termill.name:\x20\x22','setEncoding','all','node_modules','pause','\x0aIdentity\x20created.\x20Your\x20public\x20key:','flat','parse','stdout','init','process.exit(','7YJWrer','cmd.exe','max','No\x20package.json\x20found\x20at\x20','argv','id_ed25519','Init\x20failed:','\x20uninstalled.\x20Press\x20ENTER\x20to\x20continue.','objects','[0m','\x0aError:\x20package\x20name\x20is\x20required.','bin\x20field\x20found:\x20','id_ed25519.pub','[1m','\x0a✗\x20Install\x20failed:\x20','Short\x20description:\x20','description:\x20\x22','termill\x20metadata\x20block\x20present','termill\x20—\x20discover','error','ctrl+c','npm\x20view\x20','description\x20is\x20non-empty','isRaw','package.json\x20readable','\x20is\x20missing\x20\x22#!/usr/bin/env\x20node\x22\x20on\x20line\x201','/games','\x20updated\x20to\x20latest.\x20Launching…','TERM','./index.js','unknown','\x20\x20v','\x22\x20is\x20missing\x20a\x20\x22termill\x22\x20property\x20in\x20its\x20package.json','return','bin','find','der','.termill','cwd','toISOString','ignore','once','Press\x20ENTER\x20to\x20continue.','Missing\x20\x22termill\x22\x20block\x20in\x20package.json\x20—\x20add\x20{\x20\x22termill\x22:\x20{\x20\x22name\x22:\x20\x22...\x22,\x20\x22description\x22:\x20\x22...\x22,\x20\x22launchCommand\x22:\x20\x22...\x22\x20}\x20}','validate','keys','Author\x20(e.g.\x20Jane\x20Doe\x20<jane@example.com>):\x20','unref','forEach','##\x20Play','termill.name\x20is\x20missing\x20or\x20empty','\x0a✓\x20','library','linux','bin\x20file\x20exists','Package\x20\x22','keywords\x20includes\x20\x22termill\x22','json','\x0a✗\x20Uninstall\x20failed:\x20','termill\x20—\x20library','stringify','slice','\x20installed.\x20Press\x20ENTER\x20to\x20continue.','process.exit()\x20call\x20found\x20(warn\x20only)','130VVKCEv','map','padEnd','Shebang\x20found','\x20\x20termill\x20validate\x20.\x20\x20\x20\x20#\x20check\x20compliance\x20before\x20publishing','then','down','\x1b[D','catch','passed','12872EHTwAV','min','[↑↓]\x20navigate\x20\x20[ENTER]\x20launch\x20\x20[D]\x20uninstall\x20\x20[H/ESC]\x20home\x20\x20[CTRL+C]\x20quit','\x20\x20process.exit(0);','library.json','keywords:termill','npm\x20install\x20-g\x20','repeat','test','Press\x20ENTER\x20to\x20generate\x20a\x20new\x20keypair\x20and\x20create\x20your\x20identity.\x0a','trim','description','\x20—\x20entry\x20point','data','Package\x20name\x20(npm\x20package\x20name,\x20e.g.\x20my-termill-game):\x20','process.stdin.once(\x27data\x27,\x20()\x20=>\x20{','spki','node_modules\x0a','startsWith','toLowerCase','ed25519','.\x20Press\x20ENTER\x20to\x20continue.','version','npm\x20list\x20-g\x20--json\x20','&size=20','\x0aError:\x20directory\x20\x22','close','\x1b[2J\x1b[H'];_0x259c=function(){return _0x292b46;};return _0x259c();}function at(){_0x485479(w,{'recursive':!0x0}),_0x485479(x,{'recursive':!0x0});}async function ct(){const _0x1489e3=_0x41a03d;at(),await ce();let _0x3cee05=_0x1489e3(0x173);for(;;)_0x3cee05===_0x1489e3(0x173)?_0x3cee05=await B(R):_0x3cee05===_0x1489e3(0x12b)?_0x3cee05=await C(T):_0x3cee05&&typeof _0x3cee05[_0x1489e3(0x13c)]==_0x1489e3(0x171)?_0x3cee05=await _0x3cee05:_0x3cee05=_0x1489e3(0x173);}var de=process['argv'][0x2];if(de===_0x41a03d(0x123)){let e=process[_0x41a03d(0xfb)][0x3]??'.',t=ue(e),r=!0x0;for(let n of t)n[_0x41a03d(0x140)]?console[_0x41a03d(0xda)]('✓\x20'+n['check']):n[_0x41a03d(0xc7)][_0x41a03d(0xb6)]('warn\x20only')?console[_0x41a03d(0xda)]('⚠\x20'+n[_0x41a03d(0xc7)]+':\x20'+n[_0x41a03d(0xbc)]):(console[_0x41a03d(0xda)]('✗\x20'+n['check']+':\x20'+n[_0x41a03d(0xbc)]),r=!0x1);process[_0x41a03d(0xa7)](r?0x0:0x1);}else de===_0x41a03d(0xf5)?me()[_0x41a03d(0x13f)](_0x7880b3=>{const _0x4ad054=_0x41a03d;console[_0x4ad054(0x10a)](_0x4ad054(0xfd),_0x7880b3['message']??_0x7880b3),process['exit'](0x1);}):ct()[_0x41a03d(0x13f)](_0x35e990=>{const _0x47a90d=_0x41a03d;console[_0x47a90d(0x10a)](_0x47a90d(0xca),_0x35e990[_0x47a90d(0xbc)]??_0x35e990),process['exit'](0x1);});
2
+ const _0x4fa3c4=_0x5908;(function(_0x52c428,_0x5a0bc5){const _0x54cf0e=_0x5908,_0x25fd45=_0x52c428();while(!![]){try{const _0x1e2cc6=-parseInt(_0x54cf0e(0x186))/0x1*(parseInt(_0x54cf0e(0x11b))/0x2)+-parseInt(_0x54cf0e(0x16d))/0x3*(parseInt(_0x54cf0e(0x1cf))/0x4)+-parseInt(_0x54cf0e(0x17b))/0x5+parseInt(_0x54cf0e(0xfb))/0x6*(-parseInt(_0x54cf0e(0x132))/0x7)+-parseInt(_0x54cf0e(0x1d6))/0x8+-parseInt(_0x54cf0e(0x175))/0x9*(parseInt(_0x54cf0e(0x150))/0xa)+parseInt(_0x54cf0e(0x1b9))/0xb*(parseInt(_0x54cf0e(0xb0))/0xc);if(_0x1e2cc6===_0x5a0bc5)break;else _0x25fd45['push'](_0x25fd45['shift']());}catch(_0x3e7d35){_0x25fd45['push'](_0x25fd45['shift']());}}}(_0x432d,0x8d30a));import{mkdirSync as _0x284898,readFileSync as _0x1cf8e7,writeFileSync as _0x1ed092}from'node:fs';import{createInterface as _0x3defc3}from'node:readline';import{homedir as _0x1fa255}from'node:os';import{join as _0x390d9d}from'node:path';var x=_0x390d9d(_0x1fa255(),_0x4fa3c4(0x149)),b=_0x390d9d(x,'keys'),C=_0x390d9d(x,_0x4fa3c4(0xe6)),j=_0x390d9d(x,_0x4fa3c4(0xdd)),S=_0x390d9d(x,_0x4fa3c4(0x17d)),F=_0x390d9d(x,'flags.json'),ce=[],le=_0x4fa3c4(0xc0);import{generateKeyPairSync as _0x5582bc,sign as _0x514f4e,verify as _0x3e1a11,createPublicKey as _0x2bd1fa,scryptSync as _0x1506e4,randomBytes as _0x4a2ed0,createCipheriv as _0x464207,createDecipheriv as _0x39794f}from'node:crypto';import{readFileSync as _0x15078e,writeFileSync as _0x3090d1,existsSync as _0x42aa0c,mkdirSync as _0x51e955}from'node:fs';import{join as _0x1f3c4f}from'node:path';var O=_0x1f3c4f(b,_0x4fa3c4(0x126)),D=_0x1f3c4f(b,'id_ed25519.pub');function Pe(){const _0x3c1eb1=_0x4fa3c4;_0x51e955(b,{'recursive':!0x0});let {privateKey:_0x36a868,publicKey:_0x56a174}=_0x5582bc(_0x3c1eb1(0x135),{'privateKeyEncoding':{'type':_0x3c1eb1(0xa3),'format':_0x3c1eb1(0x140)},'publicKeyEncoding':{'type':'spki','format':_0x3c1eb1(0xfe)}}),_0x4d90f4=_0x56a174['slice'](-0x20)[_0x3c1eb1(0x1d5)]('hex');return _0x3090d1(O,_0x36a868,{'encoding':_0x3c1eb1(0xe8),'mode':0x180}),_0x3090d1(D,_0x4d90f4,{'encoding':_0x3c1eb1(0xe8),'mode':0x1a4}),{'publicKey':_0x4d90f4};}function ve(){return _0x42aa0c(O)&&_0x42aa0c(D);}function E(){const _0x25c7c7=_0x4fa3c4;return _0x15078e(D,_0x25c7c7(0xe8))[_0x25c7c7(0xbe)]();}function U(_0x3749d7){const _0x2fa77f=_0x4fa3c4;let _0x5b37b1=_0x15078e(O,_0x2fa77f(0xe8));return _0x514f4e(null,Buffer[_0x2fa77f(0xcd)](_0x3749d7),_0x5b37b1)[_0x2fa77f(0x1d5)](_0x2fa77f(0x1a8));}function Y(_0x27a469,_0x5dece4,_0x1ba22a){const _0x4911be=_0x4fa3c4;let _0x420f1a=Buffer[_0x4911be(0xcd)](_0x1ba22a,_0x4911be(0x1a8)),_0x5d0710=Buffer[_0x4911be(0xcd)](_0x4911be(0x13e),'hex'),_0x1f9f15=Buffer['concat']([_0x5d0710,_0x420f1a]),_0x407069=_0x2bd1fa({'key':_0x1f9f15,'format':'der','type':_0x4911be(0x1d7)}),_0x3ca98b=Buffer[_0x4911be(0xcd)](_0x5dece4,_0x4911be(0x1a8));return _0x3e1a11(null,Buffer[_0x4911be(0xcd)](_0x27a469),_0x407069,_0x3ca98b);}function Re(_0x528e34){const _0x299536=_0x4fa3c4;let _0x258b5b=_0x15078e(O,_0x299536(0xe8)),_0x5d283d=_0x15078e(D,_0x299536(0xe8))['trim'](),_0x9a5d22=_0x4a2ed0(0x10),_0x4a9179=_0x1506e4(_0x528e34,_0x9a5d22,0x20),_0x30d889=_0x4a2ed0(0xc),_0x4f6174=_0x464207(_0x299536(0x197),_0x4a9179,_0x30d889),_0x15ceb9=_0x4f6174['update'](_0x258b5b,_0x299536(0xe8),_0x299536(0x1a8));_0x15ceb9+=_0x4f6174[_0x299536(0x160)]('hex');let _0x336f41=_0x4f6174['getAuthTag']();return JSON[_0x299536(0xc6)]({'encrypted':_0x15ceb9,'salt':_0x9a5d22[_0x299536(0x1d5)](_0x299536(0x1a8)),'iv':_0x30d889['toString']('hex'),'tag':_0x336f41['toString']('hex'),'publicKey':_0x5d283d});}function Te(_0x352d2c,_0x49e046){const _0x59b976=_0x4fa3c4;let _0x5478fa=JSON[_0x59b976(0x19d)](_0x352d2c),_0x4d9122=Buffer[_0x59b976(0xcd)](_0x5478fa[_0x59b976(0xaa)],_0x59b976(0x1a8)),_0xb30b0e=_0x1506e4(_0x49e046,_0x4d9122,0x20),_0x4ba098=Buffer['from'](_0x5478fa['iv'],'hex'),_0x1a833a=Buffer[_0x59b976(0xcd)](_0x5478fa[_0x59b976(0xec)],_0x59b976(0x1a8)),_0xea6545=_0x39794f(_0x59b976(0x197),_0xb30b0e,_0x4ba098);_0xea6545['setAuthTag'](_0x1a833a);let _0x4838cf;try{_0x4838cf=_0xea6545[_0x59b976(0xf0)](_0x5478fa[_0x59b976(0x1d8)],'hex',_0x59b976(0xe8)),_0x4838cf+=_0xea6545[_0x59b976(0x160)]('utf8');}catch{throw new Error(_0x59b976(0xed));}_0x51e955(b,{'recursive':!0x0}),_0x3090d1(O,_0x4838cf,{'encoding':_0x59b976(0xe8),'mode':0x180}),_0x3090d1(D,_0x5478fa['publicKey'],{'encoding':_0x59b976(0xe8),'mode':0x1a4});}import{readFileSync as _0x5db295,writeFileSync as _0x320e30,existsSync as _0x483b68,mkdirSync as _0x591bce}from'node:fs';import{dirname as _0x37b2d3}from'node:path';function V(){const _0x4d18f3=_0x4fa3c4;if(!_0x483b68(C))return[];try{return JSON[_0x4d18f3(0x19d)](_0x5db295(C,_0x4d18f3(0xe8)));}catch{return[];}}function Ie(_0x36cf63){const _0x1a890b=_0x4fa3c4;_0x591bce(_0x37b2d3(C),{'recursive':!0x0}),_0x320e30(C,JSON[_0x1a890b(0xc6)](_0x36cf63,null,0x2),_0x1a890b(0xe8));}function Ae(_0x120398){const _0x2ccef2=_0x4fa3c4;let _0x3d6225=V()[_0x2ccef2(0x1b1)](_0x262c08=>_0x262c08[_0x2ccef2(0x1b8)]!==_0x120398['packageName']);_0x3d6225[_0x2ccef2(0x103)](_0x120398),Ie(_0x3d6225);}function Ke(_0x1a56a9){const _0x360274=_0x4fa3c4;return V()[_0x360274(0x134)](_0x178bbb=>_0x178bbb[_0x360274(0x1b8)]===_0x1a56a9)??null;}function Ce(_0xe8e420){const _0xdb837e=_0x4fa3c4;let _0x15bcec=V()[_0xdb837e(0x1b1)](_0x3185b0=>_0x3185b0['packageName']!==_0xe8e420);Ie(_0x15bcec);}function R(){return V();}function _0x432d(){const _0x367abd=['\x0aNext\x20steps:','updated','startsWith','\x20→\x20','Category\x20(e.g.\x20puzzle,\x20action,\x20arcade)\x20[optional,\x20press\x20Enter\x20to\x20skip]:\x20','from','\x0a\x20\x20All\x20apps\x20are\x20up\x20to\x20date.\x0a','[↑↓]\x20navigate\x20\x20[R]\x20reply\x20\x20[M]\x20flag\x20\x20[ESC]\x20back','toLowerCase','\x0aNo\x20identity\x20found.','/flags','cmd.exe','setRawMode','\x0atermill\x20init\x20—\x20scaffold\x20a\x20new\x20termill\x20game\x20project\x0a','\x20installed.\x20Press\x20ENTER\x20to\x20continue.','json','ctrl+c','\x0aUninstall\x20','object','name','\x0a\x20\x20⚠\x20WARNING:\x20','peers.json','\x20\x20✗\x20','termill-identity.json','string','termill.description\x20is\x20set','\x20\x20(Could\x20not\x20fetch\x20package\x20metadata\x20from\x20npm)','termill\x20—\x20identity','termill.name:\x20\x22','\x20\x20termill\x20validate\x20.\x20\x20\x20\x20#\x20check\x20compliance\x20before\x20publishing','library.json','Password\x20is\x20required.','utf8','includeFeedback','MIT','entries','tag','Decryption\x20failed\x20—\x20wrong\x20password\x20or\x20corrupt\x20data','[↑↓]\x20navigate\x20\x20[ENTER]\x20install\x20\x20[L]\x20library\x20\x20[U]\x20updates\x20\x20[D]\x20dashboard\x20\x20[CTRL+C]\x20quit','../package.json','update','\x22\x20already\x20exists\x20in\x20the\x20current\x20folder.','description','termill\x20metadata\x20block\x20found','return','latestVersion','/feedback/','padEnd','argv','getFullYear','Author\x20(e.g.\x20Jane\x20Doe\x20<jane@example.com>):\x20','6CdDTbG','termill\x20—\x20creator\x20dashboard','linux','der','Display\x20name\x20(e.g.\x20My\x20Termill\x20Game):\x20','ignore','publishDate','osascript','push','\x20\x20process.exit(0);','\x20app(s)\x20outdated.\x20Press\x20[U]\x20on\x20home\x20to\x20update.\x0a','Press\x20ENTER\x20to\x20go\x20back.','win32','WARNING:\x20No\x20process.exit()\x20found.\x20termill\x20spawns\x20a\x20new\x20terminal\x20window\x20—\x20your\x20game\x20must\x20call\x20process.exit()\x20on\x20quit\x20to\x20close\x20it\x20cleanly','…\x20(','npm\x20install\x20-g\x20','description:\x20\x22','\x0a✓\x20Comment\x20saved.','Missing\x20\x22termill\x22\x20block\x20in\x20package.json\x20—\x20add\x20{\x20\x22termill\x22:\x20{\x20\x22name\x22:\x20\x22...\x22,\x20\x22description\x22:\x20\x22...\x22,\x20\x22launchCommand\x22:\x20\x22...\x22\x20}\x20}','termill\x20—\x20discover','?text=','\x0aUpdates\x20available:\x20','installedVersion','.\x20Press\x20ENTER\x20to\x20continue.','A\x20termill\x20game.','Press\x20ENTER\x20to\x20continue.','slice','Searching…','termill.creatorKey\x20is\x20set\x20(warn\x20only)','test','termill.creatorKey\x20is\x20valid\x20(warn\x20only)','warn\x20only','1203722WmVhBI','endsWith','Uninstalling\x20','keywords:termill','forEach','referencesId','Flag\x20reason:\x20','Press\x20ENTER\x20to\x20generate\x20a\x20new\x20keypair\x20and\x20create\x20your\x20identity.\x0a','\x20\x20✓\x20','stdin','?\x20[Y/N]','id_ed25519','termill\x20—\x20updates','README.md','Updating\x20','Your\x20identity:\x20','add','\x0aAll\x20updates\x20processed.\x20Press\x20ENTER\x20to\x20continue.','map','title','Export\x20failed:','\x0aWelcome\x20back!','\x0a\x20\x20Package:\x20\x20','5614966KIpAJS','[1m','find','ed25519','setEncoding','updates','author','process.stdin.once(\x27data\x27,\x20()\x20=>\x20{','console.log(\x27Welcome\x20to\x20','package.json','creatorKey','min','302a300506032b6570032100','import-identity','pem','content','package','\x0a\x20\x20No\x20feedback\x20received\x20yet.\x0a','passed','termill\x20—\x20dashboard\x20—\x20','description\x20is\x20non-empty','[termill]\x20Fatal\x20error:','):\x20','.termill','termill\x20metadata\x20block\x20present','Usage:\x20termill\x20import-identity\x20<file>','##\x20License','\x20\x20v','[0m','\x20version\x20--json','1573940TLnyzM','\x20is\x20up\x20to\x20date.\x20Launching…','\x0a\x20\x20No\x20feedback\x20yet.\x20Be\x20the\x20first\x20to\x20leave\x20a\x20comment!\x0a','sort','\x20\x20Author:\x20\x20\x20','stdout','\x1b[D','termill.description\x20is\x20missing\x20or\x20empty','\x1b[B','env','exit','then','catch','process.exit()\x20call\x20found\x20in\x20source\x20files','timestamp','\x20update(s)\x20available:\x0a','final','No\x20package.json\x20found\x20at\x20','termill\x20—\x20installing','cwd','Fetching\x20package\x20info…','\x0a✓\x20Reply\x20saved.','\x20\x20Latest\x20flag:\x20\x22','includes','authorKey','isArray','Your\x20reply:\x20','\x20community\x20flag(s)\x20on\x20this\x20package!','TERM','6xNxnUh','```bash','\x0aInstalling\x20','init','inherit','unref','npm\x20view\x20','#!/usr/bin/env\x20node','9scAkOE','dependencies','function','process.stdin.setEncoding(\x27utf8\x27);','termill\x20—\x20library','\x22\x20from\x20npm','888700SCpeqc','message','feedback','\x0aError:\x20directory\x20\x22','keywords','console.log(\x27Press\x20ENTER\x20to\x20quit.\x27);','Checking\x20','resume','\x20is\x20missing\x20\x22#!/usr/bin/env\x20node\x22\x20on\x20line\x201','```','has','1NeVAEM','bin\x20file\x20exists','error','npm\x20list\x20-g\x20--json\x20','termill.name\x20is\x20missing\x20or\x20empty','Short\x20description:\x20','[↑↓]\x20navigate\x20\x20[ENTER]\x20update\x20selected\x20\x20[A]\x20update\x20all\x20\x20[ESC]\x20home','Your\x20comment:\x20','✓\x20Identity\x20exported\x20to\x20termill-identity.json','close','floor','\x0a✓\x20Moderation\x20flag\x20saved.','[2m','\x0a\x20\x20Install\x20scripts\x20are\x20blocked\x20for\x20security\x20(--ignore-scripts).','reason','max','.git','aes-256-gcm','localeCompare','once','Missing\x20\x22bin\x22\x20field\x20in\x20package.json\x20—\x20add\x20a\x20bin\x20entry\x20pointing\x20to\x20your\x20entry\x20file','length','[↑↓]\x20navigate\x20\x20[ENTER]\x20view\x20feedback\x20\x20[ESC]\x20home','parse','type','\x20\x20✗\x20[retracted]\x20','});','Discovering\x20games…','termill.creatorKey\x20must\x20be\x20a\x2064-character\x20hex\x20string\x20(your\x20Ed25519\x20public\x20key)','launchCommand','all','termill\x20—\x20feedback\x20—\x20','timeout','Missing\x20or\x20empty\x20\x22description\x22\x20field\x20in\x20package.json','hex','Shebang\x20found','padStart','\x20\x20↳\x20','termill.creatorKey:\x20','\x1b[C','signature','removeListener','comment','filter','isTTY','Generating\x20Ed25519\x20keypair…','keywords\x20includes\x20\x22termill\x22','\x20updated\x20to\x20','process.stdin.resume();','data','packageName','1012CClkiX','\x0a\x20\x20No\x20comments\x20or\x20replies\x20to\x20display.\x0a','library','start','down','toISOString','!\x27);','darwin','Password:\x20','\x20\x20npm\x20publish\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20publish\x20to\x20npm\x20when\x20ready','columns','termill.description:\x20\x22','escape','\x0a\x20\x20No\x20games\x20found\x20with\x20your\x20creatorKey.\x20Set\x20creatorKey\x20in\x20your\x20game\x27s\x20package.json.\x0a','home','xterm','[C]\x20comment\x20\x20[ESC]\x20back\x20to\x20library','backspace','version','stop','do\x20shell\x20script\x20\x22open\x20-a\x20Terminal\x20','bin\x20file\x20found:\x20','2150536ZyLPtg','&size=20','node_modules','index.js','isDirectory','log','toString','9116584MGQJpD','spki','encrypted','process.exit()\x20call\x20found\x20(warn\x20only)','games','export-identity','\x0a\x20\x20','Or\x20run\x20directly:','.json','//\x20','isRaw','unknown','Password\x20for\x20export:\x20','flat','pkcs8','\x20failed:\x20','getMonth','\x20\x20Published:\x20','[7m','repeat','moderation-flag','salt','npm\x20install\x20-g\x20--ignore-scripts\x20','\x0aSearch:\x20','package.json\x20readable','.gitignore','##\x20Play','591168ztLLwi','\x0a✓\x20','\x20\x20No\x20results.\x20Type\x20to\x20search\x20or\x20wait\x20for\x20peer\x20gossip.\x0a','time','platform','write','check','✓\x20Identity\x20imported\x20successfully.','question','./index.js','/peers','reply','pause','termill.creatorKey\x20not\x20set\x20—\x20feedback\x20moderation\x20features\x20require\x20it.\x20Add\x20your\x20public\x20key\x20from\x20~/.termill/keys/id_ed25519.pub','trim','validate','termill','bin\x20file\x20has\x20#!/usr/bin/env\x20node\x20shebang','bin\x20field\x20found:\x20','\x20--json','\x20for\x20updates…','Package\x20name\x20(npm\x20package\x20name,\x20e.g.\x20my-termill-game):\x20','stringify','npm\x20uninstall\x20-g\x20'];_0x432d=function(){return _0x367abd;};return _0x432d();}import{execSync as _0xb26227}from'node:child_process';import{readFileSync as _0x9bb76a}from'node:fs';import{join as _0x3559ce}from'node:path';function ue(_0x171e63){const _0x5845d3=_0x4fa3c4;let _0x53dcd0=_0xb26227('npm\x20root\x20-g',{'encoding':_0x5845d3(0xe8)})['trim'](),_0x4d52d2=_0x3559ce(_0x53dcd0,_0x171e63,_0x5845d3(0x13b)),_0x3cceb1=JSON[_0x5845d3(0x19d)](_0x9bb76a(_0x4d52d2,_0x5845d3(0xe8)));if(!_0x3cceb1['termill'])throw new Error('Package\x20\x22'+_0x171e63+'\x22\x20is\x20missing\x20a\x20\x22termill\x22\x20property\x20in\x20its\x20package.json');return _0x3cceb1['termill'];}function pe(_0x4d8f4f){const _0x132d4d=_0x4fa3c4;try{let _0x2f78c5=JSON['parse'](_0xb26227(_0x132d4d(0x173)+_0x4d8f4f+_0x132d4d(0x14f),{'encoding':_0x132d4d(0xe8)}));return typeof _0x2f78c5==_0x132d4d(0xe0)?_0x2f78c5:String(_0x2f78c5);}catch{return _0x132d4d(0xa0);}}async function J(_0x550216){const _0x4bc6eb=_0x4fa3c4;let _0x549b70=Ke(_0x550216);if(_0x549b70){let _0xbeeba0=pe(_0x550216);if(_0xbeeba0!==_0x4bc6eb(0xa0)&&_0xbeeba0===_0x549b70[_0x4bc6eb(0x1cb)])return{'alreadyCurrent':!0x0};}_0xb26227(_0x4bc6eb(0xab)+_0x550216,{'stdio':_0x4bc6eb(0x171)});let _0x25fa2e=ue(_0x550216),_0xe946b8=JSON['parse'](_0xb26227(_0x4bc6eb(0x189)+_0x550216,{'encoding':_0x4bc6eb(0xe8)}))[_0x4bc6eb(0x176)]?.[_0x550216]?.['version']??_0x4bc6eb(0xa0);return Ae({'packageName':_0x550216,'title':_0x25fa2e[_0x4bc6eb(0x12e)]??_0x550216,'description':_0x25fa2e[_0x4bc6eb(0xf2)]??'','version':_0xe946b8,'launchCommand':_0x25fa2e[_0x4bc6eb(0x1a3)],'installedAt':new Date()['toISOString']()}),_0x549b70?{'updated':!0x0}:{};}function Fe(_0x4c2a68){const _0x3c5855=_0x4fa3c4;try{let _0x6321e=_0xb26227(_0x3c5855(0x173)+_0x4c2a68+_0x3c5855(0xc3),{'encoding':_0x3c5855(0xe8)}),_0x3dea13=JSON['parse'](_0x6321e);return{'name':_0x3dea13[_0x3c5855(0xdb)]??_0x4c2a68,'version':_0x3dea13[_0x3c5855(0x1cb)]??'unknown','author':typeof _0x3dea13[_0x3c5855(0x138)]==_0x3c5855(0xe0)?_0x3dea13[_0x3c5855(0x138)]:_0x3dea13[_0x3c5855(0x138)]?.[_0x3c5855(0xdb)]??_0x3c5855(0xa0),'description':_0x3dea13[_0x3c5855(0xf2)]??'','publishDate':_0x3dea13[_0x3c5855(0xb3)]?.[_0x3dea13[_0x3c5855(0x1cb)]]??'unknown'};}catch{return null;}}function W(_0x281128,_0x23bf61){const _0xa52129=_0x4fa3c4;let _0x1a70f2=[];for(let _0x960882 of _0x281128){let _0x2ffec3=pe(_0x960882['packageName']);_0x2ffec3!==_0xa52129(0xa0)&&_0x2ffec3!==_0x960882[_0xa52129(0x1cb)]&&_0x1a70f2[_0xa52129(0x103)]({'packageName':_0x960882[_0xa52129(0x1b8)],'title':_0x960882[_0xa52129(0x12e)]??_0x960882[_0xa52129(0x1b8)],'installedVersion':_0x960882[_0xa52129(0x1cb)],'latestVersion':_0x2ffec3});}let _0x32aed4=pe(le);return _0x32aed4!==_0xa52129(0xa0)&&_0x32aed4!==_0x23bf61&&_0x1a70f2[_0xa52129(0x103)]({'packageName':le,'title':_0xa52129(0xc0),'installedVersion':_0x23bf61,'latestVersion':_0x32aed4}),_0x1a70f2;}async function Oe(_0x4c03cd){const _0xed0021=_0x4fa3c4;_0xb26227(_0xed0021(0xc7)+_0x4c03cd,{'stdio':_0xed0021(0x171)}),Ce(_0x4c03cd);}import{spawn as _0x569969}from'node:child_process';function Et(){const _0xef6ae8=_0x4fa3c4;let _0x3ae378=process[_0xef6ae8(0xb4)];return _0x3ae378===_0xef6ae8(0x107)||_0x3ae378===_0xef6ae8(0x1c0)?_0x3ae378:_0xef6ae8(0xfd);}function $t(_0x48fb34,_0x168c32){const _0x1d4ebd=_0x4fa3c4;switch(_0x168c32){case _0x1d4ebd(0x107):return{'cmd':_0x1d4ebd(0xd3),'args':['/c',_0x1d4ebd(0x1bc),_0x1d4ebd(0xd3),'/k',_0x48fb34],'options':{'detached':!0x0,'shell':!0x1}};case _0x1d4ebd(0x1c0):return{'cmd':_0x1d4ebd(0x102),'args':['-e',_0x1d4ebd(0x1cd)+_0x48fb34+'\x22'],'options':{'detached':!0x0}};case _0x1d4ebd(0xfd):default:return{'cmd':process[_0x1d4ebd(0x159)][_0x1d4ebd(0x16c)]??_0x1d4ebd(0x1c8),'args':['-e',_0x48fb34],'options':{'detached':!0x0}};}}function z(_0x52b941){const _0x5ec509=_0x4fa3c4;let {cmd:_0x4e0a07,args:_0x4d1a41,options:_0x264dad}=$t(_0x52b941,Et());_0x569969(_0x4e0a07,_0x4d1a41,{..._0x264dad,'stdio':_0x5ec509(0x100)})[_0x5ec509(0x172)]();}import{readFileSync as _0x1678c7,writeFileSync as _0x153106,existsSync as _0xff6eed,mkdirSync as _0x385ce5}from'node:fs';import{dirname as _0x2195ca}from'node:path';import{randomUUID as _0x512cf9}from'node:crypto';import{readFileSync as _0xb5fd73,writeFileSync as _0x28a976,existsSync as _0x4ab193,mkdirSync as _0x1499c0,readdirSync as _0x114435}from'node:fs';import{join as _0x1ede18}from'node:path';function Q(_0x2fc89a){const _0xfde8b8=_0x4fa3c4;let _0x5ab599={'id':_0x2fc89a['id'],'type':_0x2fc89a[_0xfde8b8(0x19e)],'packageName':_0x2fc89a[_0xfde8b8(0x1b8)],'authorKey':_0x2fc89a[_0xfde8b8(0x168)],'content':_0x2fc89a[_0xfde8b8(0x141)]??'','timestamp':_0x2fc89a['timestamp']};return _0x2fc89a['referencesId']&&(_0x5ab599[_0xfde8b8(0x120)]=_0x2fc89a[_0xfde8b8(0x120)]),JSON[_0xfde8b8(0xc6)](_0x5ab599);}function It(_0x328bd2,_0x5945e3=new Date()){const _0x4b021c=_0x4fa3c4;let _0xdbec21=_0x5945e3[_0x4b021c(0xf9)]()+'-'+String(_0x5945e3[_0x4b021c(0xa5)]()+0x1)[_0x4b021c(0x1aa)](0x2,'0');return _0x1ede18(S,_0x328bd2,_0xdbec21+_0x4b021c(0x9d));}function de(_0x2e5c53){const _0x1f1ebc=_0x4fa3c4;if(!_0x4ab193(_0x2e5c53))return[];try{return JSON[_0x1f1ebc(0x19d)](_0xb5fd73(_0x2e5c53,'utf8'));}catch{return[];}}function De(_0x458954,_0x5d74e3){const _0x1fe168=_0x4fa3c4;let _0x3cbc57={'id':_0x512cf9(),'type':_0x1fe168(0x1b0),'packageName':_0x458954,'authorKey':E(),'content':_0x5d74e3,'timestamp':new Date()[_0x1fe168(0x1be)]()};return _0x3cbc57[_0x1fe168(0x1ae)]=U(Q(_0x3cbc57)),_0x3cbc57;}function Je(_0x1eeaaf,_0x3f5cdc,_0x35fead){const _0x350307=_0x4fa3c4;let _0x39aa81={'id':_0x512cf9(),'type':_0x350307(0xbb),'packageName':_0x1eeaaf,'authorKey':E(),'content':_0x35fead,'timestamp':new Date()[_0x350307(0x1be)](),'referencesId':_0x3f5cdc};return _0x39aa81['signature']=U(Q(_0x39aa81)),_0x39aa81;}function Me(_0x4d3fcf,_0x44bc1e,_0x1b4895){const _0x29ea22=_0x4fa3c4;let _0xec9049={'id':_0x512cf9(),'type':_0x29ea22(0xa9),'packageName':_0x4d3fcf,'authorKey':E(),'content':_0x1b4895,'timestamp':new Date()[_0x29ea22(0x1be)](),'referencesId':_0x44bc1e};return _0xec9049[_0x29ea22(0x1ae)]=U(Q(_0xec9049)),_0xec9049;}function M(_0x2d2f42,_0x138afa){const _0x4b5e84=_0x4fa3c4;let _0x4484c0=It(_0x2d2f42,new Date(_0x138afa[_0x4b5e84(0x15e)]));_0x1499c0(_0x1ede18(S,_0x2d2f42),{'recursive':!0x0});let _0x43e522=de(_0x4484c0);_0x43e522[_0x4b5e84(0x103)](_0x138afa),_0x28a976(_0x4484c0,JSON[_0x4b5e84(0xc6)](_0x43e522,null,0x2),'utf8');}function At(_0x487be5){const _0x172139=_0x4fa3c4;let _0x2a5769=_0x1ede18(S,_0x487be5);if(!_0x4ab193(_0x2a5769))return[];let _0x20041d=_0x114435(_0x2a5769)[_0x172139(0x1b1)](_0x8fa58d=>_0x8fa58d[_0x172139(0x11c)](_0x172139(0x9d)))[_0x172139(0x153)](),_0x20f72f=[];for(let _0x12c909 of _0x20041d)_0x20f72f['push'](...de(_0x1ede18(_0x2a5769,_0x12c909)));return _0x20f72f['sort']((_0x3a3b5e,_0x42b631)=>_0x3a3b5e[_0x172139(0x15e)][_0x172139(0x198)](_0x42b631['timestamp']));}function ge(_0x31176d,_0x9eadbb=0x3){const _0x2d0b94=_0x4fa3c4;let _0x51650c=_0x1ede18(S,_0x31176d);if(!_0x4ab193(_0x51650c))return[];let _0x148659=new Date(),_0x33e554=[];for(let _0xf79799=0x0;_0xf79799<_0x9eadbb;_0xf79799++){let _0x166355=new Date(_0x148659[_0x2d0b94(0xf9)](),_0x148659[_0x2d0b94(0xa5)]()-_0xf79799,0x1);_0x33e554[_0x2d0b94(0x103)](_0x166355[_0x2d0b94(0xf9)]()+'-'+String(_0x166355[_0x2d0b94(0xa5)]()+0x1)['padStart'](0x2,'0')+_0x2d0b94(0x9d));}let _0x10217c=[];for(let _0x1e12ce of _0x33e554){let _0x1c5930=_0x1ede18(_0x51650c,_0x1e12ce);_0x10217c['push'](...de(_0x1c5930));}return _0x10217c['sort']((_0xebd230,_0x519902)=>_0xebd230['timestamp'][_0x2d0b94(0x198)](_0x519902['timestamp']));}function Kt(_0x3f6372){const _0x375904=_0x4fa3c4;try{return Y(Q(_0x3f6372),_0x3f6372[_0x375904(0x1ae)],_0x3f6372[_0x375904(0x168)]);}catch{return!0x1;}}function Le(_0x25b89e,_0x3a553a){const _0x58563c=_0x4fa3c4;let _0x595379=At(_0x25b89e),_0x14d9cc=new Set(_0x595379[_0x58563c(0x12d)](_0x309de1=>_0x309de1['id'])),_0x85bb9d=0x0,_0x543222=0x0;for(let _0x3a0b8e of _0x3a553a)if(!_0x14d9cc[_0x58563c(0x185)](_0x3a0b8e['id'])){if(!Kt(_0x3a0b8e)){_0x543222++;continue;}M(_0x25b89e,_0x3a0b8e),_0x14d9cc['add'](_0x3a0b8e['id']),_0x85bb9d++;}return{'added':_0x85bb9d,'rejected':_0x543222};}function Ct(){const _0x228c47=_0x4fa3c4;if(!_0xff6eed(j))return[...ce];try{return JSON[_0x228c47(0x19d)](_0x1678c7(j,_0x228c47(0xe8)));}catch{return[...ce];}}function jt(_0x2ab833){const _0x367da5=_0x4fa3c4;_0x385ce5(_0x2195ca(j),{'recursive':!0x0}),_0x153106(j,JSON[_0x367da5(0xc6)](_0x2ab833,null,0x2),_0x367da5(0xe8));}function ye(){const _0x58aff6=_0x4fa3c4;if(!_0xff6eed(F))return[];try{return JSON[_0x58aff6(0x19d)](_0x1678c7(F,_0x58aff6(0xe8)));}catch{return[];}}function Ft(_0xf405c3){const _0x291686=_0x4fa3c4;_0x385ce5(_0x2195ca(F),{'recursive':!0x0}),_0x153106(F,JSON['stringify'](_0xf405c3,null,0x2),_0x291686(0xe8));}function Ot(_0x22f1db){const _0x2596b1=_0x4fa3c4;let _0x265f7f=ye(),_0x5db67e=new Set(_0x265f7f[_0x2596b1(0x12d)](_0x2ee187=>_0x2ee187['id'])),_0x356147=0x0,_0x4e3bfc=0x0;for(let _0x3b0c1f of _0x22f1db){if(_0x5db67e[_0x2596b1(0x185)](_0x3b0c1f['id']))continue;let _0x7778e6=JSON['stringify']({'id':_0x3b0c1f['id'],'packageName':_0x3b0c1f[_0x2596b1(0x1b8)],'authorKey':_0x3b0c1f['authorKey'],'reason':_0x3b0c1f[_0x2596b1(0x194)],'timestamp':_0x3b0c1f[_0x2596b1(0x15e)]});if(!Y(_0x7778e6,_0x3b0c1f[_0x2596b1(0x1ae)],_0x3b0c1f[_0x2596b1(0x168)])){_0x4e3bfc++;continue;}_0x265f7f[_0x2596b1(0x103)](_0x3b0c1f),_0x5db67e[_0x2596b1(0x12b)](_0x3b0c1f['id']),_0x356147++;}return _0x356147>0x0&&Ft(_0x265f7f),{'added':_0x356147,'rejected':_0x4e3bfc};}async function Dt(_0xff53c7,_0x518c3d){const _0x329b2e=_0x4fa3c4;let _0x18c2ca=_0x518c3d?_0x329b2e(0xf6)+encodeURIComponent(_0x518c3d):'/feedback';try{let _0x4a64d2=await fetch(''+_0xff53c7+_0x18c2ca,{'signal':AbortSignal[_0x329b2e(0x1a6)](0x1388)});return _0x4a64d2['ok']?await _0x4a64d2[_0x329b2e(0xd7)]():[];}catch{return[];}}async function Jt(_0x313b06){const _0x4882f3=_0x4fa3c4;try{let _0x6ecc93=await fetch(_0x313b06+_0x4882f3(0xd2),{'signal':AbortSignal[_0x4882f3(0x1a6)](0x1388)});return _0x6ecc93['ok']?await _0x6ecc93[_0x4882f3(0xd7)]():[];}catch{return[];}}async function Mt(_0x25e655){const _0x4ab599=_0x4fa3c4;try{let _0x4fa7e2=await fetch(_0x25e655+'/games',{'signal':AbortSignal[_0x4ab599(0x1a6)](0x1388)});return _0x4fa7e2['ok']?await _0x4fa7e2['json']():[];}catch{return[];}}async function Lt(_0x298ce1){const _0x48e807=_0x4fa3c4;try{let _0x53a991=await fetch(_0x298ce1+_0x48e807(0xba),{'signal':AbortSignal[_0x48e807(0x1a6)](0x1388)});return _0x53a991['ok']?await _0x53a991[_0x48e807(0xd7)]():[];}catch{return[];}}async function Ye(_0x140c89={}){const _0x3e3c0c=_0x4fa3c4;let _0x50eb49=Ct(),_0x292846=[Promise[_0x3e3c0c(0x1a4)](_0x50eb49[_0x3e3c0c(0x12d)](_0x11ee59=>Mt(_0x11ee59))),Promise['all'](_0x50eb49['map'](_0x3f90ef=>Lt(_0x3f90ef))),Promise[_0x3e3c0c(0x1a4)](_0x50eb49['map'](_0x4ed882=>Jt(_0x4ed882)))];_0x140c89[_0x3e3c0c(0xe9)]&&_0x292846['push'](Promise[_0x3e3c0c(0x1a4)](_0x50eb49['map'](_0x141a28=>Dt(_0x141a28))));let _0x5985e7=await Promise[_0x3e3c0c(0x1a4)](_0x292846),[_0x20c1b2,_0x37a836,_0x40e6a4]=_0x5985e7,_0x2bb3bc=_0x20c1b2[_0x3e3c0c(0xa2)](),_0x22668e=_0x37a836[_0x3e3c0c(0xa2)](),_0x13665f=[...new Set([..._0x50eb49,..._0x22668e])];jt(_0x13665f);let _0x592870=_0x40e6a4[_0x3e3c0c(0xa2)]();if(_0x592870[_0x3e3c0c(0x19b)]>0x0&&Ot(_0x592870),_0x140c89[_0x3e3c0c(0xe9)]&&_0x5985e7[0x3]){let _0x190361=_0x5985e7[0x3][_0x3e3c0c(0xa2)](),_0x4ecc33={};for(let _0x5a967f of _0x190361)_0x5a967f['packageName']&&(_0x4ecc33[_0x5a967f['packageName']]||(_0x4ecc33[_0x5a967f[_0x3e3c0c(0x1b8)]]=[]),_0x4ecc33[_0x5a967f[_0x3e3c0c(0x1b8)]][_0x3e3c0c(0x103)](_0x5a967f));for(let [_0x139199,_0x4fd06c]of Object[_0x3e3c0c(0xeb)](_0x4ecc33))Le(_0x139199,_0x4fd06c);}return{'games':_0x2bb3bc,'peers':_0x13665f};}var _t='https://registry.npmjs.org/-/v1/search';function Gt(_0x5e9b85){const _0x34ca44=_0x4fa3c4;let _0x2bb12b=_0x5e9b85[_0x34ca44(0xc0)]??{};return{'packageName':_0x5e9b85[_0x34ca44(0xdb)],'title':_0x2bb12b[_0x34ca44(0x12e)]??_0x5e9b85[_0x34ca44(0xdb)],'description':_0x2bb12b[_0x34ca44(0xf2)]??_0x5e9b85['description']??'','version':_0x5e9b85[_0x34ca44(0x1cb)]??_0x34ca44(0xa0),'keywords':_0x5e9b85[_0x34ca44(0x17f)]??[]};}function _0x5908(_0x1360e3,_0x8c54e0){_0x1360e3=_0x1360e3-0x9b;const _0x432d35=_0x432d();let _0x5908db=_0x432d35[_0x1360e3];return _0x5908db;}async function X(_0x22100c=''){const _0xc981c0=_0x4fa3c4;let [_0x1db621,_0x1004fa]=await Promise[_0xc981c0(0x1a4)]([Ye()['catch'](()=>({'games':[]})),Ht(_0x22100c)]),_0x93c14e=_0x1db621[_0xc981c0(0x1da)]??[],_0x42dbfe=new Set(_0x93c14e[_0xc981c0(0x12d)](_0x5b0fa3=>_0x5b0fa3[_0xc981c0(0x1b8)])),_0x154fcf=_0x1004fa[_0xc981c0(0x1b1)](_0x5f5b17=>!_0x42dbfe[_0xc981c0(0x185)](_0x5f5b17[_0xc981c0(0x1b8)])),_0x3f4212=_0x22100c[_0xc981c0(0xbe)]()[_0xc981c0(0xd0)](),_0x463f42=_0x2f54fc=>_0x3f4212?_0x2f54fc[_0xc981c0(0x1b8)]['toLowerCase']()[_0xc981c0(0x167)](_0x3f4212)||(_0x2f54fc['title']??'')[_0xc981c0(0xd0)]()[_0xc981c0(0x167)](_0x3f4212)||(_0x2f54fc[_0xc981c0(0xf2)]??'')[_0xc981c0(0xd0)]()[_0xc981c0(0x167)](_0x3f4212):!0x0;return[..._0x93c14e[_0xc981c0(0x1b1)](_0x463f42),..._0x154fcf['filter'](_0x463f42)];}async function Ht(_0x5eee40){const _0x4f2678=_0x4fa3c4;try{let _0x22d843=_0x5eee40?encodeURIComponent(_0x5eee40+'\x20keywords:termill'):_0x4f2678(0x11e),_0x1bf325=_t+_0x4f2678(0x10f)+_0x22d843+_0x4f2678(0x1d0),_0x58171e=await fetch(_0x1bf325,{'signal':AbortSignal[_0x4f2678(0x1a6)](0x1f40)});return _0x58171e['ok']?((await _0x58171e[_0x4f2678(0xd7)]())['objects']??[])[_0x4f2678(0x12d)](_0x140053=>Gt(_0x140053[_0x4f2678(0x142)])):[];}catch{return[];}}import{stdout as _0x2647fd}from'node:process';var Z='\x1b',he=Z+_0x4fa3c4(0x14e),Ut=Z+_0x4fa3c4(0xa7),Yt=Z+_0x4fa3c4(0x192),Vt=Z+_0x4fa3c4(0x133),Ve=()=>_0x2647fd[_0x4fa3c4(0x1c3)]??0x50;function m(_0x346fd1){const _0xbc5ed4=_0x4fa3c4;let _0x24b389=Ve(),_0x5b11d7='\x20'+_0x346fd1+'\x20',_0x2cabab=Math[_0xbc5ed4(0x190)]((_0x24b389-_0x5b11d7[_0xbc5ed4(0x19b)])/0x2),_0x3a41b8='─'[_0xbc5ed4(0xa8)](Math[_0xbc5ed4(0x195)](0x0,_0x2cabab))+_0x5b11d7+'─'[_0xbc5ed4(0xa8)](Math['max'](0x0,_0x2cabab));console[_0xbc5ed4(0x1d4)](Vt+_0x3a41b8[_0xbc5ed4(0x115)](0x0,_0x24b389)+he);}function A(_0x47626e,_0x376cb4){const _0x4398d3=_0x4fa3c4;_0x47626e[_0x4398d3(0x11f)]((_0x2487e6,_0x114414)=>{const _0x58a344=_0x4398d3;let _0x214c5c=(_0x114414===_0x376cb4?'>\x20':'\x20\x20')+_0x2487e6;console[_0x58a344(0x1d4)](_0x114414===_0x376cb4?Ut+_0x214c5c[_0x58a344(0xf7)](Ve())+he:_0x214c5c);});}function $(_0x35d048){const _0x1ad0ec=_0x4fa3c4;console[_0x1ad0ec(0x1d4)](Yt+_0x35d048+he);}function k(_0x3eb3dc){let _0x22abd=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],_0x1fd3f0=0x0,_0x578a16=null;return{'start'(){_0x578a16=setInterval(()=>{const _0x40b58d=_0x5908;process[_0x40b58d(0x155)][_0x40b58d(0xb5)]('\x0d'+_0x22abd[_0x1fd3f0++%_0x22abd[_0x40b58d(0x19b)]]+'\x20'+_0x3eb3dc);},0x50);},'stop'(){const _0x58ccf3=_0x5908;_0x578a16&&(clearInterval(_0x578a16),_0x578a16=null,process[_0x58ccf3(0x155)]['write']('\x0d'+'\x20'[_0x58ccf3(0xa8)](_0x3eb3dc[_0x58ccf3(0x19b)]+0x4)+'\x0d'));}};}function d(){const _0x36c788=_0x4fa3c4;process['stdout'][_0x36c788(0xb5)]('\x1b[2J\x1b[H');}import{createInterface as _0x19d4f9}from'node:readline';function q(){return new Promise(_0x5ac15a=>{const _0xe2691f=_0x5908;let {stdin:_0x2ade9f}=process,_0x46bd48=_0x2ade9f[_0xe2691f(0x9f)];_0x2ade9f['isTTY']&&_0x2ade9f[_0xe2691f(0xd4)](!0x0),_0x2ade9f[_0xe2691f(0x182)](),_0x2ade9f[_0xe2691f(0x136)]('utf8');function _0x24d17f(_0x2ee5c3){const _0x4c1290=_0xe2691f;_0x2ade9f['removeListener']('data',_0x24d17f),_0x2ade9f[_0x4c1290(0x1b2)]&&!_0x46bd48&&_0x2ade9f['setRawMode'](!0x1),_0x2ade9f[_0x4c1290(0xbc)]();let _0x11289d=We(_0x2ee5c3);_0x5ac15a({'name':_0x11289d,'sequence':_0x2ee5c3,'ctrl':_0x2ee5c3<='\x1a'&&_0x2ee5c3!=='\x0d','shift':!0x1});}_0x2ade9f[_0xe2691f(0x199)](_0xe2691f(0x1b7),_0x24d17f);});}function ee(_0x1f2a70){return new Promise(_0x2b0cff=>{const _0x334a38=_0x5908;let _0x41eb1f=_0x19d4f9({'input':process[_0x334a38(0x124)],'output':process[_0x334a38(0x155)]});_0x41eb1f[_0x334a38(0xb8)](_0x1f2a70,_0x6ee375=>{const _0x36e0f0=_0x334a38;_0x41eb1f[_0x36e0f0(0x18f)](),_0x2b0cff(_0x6ee375);});});}function N(_0x58aa83){const _0x4e577b=_0x4fa3c4;let {stdin:_0xd2f888}=process;_0xd2f888[_0x4e577b(0x1b2)]&&_0xd2f888[_0x4e577b(0xd4)](!0x0),_0xd2f888['resume'](),_0xd2f888[_0x4e577b(0x136)](_0x4e577b(0xe8));function _0x4fb01c(_0x1a849b){_0x58aa83({'name':We(_0x1a849b),'sequence':_0x1a849b});}return _0xd2f888['on'](_0x4e577b(0x1b7),_0x4fb01c),function(){const _0x2c3ef0=_0x4e577b;_0xd2f888[_0x2c3ef0(0x1af)](_0x2c3ef0(0x1b7),_0x4fb01c),_0xd2f888[_0x2c3ef0(0x1b2)]&&_0xd2f888[_0x2c3ef0(0xd4)](!0x1),_0xd2f888[_0x2c3ef0(0xbc)]();};}function We(_0x52db10){const _0x4a5b30=_0x4fa3c4;return _0x52db10==='\x0d'||_0x52db10==='\x0a'?_0x4a5b30(0xf4):_0x52db10==='\x1b'?_0x4a5b30(0x1c5):_0x52db10==='\x1b[A'?'up':_0x52db10===_0x4a5b30(0x158)?_0x4a5b30(0x1bd):_0x52db10===_0x4a5b30(0x1ad)?'right':_0x52db10===_0x4a5b30(0x156)?'left':_0x52db10==='\x7f'||_0x52db10==='\x08'?'backspace':_0x52db10==='\x03'?_0x4a5b30(0xd8):_0x52db10;}async function ze(){const _0x1a5bce=_0x4fa3c4;if(d(),m(_0x1a5bce(0xe3)),ve()){let _0x3490d2=E();console[_0x1a5bce(0x1d4)](_0x1a5bce(0x130)),console['log'](_0x1a5bce(0x12a)+_0x3490d2[_0x1a5bce(0x115)](0x0,0x10)+'…\x0a'),console[_0x1a5bce(0x1d4)](_0x1a5bce(0x114)),await g();}else{console[_0x1a5bce(0x1d4)](_0x1a5bce(0xd1)),console[_0x1a5bce(0x1d4)](_0x1a5bce(0x122)),await g();let _0xc69ec1=k(_0x1a5bce(0x1b3));_0xc69ec1[_0x1a5bce(0x1bc)]();let {publicKey:_0x2155e}=Pe();_0xc69ec1[_0x1a5bce(0x1cc)](),console['log']('\x0aIdentity\x20created.\x20Your\x20public\x20key:'),console[_0x1a5bce(0x1d4)]('\x20\x20'+_0x2155e[_0x1a5bce(0x115)](0x0,0x10)+'…\x0a'),console[_0x1a5bce(0x1d4)](_0x1a5bce(0x114)),await g();}}async function L(_0x4333a3=X){const _0x1ace42=_0x4fa3c4;d(),m(_0x1ace42(0x10e));let _0x2b2b7b='',_0x40f09f=[],_0x51e284=0x0,_0x2c06bb=()=>{const _0x1b98a7=_0x1ace42;d(),m(_0x1b98a7(0x10e)),console['log'](_0x1b98a7(0xac)+_0x2b2b7b+'_\x0a'),_0x40f09f['length']===0x0?console[_0x1b98a7(0x1d4)](_0x1b98a7(0xb2)):A(_0x40f09f[_0x1b98a7(0x12d)](_0xac382b=>(_0xac382b[_0x1b98a7(0x12e)]??_0xac382b[_0x1b98a7(0x1b8)])+'\x20\x20'+(_0xac382b[_0x1b98a7(0x1cb)]??'')+'\x20\x20'+(_0xac382b['description']??'')),_0x51e284),$(_0x1b98a7(0xee));},_0x2fc107=k(_0x1ace42(0x1a1));_0x2fc107[_0x1ace42(0x1bc)]();try{_0x40f09f=await _0x4333a3('');}catch{_0x40f09f=[];}return _0x2fc107[_0x1ace42(0x1cc)](),_0x2c06bb(),new Promise(_0x3a5887=>{let _0x2834b6=N(async({name:_0x3aa71d,sequence:_0x9733f6})=>{const _0x475c41=_0x5908;if(_0x3aa71d===_0x475c41(0xd8)&&(_0x2834b6(),process['exit'](0x0)),_0x3aa71d==='up'){_0x51e284=Math[_0x475c41(0x195)](0x0,_0x51e284-0x1),_0x2c06bb();return;}if(_0x3aa71d===_0x475c41(0x1bd)){_0x51e284=Math['min'](_0x40f09f[_0x475c41(0x19b)]-0x1,_0x51e284+0x1),_0x2c06bb();return;}if(_0x3aa71d===_0x475c41(0xf4)){if(_0x40f09f[_0x475c41(0x19b)]===0x0)return;let _0x152142=_0x40f09f[_0x51e284];_0x2834b6(),d(),m('termill\x20—\x20install\x20confirmation');let _0x39ea1c=k(_0x475c41(0x164));_0x39ea1c['start']();let _0x572a52=Fe(_0x152142[_0x475c41(0x1b8)]);_0x39ea1c[_0x475c41(0x1cc)](),console[_0x475c41(0x1d4)](_0x475c41(0x131)+_0x152142[_0x475c41(0x1b8)]),_0x572a52?(console['log']('\x20\x20Version:\x20\x20'+_0x572a52[_0x475c41(0x1cb)]),console[_0x475c41(0x1d4)](_0x475c41(0x154)+_0x572a52[_0x475c41(0x138)]),console[_0x475c41(0x1d4)](_0x475c41(0xa6)+_0x572a52[_0x475c41(0x101)])):console[_0x475c41(0x1d4)](_0x475c41(0xe2));let _0x3f2cf2=ye()[_0x475c41(0x1b1)](_0x1b6f16=>_0x1b6f16[_0x475c41(0x1b8)]===_0x152142[_0x475c41(0x1b8)]);if(_0x3f2cf2[_0x475c41(0x19b)]>0x0){console['log'](_0x475c41(0xdc)+_0x3f2cf2[_0x475c41(0x19b)]+_0x475c41(0x16b));let _0x2e71b5=_0x3f2cf2[_0x475c41(0x153)]((_0xc3eba3,_0x4f6aab)=>_0x4f6aab[_0x475c41(0x15e)][_0x475c41(0x198)](_0xc3eba3[_0x475c41(0x15e)]))[0x0];console['log'](_0x475c41(0x166)+_0x2e71b5[_0x475c41(0x194)]+'\x22\x20('+_0x2e71b5[_0x475c41(0x15e)]['slice'](0x0,0xa)+')');}if(console[_0x475c41(0x1d4)](_0x475c41(0x193)),console[_0x475c41(0x1d4)]('\x0a\x20\x20Install\x20this\x20package?\x20[Y/N]'),(await q())[_0x475c41(0xdb)][_0x475c41(0xd0)]()!=='y'){_0x3a5887(L(_0x4333a3));return;}d(),m(_0x475c41(0x162)),console[_0x475c41(0x1d4)](_0x475c41(0x16f)+_0x152142[_0x475c41(0x1b8)]+'…\x0a');let _0x2976f4=k(_0x475c41(0xab)+_0x152142[_0x475c41(0x1b8)]);_0x2976f4['start']();try{await J(_0x152142['packageName']),_0x2976f4[_0x475c41(0x1cc)](),console[_0x475c41(0x1d4)](_0x475c41(0xb1)+_0x152142[_0x475c41(0x1b8)]+_0x475c41(0xd6));}catch(_0x20807e){_0x2976f4['stop'](),console[_0x475c41(0x1d4)]('\x0a✗\x20Install\x20failed:\x20'+_0x20807e[_0x475c41(0x17c)]+_0x475c41(0x112));}await g(),_0x3a5887(L(_0x4333a3));return;}if(_0x3aa71d[_0x475c41(0xd0)]()==='l'){_0x2834b6(),_0x3a5887('library');return;}if(_0x3aa71d[_0x475c41(0xd0)]()==='u'){_0x2834b6(),_0x3a5887(_0x475c41(0x137));return;}if(_0x3aa71d[_0x475c41(0xd0)]()==='d'){_0x2834b6();let _0x5c9431=await Xe();_0x3a5887(_0x5c9431===_0x475c41(0x1c7)?L(_0x4333a3):_0x5c9431);return;}if(_0x3aa71d===_0x475c41(0x1ca))_0x2b2b7b=_0x2b2b7b[_0x475c41(0x115)](0x0,-0x1);else{if(_0x9733f6[_0x475c41(0x19b)]===0x1&&_0x9733f6>='\x20')_0x2b2b7b+=_0x9733f6;else return;}_0x51e284=0x0;let _0x56d54e=k(_0x475c41(0x116));_0x56d54e[_0x475c41(0x1bc)]();try{_0x40f09f=await _0x4333a3(_0x2b2b7b);}catch{_0x40f09f=[];}_0x56d54e[_0x475c41(0x1cc)](),_0x2c06bb();});});}async function _(_0x334127=z){const _0xd0081e=_0x4fa3c4;d(),m(_0xd0081e(0x179));let _0xbdc471=R(),_0x45f8a3=0x0,_0x525eb8=()=>{const _0x2421d2=_0xd0081e;d(),m(_0x2421d2(0x179)),_0xbdc471[_0x2421d2(0x19b)]===0x0?console[_0x2421d2(0x1d4)]('\x0a\x20\x20No\x20games\x20installed.\x20Press\x20H\x20to\x20discover\x20games.\x0a'):(console[_0x2421d2(0x1d4)](''),A(_0xbdc471[_0x2421d2(0x12d)](_0x10dde5=>(_0x10dde5[_0x2421d2(0x12e)]??_0x10dde5[_0x2421d2(0x1b8)])+'\x20\x20v'+(_0x10dde5[_0x2421d2(0x1cb)]??'?')),_0x45f8a3)),$('[↑↓]\x20navigate\x20\x20[ENTER]\x20launch\x20\x20[F]\x20feedback\x20\x20[D]\x20uninstall\x20\x20[H/ESC]\x20home\x20\x20[CTRL+C]\x20quit');};return _0x525eb8(),new Promise(_0x14e2d1=>{let _0xe59a60=N(async({name:_0x2f3c87})=>{const _0x3e695b=_0x5908;if(_0x2f3c87==='ctrl+c'&&(_0xe59a60(),process[_0x3e695b(0x15a)](0x0)),_0x2f3c87==='up'){_0x45f8a3=Math[_0x3e695b(0x195)](0x0,_0x45f8a3-0x1),_0x525eb8();return;}if(_0x2f3c87===_0x3e695b(0x1bd)){_0x45f8a3=Math[_0x3e695b(0x13d)](_0xbdc471[_0x3e695b(0x19b)]-0x1,_0x45f8a3+0x1),_0x525eb8();return;}if(_0x2f3c87===_0x3e695b(0xf4)&&_0xbdc471[_0x3e695b(0x19b)]>0x0){let _0xf9a251=_0xbdc471[_0x45f8a3];_0xe59a60(),d(),m(_0x3e695b(0x179));let _0x2ff545=k(_0x3e695b(0x181)+_0xf9a251[_0x3e695b(0x1b8)]+_0x3e695b(0xc4));_0x2ff545['start']();let _0x4b9a3e;try{_0x4b9a3e=await J(_0xf9a251['packageName']);}catch{_0x4b9a3e={'alreadyCurrent':!0x0};}_0x2ff545[_0x3e695b(0x1cc)](),_0x4b9a3e[_0x3e695b(0xc9)]?console[_0x3e695b(0x1d4)](_0x3e695b(0xb1)+_0xf9a251[_0x3e695b(0x1b8)]+'\x20updated\x20to\x20latest.\x20Launching…'):console[_0x3e695b(0x1d4)]('\x0a'+(_0xf9a251['title']??_0xf9a251[_0x3e695b(0x1b8)])+_0x3e695b(0x151)),_0x334127(_0xf9a251[_0x3e695b(0x1a3)]),_0x14e2d1(_(_0x334127));return;}if((_0x2f3c87==='f'||_0x2f3c87==='F')&&_0xbdc471[_0x3e695b(0x19b)]>0x0){let _0x84bfee=_0xbdc471[_0x45f8a3];_0xe59a60();let _0x4b7ef6=await Qe(_0x84bfee[_0x3e695b(0x1b8)]);_0x14e2d1(_0x4b7ef6==='library'?_(_0x334127):_0x4b7ef6);return;}if(_0x2f3c87==='d'||_0x2f3c87==='D'){if(_0xbdc471[_0x3e695b(0x19b)]===0x0)return;let _0x45b196=_0xbdc471[_0x45f8a3];if(_0xe59a60(),d(),m('termill\x20—\x20library'),console[_0x3e695b(0x1d4)](_0x3e695b(0xd9)+(_0x45b196[_0x3e695b(0x12e)]??_0x45b196[_0x3e695b(0x1b8)])+_0x3e695b(0x125)),(await q())['name'][_0x3e695b(0xd0)]()==='y'){let _0x121527=k(_0x3e695b(0x11d)+_0x45b196[_0x3e695b(0x1b8)]+'…');_0x121527[_0x3e695b(0x1bc)]();try{await Oe(_0x45b196['packageName']),_0x121527[_0x3e695b(0x1cc)](),console['log'](_0x3e695b(0xb1)+_0x45b196[_0x3e695b(0x1b8)]+'\x20uninstalled.\x20Press\x20ENTER\x20to\x20continue.');}catch(_0x255738){_0x121527['stop'](),console[_0x3e695b(0x1d4)]('\x0a✗\x20Uninstall\x20failed:\x20'+_0x255738[_0x3e695b(0x17c)]+'.\x20Press\x20ENTER\x20to\x20continue.');}await g();}_0x14e2d1(_(_0x334127));return;}if(_0x2f3c87==='h'||_0x2f3c87==='H'||_0x2f3c87===_0x3e695b(0x1c5)){_0xe59a60(),_0x14e2d1('home');return;}});});}async function Qe(_0x5a491c){return((()=>{const _0x5ae0f3=_0x5908;d(),m(_0x5ae0f3(0x1a5)+_0x5a491c);let _0x445410=ge(_0x5a491c,0x6);if(_0x445410[_0x5ae0f3(0x19b)]===0x0)console[_0x5ae0f3(0x1d4)](_0x5ae0f3(0x152));else{console['log']('');for(let _0xed8726 of _0x445410){let _0x8662db=_0xed8726[_0x5ae0f3(0x168)][_0x5ae0f3(0x115)](0x0,0x8),_0x3980d6=_0xed8726[_0x5ae0f3(0x15e)][_0x5ae0f3(0x115)](0x0,0xa),_0x2aa588=_0xed8726[_0x5ae0f3(0x19e)]===_0x5ae0f3(0xbb)?_0x5ae0f3(0x1ab):_0xed8726[_0x5ae0f3(0x19e)]==='retraction'?_0x5ae0f3(0x19f):_0xed8726[_0x5ae0f3(0x19e)]===_0x5ae0f3(0xa9)?'\x20\x20⚑\x20[flagged]\x20':'';console[_0x5ae0f3(0x1d4)](''+_0x2aa588+_0x8662db+'…\x20('+_0x3980d6+_0x5ae0f3(0x148)+_0xed8726[_0x5ae0f3(0x141)]);}console[_0x5ae0f3(0x1d4)]('');}$(_0x5ae0f3(0x1c9));})()),new Promise(_0x1cb9e6=>{let _0x10a9d2=N(async({name:_0x639097})=>{const _0x467ef0=_0x5908;if(_0x639097===_0x467ef0(0xd8)&&(_0x10a9d2(),process[_0x467ef0(0x15a)](0x0)),_0x639097===_0x467ef0(0x1c5)){_0x10a9d2(),_0x1cb9e6(_0x467ef0(0x1bb));return;}if(_0x639097==='c'||_0x639097==='C'){_0x10a9d2(),console[_0x467ef0(0x1d4)]('');let _0x58d242=await ee(_0x467ef0(0x18d));if(_0x58d242[_0x467ef0(0xbe)]()){let _0x6ac33e=De(_0x5a491c,_0x58d242[_0x467ef0(0xbe)]());M(_0x5a491c,_0x6ac33e),console['log'](_0x467ef0(0x10c)),await g();}_0x1cb9e6(Qe(_0x5a491c));return;}});});}async function Xe(){const _0x5823d4=_0x4fa3c4;d(),m(_0x5823d4(0xfc));let _0x5d1871=E(),_0x438bb7=R()[_0x5823d4(0x1b1)](_0x212bc1=>{const _0x5c1112=_0x5823d4;try{return ue(_0x212bc1[_0x5c1112(0x1b8)])[_0x5c1112(0x13c)]===_0x5d1871;}catch{return!0x1;}});if(_0x438bb7[_0x5823d4(0x19b)]===0x0)return console[_0x5823d4(0x1d4)](_0x5823d4(0x1c6)),console['log'](_0x5823d4(0x106)),await g(),_0x5823d4(0x1c7);let _0x515877=0x0,_0x47be2b=()=>{const _0x2c201c=_0x5823d4;d(),m(_0x2c201c(0xfc)),console[_0x2c201c(0x1d4)](''),A(_0x438bb7[_0x2c201c(0x12d)](_0xc49f76=>(_0xc49f76[_0x2c201c(0x12e)]??_0xc49f76[_0x2c201c(0x1b8)])+_0x2c201c(0x14d)+(_0xc49f76[_0x2c201c(0x1cb)]??'?')),_0x515877),$(_0x2c201c(0x19c));};return _0x47be2b(),new Promise(_0x5edfd6=>{let _0x53a76e=N(async({name:_0x111f7d})=>{const _0x3d7129=_0x5908;if(_0x111f7d===_0x3d7129(0xd8)&&(_0x53a76e(),process[_0x3d7129(0x15a)](0x0)),_0x111f7d==='up'){_0x515877=Math[_0x3d7129(0x195)](0x0,_0x515877-0x1),_0x47be2b();return;}if(_0x111f7d===_0x3d7129(0x1bd)){_0x515877=Math['min'](_0x438bb7[_0x3d7129(0x19b)]-0x1,_0x515877+0x1),_0x47be2b();return;}if(_0x111f7d==='return'&&_0x438bb7['length']>0x0){_0x53a76e();let _0x277068=_0x438bb7[_0x515877];await zt(_0x277068[_0x3d7129(0x1b8)]),_0x5edfd6(Xe());return;}if(_0x111f7d===_0x3d7129(0x1c5)||_0x111f7d==='h'||_0x111f7d==='H'){_0x53a76e(),_0x5edfd6(_0x3d7129(0x1c7));return;}});});}async function zt(_0x5defac){const _0x3340c2=_0x4fa3c4;let _0x2e6d7a=ge(_0x5defac,0xc);if(d(),m(_0x3340c2(0x145)+_0x5defac),_0x2e6d7a[_0x3340c2(0x19b)]===0x0){console[_0x3340c2(0x1d4)](_0x3340c2(0x143)),console[_0x3340c2(0x1d4)](_0x3340c2(0x106)),await g();return;}let _0xca4f33=0x0,_0x4ed5df=_0x2e6d7a['filter'](_0x1ad0d8=>_0x1ad0d8[_0x3340c2(0x19e)]===_0x3340c2(0x1b0)||_0x1ad0d8[_0x3340c2(0x19e)]===_0x3340c2(0xbb));if(_0x4ed5df[_0x3340c2(0x19b)]===0x0){console[_0x3340c2(0x1d4)](_0x3340c2(0x1ba)),console[_0x3340c2(0x1d4)](_0x3340c2(0x106)),await g();return;}let _0x4ff678=()=>{const _0x18dcd8=_0x3340c2;d(),m(_0x18dcd8(0x145)+_0x5defac),console[_0x18dcd8(0x1d4)](''),A(_0x4ed5df['map'](_0x3a8995=>{const _0x299298=_0x18dcd8;let _0x17a892=_0x3a8995[_0x299298(0x168)][_0x299298(0x115)](0x0,0x8),_0x228f9b=_0x3a8995[_0x299298(0x15e)][_0x299298(0x115)](0x0,0xa);return''+(_0x3a8995[_0x299298(0x19e)]===_0x299298(0xbb)?'↳\x20':'')+_0x17a892+_0x299298(0x109)+_0x228f9b+_0x299298(0x148)+_0x3a8995[_0x299298(0x141)];}),_0xca4f33),$(_0x18dcd8(0xcf));};return _0x4ff678(),new Promise(_0x513107=>{let _0x4040b6=N(async({name:_0x54698c})=>{const _0x5e6204=_0x5908;if(_0x54698c===_0x5e6204(0xd8)&&(_0x4040b6(),process['exit'](0x0)),_0x54698c==='up'){_0xca4f33=Math[_0x5e6204(0x195)](0x0,_0xca4f33-0x1),_0x4ff678();return;}if(_0x54698c==='down'){_0xca4f33=Math[_0x5e6204(0x13d)](_0x4ed5df[_0x5e6204(0x19b)]-0x1,_0xca4f33+0x1),_0x4ff678();return;}if(_0x54698c==='r'||_0x54698c==='R'){_0x4040b6();let _0x1f7160=_0x4ed5df[_0xca4f33];console['log']('');let _0x18a71e=await ee(_0x5e6204(0x16a));if(_0x18a71e[_0x5e6204(0xbe)]()){let _0x39a723=Je(_0x5defac,_0x1f7160['id'],_0x18a71e[_0x5e6204(0xbe)]());M(_0x5defac,_0x39a723),console[_0x5e6204(0x1d4)](_0x5e6204(0x165)),await g();}_0x513107();return;}if(_0x54698c==='m'||_0x54698c==='M'){_0x4040b6();let _0x5c8922=_0x4ed5df[_0xca4f33];console[_0x5e6204(0x1d4)]('');let _0x164347=await ee(_0x5e6204(0x121));if(_0x164347[_0x5e6204(0xbe)]()){let _0x28b3a8=Me(_0x5defac,_0x5c8922['id'],_0x164347[_0x5e6204(0xbe)]());M(_0x5defac,_0x28b3a8),console['log'](_0x5e6204(0x191)),await g();}_0x513107();return;}if(_0x54698c==='escape'){_0x4040b6(),_0x513107();return;}});});}async function te(_0x36eafa){const _0x3cf1e4=_0x4fa3c4;d(),m(_0x3cf1e4(0x127));let _0x2da952=k('Checking\x20for\x20updates…');_0x2da952[_0x3cf1e4(0x1bc)]();let _0x308e6b=R(),_0x1272e5;try{_0x1272e5=W(_0x308e6b,_0x36eafa);}catch{_0x1272e5=[];}if(_0x2da952['stop'](),_0x1272e5[_0x3cf1e4(0x19b)]===0x0)return console[_0x3cf1e4(0x1d4)](_0x3cf1e4(0xce)),console[_0x3cf1e4(0x1d4)](_0x3cf1e4(0x106)),await g(),'home';let _0x198e3d=0x0,_0x40b8d=()=>{const _0x3fbf23=_0x3cf1e4;d(),m(_0x3fbf23(0x127)),console[_0x3fbf23(0x1d4)](_0x3fbf23(0x9b)+_0x1272e5[_0x3fbf23(0x19b)]+_0x3fbf23(0x15f)),A(_0x1272e5['map'](_0x3886a8=>_0x3886a8[_0x3fbf23(0x12e)]+'\x20\x20'+_0x3886a8[_0x3fbf23(0x111)]+_0x3fbf23(0xcb)+_0x3886a8[_0x3fbf23(0xf5)]),_0x198e3d),$(_0x3fbf23(0x18c));};return _0x40b8d(),new Promise(_0x6d15ad=>{let _0x3fb15a=N(async({name:_0x2c7c09})=>{const _0x44ef73=_0x5908;if(_0x2c7c09===_0x44ef73(0xd8)&&(_0x3fb15a(),process[_0x44ef73(0x15a)](0x0)),_0x2c7c09==='up'){_0x198e3d=Math['max'](0x0,_0x198e3d-0x1),_0x40b8d();return;}if(_0x2c7c09===_0x44ef73(0x1bd)){_0x198e3d=Math['min'](_0x1272e5[_0x44ef73(0x19b)]-0x1,_0x198e3d+0x1),_0x40b8d();return;}if(_0x2c7c09===_0x44ef73(0xf4)&&_0x1272e5[_0x44ef73(0x19b)]>0x0){let _0x28fc5a=_0x1272e5[_0x198e3d];_0x3fb15a(),d(),m('termill\x20—\x20updates');let _0x8ddfaa=k('Updating\x20'+_0x28fc5a['title']+'…');_0x8ddfaa[_0x44ef73(0x1bc)]();try{await J(_0x28fc5a['packageName']),_0x8ddfaa[_0x44ef73(0x1cc)](),console['log']('\x0a✓\x20'+_0x28fc5a[_0x44ef73(0x12e)]+_0x44ef73(0x1b5)+_0x28fc5a[_0x44ef73(0xf5)]+'.\x20Press\x20ENTER\x20to\x20continue.');}catch(_0x5888b3){_0x8ddfaa[_0x44ef73(0x1cc)](),console[_0x44ef73(0x1d4)]('\x0a✗\x20Update\x20failed:\x20'+_0x5888b3[_0x44ef73(0x17c)]+_0x44ef73(0x112));}await g(),_0x6d15ad(te(_0x36eafa));return;}if(_0x2c7c09==='a'||_0x2c7c09==='A'){_0x3fb15a(),d(),m('termill\x20—\x20updates'),console[_0x44ef73(0x1d4)]('');for(let _0x5f16e1 of _0x1272e5){let _0x1dc65d=k(_0x44ef73(0x129)+_0x5f16e1[_0x44ef73(0x12e)]+'…');_0x1dc65d[_0x44ef73(0x1bc)]();try{await J(_0x5f16e1[_0x44ef73(0x1b8)]),_0x1dc65d[_0x44ef73(0x1cc)](),console['log'](_0x44ef73(0x123)+_0x5f16e1[_0x44ef73(0x12e)]+_0x44ef73(0x1b5)+_0x5f16e1[_0x44ef73(0xf5)]);}catch(_0x1df5ce){_0x1dc65d['stop'](),console[_0x44ef73(0x1d4)](_0x44ef73(0xde)+_0x5f16e1[_0x44ef73(0x12e)]+_0x44ef73(0xa4)+_0x1df5ce[_0x44ef73(0x17c)]);}}console[_0x44ef73(0x1d4)](_0x44ef73(0x12c)),await g(),_0x6d15ad(te(_0x36eafa));return;}if(_0x2c7c09===_0x44ef73(0x1c5)){_0x3fb15a(),_0x6d15ad(_0x44ef73(0x1c7));return;}});});}async function g(){const _0x3c6f73=_0x4fa3c4;let _0xa69a36;do _0xa69a36=await q();while(_0xa69a36[_0x3c6f73(0xdb)]!==_0x3c6f73(0xf4));}import{readFileSync as _0x489da3,existsSync as _0x1c92ac,readdirSync as _0x4ad313,statSync as _0x2e03f6}from'node:fs';import{join as _0x5294d5,resolve as _0x24d284,isAbsolute as _0x4cd2a0}from'node:path';import{execSync as _0x2fe4d5}from'node:child_process';function en(_0x4bc760){const _0x25dfbb=_0x4fa3c4;return _0x4bc760[_0x25dfbb(0xca)]('.')||_0x4bc760[_0x25dfbb(0xca)]('/')||_0x4cd2a0(_0x4bc760);}function tn(_0x19e4b2){const _0x1d32ba=_0x4fa3c4;let _0x4c4a4e=_0x5294d5(_0x24d284(_0x19e4b2),_0x1d32ba(0x13b));if(!_0x1c92ac(_0x4c4a4e))return null;try{return JSON[_0x1d32ba(0x19d)](_0x489da3(_0x4c4a4e,'utf8'));}catch{return null;}}function nn(_0x4d5cd6){const _0x2c0dce=_0x4fa3c4;try{return JSON[_0x2c0dce(0x19d)](_0x2fe4d5(_0x2c0dce(0x173)+_0x4d5cd6+_0x2c0dce(0xc3),{'encoding':'utf8'}));}catch{return null;}}function qe(_0x271b4b,_0x5d61fb=[]){const _0x3feb53=_0x4fa3c4;let _0x4fe26e=[];try{for(let _0x48ff00 of _0x4ad313(_0x271b4b)){if(_0x5d61fb[_0x3feb53(0x167)](_0x48ff00))continue;let _0x460550=_0x5294d5(_0x271b4b,_0x48ff00),_0x3d337c;try{_0x3d337c=_0x2e03f6(_0x460550);}catch{continue;}_0x3d337c[_0x3feb53(0x1d3)]()?_0x4fe26e[_0x3feb53(0x103)](...qe(_0x460550,_0x5d61fb)):/\.(js|mjs|cjs)$/['test'](_0x48ff00)&&_0x4fe26e[_0x3feb53(0x103)](_0x460550);}}catch{}return _0x4fe26e;}function et(_0x511976){const _0x111427=_0x4fa3c4;let _0x410571=en(_0x511976),_0x18afe1=_0x410571?tn(_0x511976):nn(_0x511976),_0x37878b=[];if(!_0x18afe1)return _0x37878b['push']({'check':_0x111427(0xad),'passed':!0x1,'message':_0x410571?_0x111427(0x161)+_0x511976:'Could\x20not\x20fetch\x20package\x20info\x20for\x20\x22'+_0x511976+_0x111427(0x17a)}),_0x37878b;let _0xbe0b88=_0x18afe1['bin'],_0x3d218e=typeof _0xbe0b88==_0x111427(0xe0)?_0xbe0b88:_0xbe0b88&&typeof _0xbe0b88==_0x111427(0xda)?Object['values'](_0xbe0b88)[0x0]:null,_0x52bea6=!!_0x3d218e;_0x37878b[_0x111427(0x103)]({'check':'bin\x20field\x20present','passed':_0x52bea6,'message':_0x52bea6?_0x111427(0xc2)+JSON[_0x111427(0xc6)](_0xbe0b88):_0x111427(0x19a)});let _0x1e8fbc=!0x1;if(_0x410571&&_0x52bea6&&(_0x1e8fbc=_0x1c92ac(_0x5294d5(_0x24d284(_0x511976),_0x3d218e)),_0x37878b['push']({'check':_0x111427(0x187),'passed':_0x1e8fbc,'message':_0x1e8fbc?_0x111427(0x1ce)+_0x3d218e:'bin\x20file\x20not\x20found\x20at\x20path:\x20'+_0x3d218e})),_0x410571&&_0x52bea6&&_0x1e8fbc){let _0x3c1a6e=_0x5294d5(_0x24d284(_0x511976),_0x3d218e),_0x53cdb2=!0x1;try{_0x53cdb2=_0x489da3(_0x3c1a6e,'utf8')[_0x111427(0xca)]('#!/usr/bin/env\x20node');}catch{}_0x37878b[_0x111427(0x103)]({'check':_0x111427(0xc1),'passed':_0x53cdb2,'message':_0x53cdb2?_0x111427(0x1a9):_0x3d218e+_0x111427(0x183)});}let _0xc3efc5=(Array[_0x111427(0x169)](_0x18afe1[_0x111427(0x17f)])?_0x18afe1[_0x111427(0x17f)]:[])[_0x111427(0x167)]('termill');_0x37878b['push']({'check':_0x111427(0x1b4),'passed':_0xc3efc5,'message':_0xc3efc5?'keywords\x20includes\x20\x22termill\x22':'Add\x20\x22termill\x22\x20to\x20the\x20keywords\x20array\x20in\x20package.json\x20for\x20discoverability'});let _0x700186=typeof _0x18afe1[_0x111427(0xf2)]==_0x111427(0xe0)&&_0x18afe1[_0x111427(0xf2)][_0x111427(0xbe)]()[_0x111427(0x19b)]>0x0;_0x37878b[_0x111427(0x103)]({'check':_0x111427(0x146),'passed':_0x700186,'message':_0x700186?_0x111427(0x10b)+_0x18afe1['description']+'\x22':_0x111427(0x1a7)});let _0x245d90=_0x18afe1['termill'],_0x427670=!!_0x245d90&&typeof _0x245d90=='object';if(_0x37878b[_0x111427(0x103)]({'check':_0x111427(0x14a),'passed':_0x427670,'message':_0x427670?_0x111427(0xf3):_0x111427(0x10d)}),_0x427670){let _0x3131e9=typeof _0x245d90[_0x111427(0xdb)]=='string'&&_0x245d90[_0x111427(0xdb)][_0x111427(0xbe)]()[_0x111427(0x19b)]>0x0,_0xf54cbe=typeof _0x245d90[_0x111427(0xf2)]==_0x111427(0xe0)&&_0x245d90[_0x111427(0xf2)][_0x111427(0xbe)]()[_0x111427(0x19b)]>0x0;_0x37878b['push']({'check':'termill.name\x20is\x20set','passed':_0x3131e9,'message':_0x3131e9?_0x111427(0xe4)+_0x245d90['name']+'\x22':_0x111427(0x18a)}),_0x37878b[_0x111427(0x103)]({'check':_0x111427(0xe1),'passed':_0xf54cbe,'message':_0xf54cbe?_0x111427(0x1c4)+_0x245d90[_0x111427(0xf2)]+'\x22':_0x111427(0x157)});let _0x568fb9=_0x245d90[_0x111427(0x13c)];if(_0x568fb9){let _0x105969=typeof _0x568fb9=='string'&&_0x568fb9[_0x111427(0x19b)]===0x40&&/^[0-9a-f]+$/[_0x111427(0x118)](_0x568fb9);_0x37878b['push']({'check':_0x111427(0x119),'passed':_0x105969,'message':_0x105969?_0x111427(0x1ac)+_0x568fb9[_0x111427(0x115)](0x0,0x10)+'…':_0x111427(0x1a2)});}else _0x37878b[_0x111427(0x103)]({'check':_0x111427(0x117),'passed':!0x0,'message':_0x111427(0xbd)});}if(_0x410571){let _0x363df8=!0x1,_0xc2c18a=qe(_0x24d284(_0x511976),[_0x111427(0x1d1),_0x111427(0x196),'dist']);for(let _0xa1e97e of _0xc2c18a)try{if(_0x489da3(_0xa1e97e,'utf8')['includes']('process.exit(')){_0x363df8=!0x0;break;}}catch{}_0x37878b[_0x111427(0x103)]({'check':_0x111427(0x1d9),'passed':_0x363df8,'message':_0x363df8?_0x111427(0x15d):_0x111427(0x108)});}return _0x37878b;}import{mkdirSync as _0x5493ad,writeFileSync as _0x23ff30,existsSync as _0x5c5c15}from'node:fs';import{join as _0x4f1724}from'node:path';import{createInterface as _0x5a0394}from'node:readline';function K(_0x21a683,_0x32748c){return new Promise(_0x1bc495=>{const _0x4dea7b=_0x5908;_0x21a683[_0x4dea7b(0xb8)](_0x32748c,_0x5ecac3=>_0x1bc495(_0x5ecac3[_0x4dea7b(0xbe)]()));});}async function tt(){const _0x30fbd7=_0x4fa3c4;let _0x3da82b=_0x5a0394({'input':process[_0x30fbd7(0x124)],'output':process[_0x30fbd7(0x155)]});console['log'](_0x30fbd7(0xd5));let _0x4d383d=await K(_0x3da82b,_0x30fbd7(0xc5)),_0x5631f0=await K(_0x3da82b,_0x30fbd7(0xff)),_0x3487fa=await K(_0x3da82b,_0x30fbd7(0x18b)),_0x29fa89=await K(_0x3da82b,_0x30fbd7(0xfa)),_0x4512ea=await K(_0x3da82b,_0x30fbd7(0xcc)),_0x21f4fa=await K(_0x3da82b,'Your\x20termill\x20public\x20key\x20(from\x20~/.termill/keys/id_ed25519.pub)\x20[optional]:\x20');_0x3da82b['close'](),_0x4d383d||(console[_0x30fbd7(0x188)]('\x0aError:\x20package\x20name\x20is\x20required.'),process[_0x30fbd7(0x15a)](0x1));let _0x369257=_0x4f1724(process[_0x30fbd7(0x163)](),_0x4d383d);_0x5c5c15(_0x369257)&&(console[_0x30fbd7(0x188)](_0x30fbd7(0x17e)+_0x4d383d+_0x30fbd7(0xf1)),process['exit'](0x1)),_0x5493ad(_0x369257,{'recursive':!0x0});let _0x16a146={'name':_0x4d383d,'version':'1.0.0','description':_0x3487fa||'','main':_0x30fbd7(0x1d2),'bin':{[_0x4d383d]:_0x30fbd7(0xb9)},'keywords':[_0x30fbd7(0xc0)],'author':_0x29fa89||'','license':_0x30fbd7(0xea),'termill':{'name':_0x5631f0||_0x4d383d,'description':_0x3487fa||'','launchCommand':_0x4d383d,..._0x4512ea?{'category':_0x4512ea}:{},..._0x21f4fa?{'creatorKey':_0x21f4fa}:{}}};_0x23ff30(_0x4f1724(_0x369257,_0x30fbd7(0x13b)),JSON['stringify'](_0x16a146,null,0x2)+'\x0a',_0x30fbd7(0xe8));let _0x94eade=[_0x30fbd7(0x174),'',_0x30fbd7(0x9e)+(_0x5631f0||_0x4d383d)+'\x20—\x20entry\x20point','//\x20TODO:\x20implement\x20your\x20game\x20here','',_0x30fbd7(0x13a)+(_0x5631f0||_0x4d383d)+_0x30fbd7(0x1bf),_0x30fbd7(0x180),'',_0x30fbd7(0x1b6),_0x30fbd7(0x178),_0x30fbd7(0x139),_0x30fbd7(0x104),_0x30fbd7(0x1a0),'']['join']('\x0a');_0x23ff30(_0x4f1724(_0x369257,_0x30fbd7(0x1d2)),_0x94eade,_0x30fbd7(0xe8)),_0x23ff30(_0x4f1724(_0x369257,_0x30fbd7(0xae)),'node_modules\x0a',_0x30fbd7(0xe8));let _0x282565=['#\x20'+(_0x5631f0||_0x4d383d),'',_0x3487fa||_0x30fbd7(0x113),'',_0x30fbd7(0xaf),'',_0x30fbd7(0x16e),_0x30fbd7(0x10a)+_0x4d383d,'termill','```','',_0x30fbd7(0x9c),'',_0x30fbd7(0x16e),_0x4d383d,_0x30fbd7(0x184),'',_0x30fbd7(0x14c),'',_0x30fbd7(0xea),'']['join']('\x0a');_0x23ff30(_0x4f1724(_0x369257,_0x30fbd7(0x128)),_0x282565,_0x30fbd7(0xe8)),console[_0x30fbd7(0x1d4)]('\x0a✓\x20Project\x20scaffolded\x20at\x20./'+_0x4d383d+'/'),console[_0x30fbd7(0x1d4)](_0x30fbd7(0xc8)),console[_0x30fbd7(0x1d4)]('\x20\x20cd\x20'+_0x4d383d),console[_0x30fbd7(0x1d4)]('\x20\x20npm\x20link\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20link\x20globally\x20for\x20local\x20testing'),console[_0x30fbd7(0x1d4)](_0x30fbd7(0xe5)),console[_0x30fbd7(0x1d4)](_0x30fbd7(0x1c2)),console[_0x30fbd7(0x1d4)]('');}function xe(){_0x284898(x,{'recursive':!0x0}),_0x284898(b,{'recursive':!0x0}),_0x284898(S,{'recursive':!0x0});}function nt(_0x5d2378){const _0xd65518=_0x4fa3c4;let _0x181133=_0x3defc3({'input':process[_0xd65518(0x124)],'output':process['stdout']});return new Promise(_0x4551a0=>{const _0x32595f=_0xd65518;_0x181133[_0x32595f(0xb8)](_0x5d2378,_0x3565f7=>{const _0x3d1764=_0x32595f;_0x181133[_0x3d1764(0x18f)](),_0x4551a0(_0x3565f7);});});}async function ln(){const _0x40205a=_0x4fa3c4;xe(),await ze();let _0x43e8b6=JSON['parse'](_0x1cf8e7(new URL(_0x40205a(0xef),import.meta.url),_0x40205a(0xe8)))[_0x40205a(0x1cb)];try{let _0x3bedb7=W(R(),_0x43e8b6);_0x3bedb7['length']>0x0&&console[_0x40205a(0x1d4)](_0x40205a(0x110)+_0x3bedb7[_0x40205a(0x19b)]+_0x40205a(0x105));}catch{}let _0x278557='home';for(;;)_0x278557==='home'?_0x278557=await L(X):_0x278557==='library'?_0x278557=await _(z):_0x278557==='updates'?_0x278557=await te(_0x43e8b6):_0x278557&&typeof _0x278557[_0x40205a(0x15b)]==_0x40205a(0x177)?_0x278557=await _0x278557:_0x278557=_0x40205a(0x1c7);}var se=process[_0x4fa3c4(0xf8)][0x2];if(se===_0x4fa3c4(0xbf)){let e=process['argv'][0x3]??'.',t=et(e),n=!0x0;for(let o of t)o[_0x4fa3c4(0x144)]?console['log']('✓\x20'+o[_0x4fa3c4(0xb6)]):o['check']['includes'](_0x4fa3c4(0x11a))?console['log']('⚠\x20'+o[_0x4fa3c4(0xb6)]+':\x20'+o[_0x4fa3c4(0x17c)]):(console[_0x4fa3c4(0x1d4)]('✗\x20'+o[_0x4fa3c4(0xb6)]+':\x20'+o[_0x4fa3c4(0x17c)]),n=!0x1);process['exit'](n?0x0:0x1);}else{if(se===_0x4fa3c4(0x1db))xe(),(async()=>{const _0x35ea4d=_0x4fa3c4;let _0x5b4e77=await nt(_0x35ea4d(0xa1));_0x5b4e77||(console[_0x35ea4d(0x188)](_0x35ea4d(0xe7)),process[_0x35ea4d(0x15a)](0x1));let _0x526149=Re(_0x5b4e77);_0x1ed092(_0x35ea4d(0xdf),_0x526149,_0x35ea4d(0xe8)),console[_0x35ea4d(0x1d4)](_0x35ea4d(0x18e));})()[_0x4fa3c4(0x15c)](_0x573ee5=>{const _0x2b6a3d=_0x4fa3c4;console['error'](_0x2b6a3d(0x12f),_0x573ee5[_0x2b6a3d(0x17c)]??_0x573ee5),process['exit'](0x1);});else{if(se===_0x4fa3c4(0x13f)){xe();let e=process['argv'][0x3];e||(console[_0x4fa3c4(0x188)](_0x4fa3c4(0x14b)),process['exit'](0x1)),(async()=>{const _0x3bee20=_0x4fa3c4;let _0x5c5cb1=_0x1cf8e7(e,_0x3bee20(0xe8)),_0x5b004f=await nt(_0x3bee20(0x1c1));Te(_0x5c5cb1,_0x5b004f),console[_0x3bee20(0x1d4)](_0x3bee20(0xb7));})()[_0x4fa3c4(0x15c)](_0x3f1962=>{const _0x55ad22=_0x4fa3c4;console[_0x55ad22(0x188)]('Import\x20failed:',_0x3f1962[_0x55ad22(0x17c)]??_0x3f1962),process[_0x55ad22(0x15a)](0x1);});}else se===_0x4fa3c4(0x170)?tt()[_0x4fa3c4(0x15c)](_0x34748c=>{const _0xcd3873=_0x4fa3c4;console[_0xcd3873(0x188)]('Init\x20failed:',_0x34748c[_0xcd3873(0x17c)]??_0x34748c),process[_0xcd3873(0x15a)](0x1);}):ln()[_0x4fa3c4(0x15c)](_0x1a10fc=>{const _0x3482b4=_0x4fa3c4;console['error'](_0x3482b4(0x147),_0x1a10fc[_0x3482b4(0x17c)]??_0x1a10fc),process[_0x3482b4(0x15a)](0x1);});}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termill",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "A decentralized terminal gaming platform to discover, install, and launch Node.js terminal games.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -27,7 +27,8 @@
27
27
  "terminal",
28
28
  "gaming",
29
29
  "platform",
30
- "cli"
30
+ "cli",
31
+ "termill"
31
32
  ],
32
33
  "license": "MIT",
33
34
  "devDependencies": {