@ax-hub/sdk 0.3.0 → 1.0.1

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/CHANGELOG.md CHANGED
@@ -2,6 +2,39 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [1.0.0] — 2026-05-29
6
+
7
+ First stable major. `@ax-hub/sdk` ↔ backend `main` 정렬 (110→177 routes, 36→42 error codes) + 단일 패키지에서 npm workspaces 모노레포로 전환. 거버넌스(admin) surface 36 op 을 신규 공개 패키지 **`@ax-hub/admin-sdk`** 로 분리. SDK 1차 사용자(코딩 에이전트 + member/PAT 앱)는 admin 메서드로 항상 403 을 받았으므로 main SDK 표면에서 제거하는 것이 정상화다. 마이그레이션 매핑은 [`docs/MIGRATION-1.0.md`](docs/MIGRATION-1.0.md) 참조 (ADR-0042 / ADR-0043 / ADR-0044).
8
+
9
+ ### BREAKING
10
+
11
+ - **admin 거버넌스 36 op 이동 — `@ax-hub/sdk` 에서 제거, 신규 `@ax-hub/admin-sdk` 로 이동.** 접근은 `new AdminClient({ token, tokenType })` (from `@ax-hub/admin-sdk`) 로. 매핑:
12
+ - `sdk.audit.*` (events `list`/`get`, `integrityCheck`, `anonymize`) → `adminSdk.audit.*`
13
+ - `sdk.authz.{tags,subjects,grants}` → `adminSdk.authz.*`
14
+ - `sdk.authz.evaluator` / `decide` **제거-only** — backend 공식 route 부재. backend 노출 시 후속 admin-sdk 에서 재도입.
15
+ - `sdk.tenants.{create,list,update,delete}` + members / invitations / email-domains / icon → `adminSdk.tenants.*`. **`sdk.tenants.get` 은 main 유지.**
16
+ - `sdk.identity.idp` (`IdentityProviderClient`) → `adminSdk.identityProviders.*`
17
+ - `sdk.apps.categories.{create,update,delete}` → `adminSdk.categories.*`. **`sdk.apps.categories.list`/`get` 은 main 유지.**
18
+ - **`sdk.apps.create()` 는 이제 tenant UUID(`defaultTenantId`) 를 요구**하고 미설정 시 `TenantIdRequiredError` 를 throw. 구 `POST /api/v1/apps` 404-fallback 경로 제거. `apps.list()` 는 `defaultTenantId` 설정 시 tenant-scoped, 미설정 시 live alias 호출 (US1).
19
+
20
+ ### Added
21
+
22
+ - **신규 capability ~25 (US3, non-breaking):** apps `suspend`/`resume`, app invitations `create`/`delete`, `members.list`, `discover`(global + tenant), `me/apps` (owned + received), `check-availability` + icon pre-create, tables `check-availability`/`column-types`/`browse-rows`, deploy `logs`/`app-bootstraps`/github accounts+repos, `gateway.engines`, identity github oauth `start`/`callback`, `config.public` (tokenless), reviewer review-requests history.
23
+ - **MCP + OAuth (US4):** `registerMcpClient` (Dynamic Client Registration, unauthenticated), RFC 8707 `resource`/audience binding on authorize + token, oauth-client `allowedResources`, 9 typed OAuth errors incl. 전용 `InvalidTargetError`.
24
+ - **입력/필드 drift (US5):** `CreateAppInput`/`UpdateAppInput` 신규 필드 (`authMode`, `dataScopes`, `deployMethod`, `resourceTier`, `subdomain`, `clearSubdomain`, `iconDarkUrl`), oauth-client 신규 필드, env-var `stage`, table `description`, app-list `filter`/`sort`/`page` 파라미터.
25
+
26
+ ### Changed
27
+
28
+ - backend contract pin 을 spec-278 → backend `main` 으로 전진 (110→177 routes, 36→42 error codes). error catalog 6 코드 추가 (`codes.go.snapshot` 갱신, `extract-codes` 재생성).
29
+ - OAuth 9 코드 매핑에 `invalid_target` 전용 구분 추가 (US5).
30
+
31
+ ### Infrastructure
32
+
33
+ - 단일 패키지 `@ax-hub/sdk` → **npm workspaces 모노레포** (`packages/*`). 공유 infra(http/auth/error/pagination/retry/redaction/branded-id/resource helpers)를 private **`@ax-hub/core`** (`private:true`, **미발행**) 로 추출, tsup `noExternal` 로 `@ax-hub/sdk` + `@ax-hub/admin-sdk` dist 에 inline. publish `.d.ts` 에 private core import 0 (SC-009, `check:dts-no-private-core` gate).
34
+ - 신규 공개 패키지 **`@ax-hub/admin-sdk`** (governance surface, `AdminClient`).
35
+ - public packages(sdk/admin-sdk) semver major 1.0.0 동반, private core 버전 동기화. release CI 가 두 공개 패키지를 발행 (core 는 비발행).
36
+ - ADR 신규: ADR-0042 (monorepo workspaces), ADR-0043 (BC relocation → admin-sdk), ADR-0044 (public API whitelist 재정의).
37
+
5
38
  ## [0.3.0] — 2026-05-26
6
39
 
7
40
  gateway 거버넌스 surface(`engines`/`connectors`/`resources`, `@adminOnly`)를 SDK 에서 제거하고 member-facing surface(`query` + `catalog`)만 유지 (ADR-0041). SDK 1차 사용자(코딩 에이전트 + member-token 앱)는 거버넌스 메서드로 항상 403 을 받았고, connector/engine 관리는 콘솔 관리자 작업이다.
package/README.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  agent-first Node.js SDK for AX Hub. Designed for Claude, Codex, and other coding agents — one client, 8 bounded contexts, typed errors, async iterators for SSE streams, generated drift inventory, and no hidden Korean substring matching.
4
4
 
5
+ > **이 SDK를 개발/유지보수하려는 컨트리뷰터라면** → 내부 아키텍쳐·동작 원리·하네스·e2e 플로우를 설명한 온보딩 문서 [`docs/ARCHITECTURE.md`](../../docs/ARCHITECTURE.md)부터 읽으세요. (이 README는 SDK *사용자*용 API 가이드입니다.)
6
+
7
+ > **거버넌스(admin) surface 를 찾고 있다면** → tenants CRUD / authz / audit / identity-providers / category CUD 는 `@ax-hub/sdk` 에서 분리되어 별도 패키지 [`@ax-hub/admin-sdk`](../admin-sdk/README.md) 로 이동했습니다 (1.0.0). 0.x 에서 올라온다면 [`docs/MIGRATION-1.0.md`](../../docs/MIGRATION-1.0.md) 의 매핑 표를 보세요.
8
+
5
9
  ## I want to...
6
10
 
7
11
  | Goal | Section |
@@ -11,6 +15,7 @@ agent-first Node.js SDK for AX Hub. Designed for Claude, Codex, and other coding
11
15
  | choose JWT vs PAT or OAuth | [Authentication](#authentication) |
12
16
  | query dynamic tables | [Dynamic Data + Query DSL](#dynamic-data--query-dsl) |
13
17
  | debug an error | [Errors & Debugging](#errors--debugging) |
18
+ | use admin/governance APIs | [`@ax-hub/admin-sdk`](../admin-sdk/README.md) |
14
19
  | upgrade from 0.x | [Migration & Upgrade](#migration--upgrade) |
15
20
 
16
21
  ## Magic Moment
@@ -54,16 +59,14 @@ console.log(app.slug, paid.total)
54
59
  | `sdk.apps.comments` | `add`, `list`, `listAll`, `delete` (1-500 char client-side validation) |
55
60
  | `sdk.apps.oauthClients` | `create` (⚠ `clientSecret` surfaced ONCE), `delete` |
56
61
  | `sdk.apps.git` | `connect`, `installStart` (GitHub App install flow) |
57
- | `sdk.apps.categories` | tenant category CRUD |
62
+ | `sdk.apps.categories` | tenant category read (`list`, `get`); CUD moved to `@ax-hub/admin-sdk` |
58
63
  | `sdk.apps.discover` | catalog search facade |
59
64
  | `sdk.apps.templates` | app template listing |
60
65
  | `sdk.apps.tables` | `list`, `create`, `delete`, `addColumn`, `dropColumn`, `listGrants`, `addGrant`, `revokeGrant` (schema admin) |
61
66
  | `sdk.publicationRequests` | `get`, `approve`, `reject`, `listPending` (reviewer/admin namespace — separate from owner-scoped `sdk.apps.publication`) |
62
67
  | `sdk.deployments` | `create`, `list`, `listAll`, `get`, `cancel`, `rollback` |
63
- | `sdk.identity` | `pat.*`, `oauth.*`, `oidc.*`, `deviceCode.*`, `idp.*`, `systemOAuthClients.get`, `me` |
64
- | `sdk.tenants` | tenant CRUD, members, invitations, email domains, icon upload |
65
- | `sdk.authz` | PBAC tags/subjects/grants + `evaluator.decide/decideMany` |
66
- | `sdk.audit` | events, integrity check, anonymize, server-only emit |
68
+ | `sdk.identity` | `pat.*`, `oauth.*`, `oidc.*`, `deviceCode.*`, `systemOAuthClients.get`, `me` (identity-provider governance moved to `@ax-hub/admin-sdk`) |
69
+ | `sdk.tenants` | `get` (read own tenant); CRUD + members/invitations/email-domains/icon moved to `@ax-hub/admin-sdk` |
67
70
  | `sdk.gateway` | `query.run` (parameterized read), `catalog` (member: list / getResource / invoke) |
68
71
  | `sdk.data` | `/data/{tenantSlug}/{appSlug}/{table}` CRUD + bulk + typed DSL |
69
72
 
@@ -71,9 +74,11 @@ The committed generated route inventory currently tracks the pinned backend swag
71
74
 
72
75
  ### `sdk.apps.list` vs `sdk.apps.listMine`
73
76
 
74
- - `list()` — returns apps in the **resolved tenant** (via `defaultTenantSlug` or `withTenant`). Tenant-scoped.
77
+ - `list()` — returns apps in the **resolved tenant** (via `defaultTenantId`/`defaultTenantSlug` or `withTenant`). Tenant-scoped.
75
78
  - `listMine()` — returns the caller's **workspace** apps (owned + apps they've been granted access to), regardless of tenant ownership. Useful for per-user "my dashboard" views. Wraps `GET /me/apps/workspace`.
76
79
 
80
+ > **1.0:** `apps.create()` requires a tenant context (`defaultTenantId` or `sdk.tenant(...)`). Without one it throws `TenantIdRequiredError`. See [Migration](#migration--upgrade).
81
+
77
82
  ### `sdk.apps.publication` vs `sdk.publicationRequests`
78
83
 
79
84
  - `sdk.apps.publication.*` — **owner-scoped**: submit/list/unpublish own app. App ID is the input.
@@ -235,7 +240,7 @@ Production mock mode throws `MockInProductionError` unless `AX_HUB_ALLOW_MOCK_IN
235
240
 
236
241
  ### Error Types
237
242
 
238
- All `/api/v1/*` 4xx/5xx responses become typed `AxHubError` subclasses. `error.category` (9 enum from backend spec 278) drives base class, `error.code` selects specific subclass.
243
+ All `/api/v1/*` 4xx/5xx responses become typed `AxHubError` subclasses. `error.category` (9 enum from backend spec) drives base class, `error.code` selects specific subclass.
239
244
 
240
245
  | Class | Status | `retryable` | Hint |
241
246
  |-------|--------|-------------|------|
@@ -249,7 +254,7 @@ All `/api/v1/*` 4xx/5xx responses become typed `AxHubError` subclasses. `error.c
249
254
  | `InternalServerError` | 500 | **false** | escalate to human |
250
255
  | `UnavailableError` (+ `AppUnavailableError`) | 502 / 503 / 504 | true | exponential backoff |
251
256
  | `NetworkError`, `TimeoutError`, `DecodeError`, `AbortError` | — | varies | — |
252
- | `OAuthError` (+ specific RFC 6749 codes) | — | varies (per code) | — |
257
+ | `OAuthError` (+ specific RFC 6749 codes incl. `InvalidTargetError`) | — | varies (per code) | — |
253
258
 
254
259
  ```ts
255
260
  try {
@@ -261,14 +266,14 @@ try {
261
266
  }
262
267
  ```
263
268
 
264
- ### Gateway catalog + query (v0.1)
269
+ ### Gateway catalog + query
265
270
 
266
271
  `sdk.tenant(slug).gateway` is member-facing — discover what you can read, then query it:
267
272
 
268
273
  - **`catalog.*`** — `listKinds` / `listConnectors` / `listResources` / `getResource` / `invoke` (+ `hasAccess`, `listResourcesWithDetail`).
269
274
  - **`query.run(...)`** — parameterized read against a connector resource (pass `connectorId` from `catalog.listConnectors()`).
270
275
 
271
- > Admin-only connector/resource/engine governance is **not** in the SDK (removed in 0.3.0, ADR-0041) — manage those in the AX Hub console.
276
+ > Admin-only connector/resource/engine governance is **not** in the SDK — manage those in the AX Hub console.
272
277
 
273
278
  | Situation | What you get |
274
279
  |-----------|--------------|
@@ -319,17 +324,22 @@ CI fails if swagger route inventory and generated files drift.
319
324
 
320
325
  ## Migration & Upgrade
321
326
 
322
- Every pre-1.0 minor must include `CHANGELOG.md` `Migration` notes. 0.x aliases are kept through 0.5 and removed at 1.0 RC with `codemods/0.x-to-1.0.ts`.
327
+ **0.x 1.0.0** is a hard cut (no prior deprecation). Two breaking changes:
328
+
329
+ 1. **admin governance 36 op moved** to the new [`@ax-hub/admin-sdk`](../admin-sdk/README.md) package.
330
+ 2. **`apps.create()` requires a tenant context** (`defaultTenantId` or `sdk.tenant(...)`).
331
+
332
+ See [`docs/MIGRATION-1.0.md`](../../docs/MIGRATION-1.0.md) for the full old→new mapping table and `CHANGELOG.md` `[1.0.0]` for the complete change list.
323
333
 
324
334
  ## Concepts
325
335
 
326
- - **Tenant scoping.** `defaultTenantSlug` on constructor, `client.withTenant(slug)` for per-call switching, `TenantSlugRequiredError` when ambiguous.
336
+ - **Tenant scoping.** `defaultTenantId`/`defaultTenantSlug` on constructor, `client.withTenant(slug)` for per-call switching, `TenantSlugRequiredError`/`TenantIdRequiredError` when ambiguous/missing.
327
337
  - **Pagination.** `list({ pageSize, cursor })` for single page. `listAll({ pageSize })` for async iterator that yields `{type:'item', value:T}` or `{type:'drift', addedSince}` when the backend's total grows mid-iteration.
328
338
  - **Rate limiting.** Default strategy `'sleep'` — SDK honors `Retry-After` and silently retries. Use `rateLimitStrategy: 'throw'` to surface `RateLimitedError(retry.afterMs)` to caller.
329
339
  - **Request correlation.** SDK auto-generates `X-Request-Id` (ULID) on every request. Backend echoes it OR replaces with its own `req_xxx` prefix if absent. `AxHubError.requestId` always present.
330
340
  - **Token redaction.** Authorization / X-Api-Key / Cookie are always replaced with `***REDACTED***` in debug logs and `Error.toJSON()` output.
331
341
  - **Debug mode.** `new AxHubClient({ debug: true, logger: pino() })` — opt-in structured request/response logging. Default off.
332
- - **Language.** Backend `error.message` is Korean (user-facing) by design. `error.code` and `error.category` are machine-readable (snake_case English) and stable across translations. Agents should branch on `code`/`category`; humans see the Korean `message`. English-only message support is deferred (see backend roadmap, no SDK changes required when added).
342
+ - **Language.** Backend `error.message` is Korean (user-facing) by design. `error.code` and `error.category` are machine-readable (snake_case English) and stable across translations. Agents should branch on `code`/`category`; humans see the Korean `message`.
333
343
 
334
344
  ## Branded ID types (optional)
335
345
 
@@ -362,8 +372,8 @@ Target was < 10ms p99 — 100x+ headroom in every path.
362
372
 
363
373
  ## Backend dependency
364
374
 
365
- Pinned against backend spec 278 (`feat/278-structured-errors`, landed 2026-05-14). Re-generate types via `npm run generate` + `npm run extract-codes` after backend swagger updates. Once backend completes Phase 2 dispatcher migration (all 6 dispatchers using the structured `ErrXxx → category / code` description format), `extract-codes` auto-syncs the full code-map; until then `src/errors/code-map.ts` is hand-maintained against backend `codes.go`.
375
+ Pinned against backend `main` (177 routes, 42 error codes). Re-generate types via `npm run generate` + `npm run extract-codes` after backend swagger updates.
366
376
 
367
377
  ## License
368
378
 
369
- UNLICENSED (TBD — see `.plan/design.md` Open Question 2).
379
+ Apache-2.0. See [`LICENSE`](./LICENSE).
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- 'use strict';var r=I;(function(Q,p){var E=I,m=Q();while(!![]){try{var H=parseInt(E(0x164))/(-0xa0*-0x3a+-0x871+-0x1bce)+parseInt(E(0x16c))/(0xfb6+0x13c*0xf+-0xb68*0x3)+-parseInt(E(0x165))/(-0x2703+-0x1146+0x4b1*0xc)+-parseInt(E(0x171))/(0x11e0+0x16fd+-0x28d9)*(parseInt(E(0x159))/(-0x1f64+-0xa98+0x2a01))+parseInt(E(0x15b))/(-0x6a4+-0x1c4a+0x22f4)+-parseInt(E(0x175))/(-0x1c*0xd2+-0x1a*0x13+-0x3*-0x84f)*(-parseInt(E(0x179))/(-0x1*-0x3fc+-0x1*-0x253e+-0x1499*0x2))+parseInt(E(0x166))/(0xc2*0x2b+-0x1acf+-0x5be);if(H===p)break;else m['push'](m['shift']());}catch(U){m['push'](m['shift']());}}}(d,0xcf4b5*-0x1+-0x560a7+0x1ae540));function I(Q,p){Q=Q-(-0x184c+-0xa7d+0x241b);var m=d();var H=m[Q];if(I['eODhjH']===undefined){var e=function(O){var w='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var F='',A='',Z=F+e,c=(''+function(){return 0x21df+-0x5*-0x4ae+0x1b*-0x21f;})['indexOf']('\x0a')!==-(0x270c+0x2*-0x10e6+-0x4f*0x11);for(var E=-0x1ed3+-0x200*-0x8+0xed3,r,W,a=0xae7*-0x1+-0x34e*-0x7+-0xc3b;W=O['charAt'](a++);~W&&(r=E%(-0x12c2+-0x226a+0x3530)?r*(-0x211a+0xbc*0x19+-0x65*-0x26)+W:W,E++%(0x25*0x8c+-0x1b07+-0x15*-0x53))?F+=c||Z['charCodeAt'](a+(0x197*-0x10+0x88+-0x2*-0xc79))-(0x8*0x3a1+-0x1cb0+0x27*-0x2)!==0x223a+-0x1d2d+0x1*-0x50d?String['fromCharCode'](0x13ff+0x4*0x920+-0x3780&r>>(-(-0x1bec+0x1*-0x31+0x1c1f)*E&0x514+-0x242+-0x2cc)):E:0x11b*-0x1+-0x1c9+0x2e4){W=w['indexOf'](W);}for(var J=-0x1*-0x4a0+-0x4f*-0x3+0x31*-0x1d,h=F['length'];J<h;J++){A+='%'+('00'+F['charCodeAt'](J)['toString'](-0xbcf+0xa8*-0x3b+-0x10dd*-0x3))['slice'](-(0x573+-0x482+-0xef));}return decodeURIComponent(A);};I['tyWpqk']=e,I['XMTIHt']={},I['eODhjH']=!![];}var U=m[0x2523+-0x3*-0xc93+-0x4adc],t=Q+U,L=I['XMTIHt'][t];if(!L){var O=function(w){this['ZUOVzu']=w,this['ltUnOr']=[0xb33+0x18a4+-0x42*0x8b,-0x13*-0xd+0x11d3+0x5*-0x3c2,-0x24d6+-0x1*0x2507+0x49dd],this['eLsVXM']=function(){return'newState';},this['QHkmWC']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['hoTFok']='[\x27|\x22].+[\x27|\x22];?\x20*}';};O['prototype']['RWUkZz']=function(){var w=new RegExp(this['QHkmWC']+this['hoTFok']),F=w['test'](this['eLsVXM']['toString']())?--this['ltUnOr'][0x1a9d+0x1bb6*-0x1+0x6*0x2f]:--this['ltUnOr'][-0x1a7b+-0x10e7+0x9*0x4d2];return this['SchFKu'](F);},O['prototype']['SchFKu']=function(w){if(!Boolean(~w))return w;return this['BPKVNJ'](this['ZUOVzu']);},O['prototype']['BPKVNJ']=function(w){for(var F=-0x2b*0x1d+-0x1*0x185d+0x1d3c,A=this['ltUnOr']['length'];F<A;F++){this['ltUnOr']['push'](Math['round'](Math['random']())),A=this['ltUnOr']['length'];}return w(this['ltUnOr'][-0x2e*0xd4+0x1e2a+0x196*0x5]);},(''+function(){return 0x1*0x1f1+0x2a*0x34+-0x1*0xa79;})['indexOf']('\x0a')===-(0x1cc1*-0x1+-0x1*-0x24d9+-0x1*0x817)&&new O(I)['RWUkZz'](),H=I['tyWpqk'](H),I['XMTIHt'][t]=H;}else H=L;return H;}var fs=require('fs'),path=require(r(0x17f)),_documentCurrentScript=typeof document!==r(0x155)+'ined'?document['curre'+r(0x157)+r(0x153)]:null;function t(m=process[r(0x186)]()){var W=r,H={'njAXS':W(0x172)+')+)+)'+'+$','gQMaZ':function(w,F,A){return w(F,A);},'ENYyM':W(0x187)+W(0x161)+'on','hzgPF':W(0x163)+W(0x184)+W(0x178)+W(0x152),'yRNjd':W(0x15e)+W(0x176)+'ts'},U=(function(){var w=!![];return function(F,A){var Z=w?function(){var a=I;if(A){var c=A[a(0x15d)](F,arguments);return A=null,c;}}:function(){};return w=![],Z;};}()),L=H[W(0x15a)](U,this,function(){var J=W;return L[J(0x17e)+J(0x162)]()[J(0x17c)+'h'](J(0x172)+J(0x170)+'+$')[J(0x17e)+J(0x162)]()[J(0x17b)+J(0x189)+'r'](L)['searc'+'h'](H[J(0x173)]);});L();let O=[{'name':'packa'+'ge.js'+'on','ok':fs[W(0x16e)+W(0x182)](path[W(0x17d)+'ve'](m,H[W(0x181)]))},{'name':H[W(0x154)],'ok':fs[W(0x16e)+'sSync'](path[W(0x17d)+'ve'](m,H[W(0x154)]))},{'name':H[W(0x15c)],'ok':fs[W(0x16e)+W(0x182)](path[W(0x17d)+'ve'](m,W(0x15e)+W(0x176)+'ts'))}];return{'ok':O[W(0x188)](w=>w['ok']),'checks':O};}if((typeof document===r(0x155)+r(0x16f)?require('u'+'rl')[r(0x167)+r(0x18b)+r(0x16a)](__filename)[r(0x158)]:_documentCurrentScript&&_documentCurrentScript['tagNa'+'me'][r(0x17a)+r(0x174)+'e']()===r(0x177)+'T'&&_documentCurrentScript['src']||new URL(r(0x183)+r(0x168),document[r(0x15f)+'RI'])['href'])===r(0x156)+'//'+process[r(0x185)][-0x13*0x13c+0x3ff+0x1376]){let e=t();process[r(0x16b)+'t'][r(0x18a)](JSON[r(0x180)+r(0x16d)](e,null,-0x7e2*-0x1+-0x2*-0xad1+-0x1d82)+'\x0a'),process[r(0x169)](e['ok']?0x1ebe*-0x1+-0x1615+-0x1*-0x34d3:-0xafb*0x3+0xb33+-0x13*-0x125);}function d(){var h=['BMPbwfm','zxjdyxm','ndmZmdjrC0v5wNK','BMrLEc4','u0nssva','ywDNzxi','mJmYr1r6te9f','Dg9vCha','y29UC3q','C2vHCMm','CMvZB2W','Dg9tDhi','Cgf0Aa','C3rYAw4','ru5zEu0','C1n5BMm','zg9JDg8','zw4VC3C','yxjNDG','y3DK','CgfJA2e','zxzLCNK','CNvJDg8','D3jPDgu','B0zPBgu','lMPZB24','Axb0','AhPNuey','Dw5Kzwy','zMLSztO','BNrty3i','AhjLzG','mZqZndvcrLbbtu0','z1fnyvO','mZi1mtu0nfb0z1LdvW','EvjoAMq','yxbWBhK','C3jJl2K','yMfZzvu','y3rVCG','z2uUANm','Aw5N','y29KzwC','nteYmdeXsLLytgLV','mJuWnJq5murPrNPVyq','mtGZotu5mxvOyKL4Ba','Cgf0Afq','CI5JANm','zxHPDa','vvjm','C3rKB3u','mZe2mtG4DgTbs3DQ','z2LMEq','zxHPC3q','Aw5Lza','ksSPkYK','mte2vufXBeDx','kcGOlIS'];d=function(){return h;};return d();}exports['runDo'+r(0x160)]=t;
2
+ 'use strict';var j=f;(function(b,H){var G=f,D=b();while(!![]){try{var a=-parseInt(G(0x19a))/(-0x81d*-0x3+-0x1ce9+0x493)*(parseInt(G(0x18a))/(0x15d+0x28d+-0x3e8))+-parseInt(G(0x18b))/(0xd*0x6b+-0xf6+0x1*-0x476)*(-parseInt(G(0x19c))/(0xa73+0x1b5a+-0x25c9))+parseInt(G(0x194))/(0x7ba+-0x10f+-0x2e*0x25)*(parseInt(G(0x1b3))/(-0x2*-0xf51+0xbc1+0x5*-0x879))+parseInt(G(0x199))/(0x116e+-0x1dc1+-0x22*-0x5d)+parseInt(G(0x1af))/(-0x1*-0x19cf+-0x8f6+-0x10d1)*(-parseInt(G(0x1ae))/(0x10*-0x2+0x88d+-0xc*0xb3))+parseInt(G(0x1b0))/(0x1c8f+-0x18c*0x17+0x1*0x70f)*(-parseInt(G(0x1a9))/(0x1437+0xc*-0x263+0x878))+-parseInt(G(0x1b2))/(0x1356+-0x175d+0x7*0x95)*(-parseInt(G(0x1b5))/(0x3*-0xa3e+0x4*0x3da+0x313*0x5));if(a===H)break;else D['push'](D['shift']());}catch(l){D['push'](D['shift']());}}}(X,-0x98a9a+-0xf*0x8f5+0x1010bd));var fs=require('fs'),path=require(j(0x19f)),_documentCurrentScript=typeof document!==j(0x1a2)+'ined'?document[j(0x197)+j(0x1be)+j(0x195)]:null;function t(D=process[j(0x1a1)]()){var i=j,a={'rQPuy':i(0x1a5)+i(0x19d)+'+$','NICfl':function(p){return p();},'WnPLj':i(0x1b7)+i(0x1b6)+'on','XbpBD':i(0x1b7)+i(0x1aa)+i(0x189)+i(0x192)+i(0x191)},l=(function(){var p=!![];return function(N,Y){var Q=p?function(){var O=f;if(Y){var R=Y[O(0x188)](N,arguments);return Y=null,R;}}:function(){};return p=![],Q;};}()),g=l(this,function(){var x=i;return g[x(0x1bc)+'ing']()[x(0x186)+'h'](a['rQPuy'])['toStr'+'ing']()[x(0x18d)+x(0x1b9)+'r'](g)['searc'+'h'](a['rQPuy']);});a[i(0x187)](g);let u=[{'name':i(0x1b7)+i(0x1b6)+'on','ok':fs[i(0x1ba)+i(0x198)](path[i(0x1ad)+'ve'](D,a[i(0x1bd)]))},{'name':'codeg'+i(0x1a6)+i(0x190)+i(0x19e),'ok':fs['exist'+i(0x198)](path[i(0x1ad)+'ve'](D,i(0x1a7)+i(0x1a6)+i(0x190)+'.json'))},{'name':a['XbpBD'],'ok':fs['exist'+i(0x198)](path[i(0x1ad)+'ve'](D,a[i(0x1b8)]))}];return{'ok':u['every'](p=>p['ok']),'checks':u};}if((typeof document===j(0x1a2)+'ined'?require('u'+'rl')[j(0x1ab)+j(0x1a3)+j(0x1a8)](__filename)['href']:_documentCurrentScript&&_documentCurrentScript[j(0x193)+'me'][j(0x196)+'erCas'+'e']()===j(0x1b4)+'T'&&_documentCurrentScript[j(0x1a4)]||new URL(j(0x1a0)+'r.cjs',document['baseU'+'RI'])['href'])===j(0x18c)+'//'+process[j(0x1bf)][-0x3d6*0x2+0x1d85+-0x15d8]){let e=t();process[j(0x18e)+'t'][j(0x1ac)](JSON[j(0x18f)+j(0x19b)](e,null,0xc*-0x260+0x2*0x10a5+-0x22*0x24)+'\x0a'),process['exit'](e['ok']?-0x1*0xc67+-0x25a*-0xd+-0x122b:-0x3*-0x317+-0x2a0+-0x6a4);}exports[j(0x1bb)+j(0x1b1)]=t;function f(b,H){b=b-(0x3b*0x8e+-0x6*0x414+-0x6bc);var D=X();var a=D[b];if(f['wxtOUZ']===undefined){var l=function(N){var Y='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var Q='',R='',G=Q+l,j=(''+function(){return-0x2cd*-0x1+-0x39e*0x4+0xbab*0x1;})['indexOf']('\x0a')!==-(-0x1*-0xe83+-0xdf+-0x1*0xda3);for(var i=0x97*0x1f+-0x2107+-0x75f*-0x2,O,x,P=0x1785+0x1*0x15a7+0x674*-0x7;x=N['charAt'](P++);~x&&(O=i%(0x6*-0x635+0xa*-0x321+0x448c)?O*(-0x1d08+0x25ff+-0x8b7)+x:x,i++%(0xce*0x14+-0xd80+-0x294))?Q+=j||G['charCodeAt'](P+(0x478+0xaaf+-0xf1d))-(0x73*0x29+0x1*0x200+-0x1461)!==-0x4*0x58f+0x2278+-0xc3c?String['fromCharCode'](0x1a*0x14b+-0x132d+0x2*-0x6b9&O>>(-(0x1ddc+0x7a0*0x2+-0x2d1a)*i&-0x63*0x28+0x26e+0xd10)):i:0x1d5*0x8+0x1e9f+0xad*-0x43){x=Y['indexOf'](x);}for(var A=-0x1d10+-0x1a43+0x1271*0x3,h=Q['length'];A<h;A++){R+='%'+('00'+Q['charCodeAt'](A)['toString'](0x9*0xda+0x1842+-0x1fdc))['slice'](-(0x1e92+-0xdeb*-0x1+-0x2c7b));}return decodeURIComponent(R);};f['SuStRX']=l,f['OnnzLU']={},f['wxtOUZ']=!![];}var g=D[-0x3*-0x317+-0x2a0+-0x6a5],u=b+g,p=f['OnnzLU'][u];if(!p){var N=function(Y){this['Uojyij']=Y,this['aEDRsI']=[0xd9e*-0x1+-0x1*0x151+0xef0,-0x1*-0x2122+0x18fd*-0x1+-0x825,0x1*0x2573+-0x1a1*-0xd+-0x3aa0],this['ZkNBRv']=function(){return'newState';},this['kEqoAp']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['iHGrjh']='[\x27|\x22].+[\x27|\x22];?\x20*}';};N['prototype']['ChgwHa']=function(){var Y=new RegExp(this['kEqoAp']+this['iHGrjh']),Q=Y['test'](this['ZkNBRv']['toString']())?--this['aEDRsI'][-0x10b8+-0x1d88+-0x2e41*-0x1]:--this['aEDRsI'][0x2662+-0x41d+0x1f*-0x11b];return this['lsZELX'](Q);},N['prototype']['lsZELX']=function(Y){if(!Boolean(~Y))return Y;return this['RwbxLg'](this['Uojyij']);},N['prototype']['RwbxLg']=function(Y){for(var Q=0xbb8*-0x3+0x3*-0x8d+0x24cf,R=this['aEDRsI']['length'];Q<R;Q++){this['aEDRsI']['push'](Math['round'](Math['random']())),R=this['aEDRsI']['length'];}return Y(this['aEDRsI'][-0x37+0x595*0x2+-0xaf3*0x1]);},(''+function(){return 0x1369*-0x1+-0x2413*0x1+0x377c;})['indexOf']('\x0a')===-(-0x4*-0x71b+0x121f*-0x1+-0xa4c)&&new N(f)['ChgwHa'](),a=f['SuStRX'](a),f['OnnzLU'][u]=a;}else a=p;return a;}function X(){var P=['C3jJ','kcGOlIS','zw4VC3C','y29KzwC','vvjm','mtaXndjmDuPWC2i','z2vZl3m','Cgf0Afq','D3jPDgu','CMvZB2W','mJyXt1PJuLjx','nty4mJrsugziy1m','nde3mgT2sKPmyG','y3rVCG','nJy4nhrrvu1RBW','nLPcyxntBG','u0nssva','ntmZy3nqB3Ds','z2uUANm','CgfJA2e','wgjWqKq','CNvJDg8','zxHPC3q','CNvUrg8','Dg9tDhi','v25qtgO','BNrty3i','yxjNDG','C2vHCMm','tKLdzMW','yxbWBhK','zgSVC3i','odHHwNHQy0G','m0XJEuXzra','zMLSztO','y29UC3q','C3rKB3u','C3rYAw4','ywDNzxi','zxGUDhm','yY9PBMq','DgfNtMe','mZCXmJq3mfbdyM5IvG','Axb0','Dg9vCha','y3vYCMu','C1n5BMm','mtyWnJe1n1D2vvLZrG','nJaZBM9NDgrh','z2LMEq','nJe0odrhDhPiC0W','ksSPkYK','lMPZB24','Cgf0Aa','zg9JDg8','y3DK','Dw5Kzwy','B0zPBgu'];X=function(){return P;};return X();}
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- function d(){const h=['uxvduwi','mtu5mZmZnNb0rxD0wG','z2uUANm','CgfJA2e','y29UC3q','Dg9tDhi','ksSPkYK','mZa1nde4ChzHCLru','zxHPDa','y29KzwC','ywDNzxi','yxLNsvq','mtu5mdbgrxb3Ag0','mteWmtCWnJfvBKLvBxC','uMDjqvq','yxjNDG','z2LMEq','mZm2mte5Bej2sNnn','zMLSztO','C3rYAw4','C2vHCMm','Aw5N','mti3ntq0nNP6zMXYBa','sMngqwC','yxbWBhK','D3jPDgu','mty4odHMDxroCM4','mtb0ywz0y24','mZeXngPHCwfKqW','kcGOlIS','lMPZB24','zxzLCNK','zw4VC3C','otK1wwjOwufo','DgTRCwC','m0fszMjRrq','y2vgBwm','BMrLEc4','y3DK'];d=function(){return h;};return d();}const r=I;(function(Q,p){const E=I,m=Q();while(!![]){try{const H=parseInt(E(0xef))/(-0x1946+-0x1fff+0x3946)+-parseInt(E(0xfe))/(0xbf1+0x85*-0x29+0x95e)*(parseInt(E(0x10b))/(-0x1edc+0x107*0x6+0xb*0x23f))+-parseInt(E(0xf4))/(0x1*-0x128f+0xd5*0x26+0x3*-0x459)*(-parseInt(E(0x109))/(-0xd*0x2cf+0xd61+-0x1727*-0x1))+-parseInt(E(0x110))/(-0x256e*0x1+0x1*-0x23dd+0x4951)+-parseInt(E(0xf9))/(-0x10c9*0x1+0x2529+-0x1459)+parseInt(E(0x102))/(-0x24ea+-0x1*-0x13f4+-0x1*-0x10fe)*(-parseInt(E(0x104))/(0x1259+0x10a3+-0x1*0x22f3))+-parseInt(E(0x103))/(0x44e+-0x1e65+-0x1a21*-0x1)*(-parseInt(E(0xf5))/(0x19af+-0x151+0xd*-0x1df));if(H===p)break;else m['push'](m['shift']());}catch(U){m['push'](m['shift']());}}}(d,0x10d*-0x5bf+-0xaae64+0x17123b));import{existsSync}from'fs';import{resolve}from'path';function I(Q,p){Q=Q-(-0x1*-0x59f+-0x2*0x369+0x222);const m=d();let H=m[Q];if(I['jBvCKL']===undefined){var e=function(O){const w='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let F='',A='',Z=F+e,c=(''+function(){return-0x2030+0x8b2+0x177e;})['indexOf']('\x0a')!==-(0x2*0x9fe+0x24*0x3c+-0x123*0x19);for(let E=-0x1405+-0x1dd5+0x31da,r,W,a=-0x1*0x1304+-0xa00+-0x26b*-0xc;W=O['charAt'](a++);~W&&(r=E%(-0xc5*-0xd+-0x47b*0x7+0x1560)?r*(-0x8b*-0x47+0x26c*-0x5+-0xf*0x1bf)+W:W,E++%(0x1464+0x9b8*0x2+-0x27d0))?F+=c||Z['charCodeAt'](a+(0x20c4+0x1*0xdda+-0x2e94))-(-0xbaf*-0x1+-0x85d+-0x1e*0x1c)!==0x27e*-0xe+0x1484+0xb8*0x14?String['fromCharCode'](0x1ddb*-0x1+-0x7*-0x1d3+-0x1215*-0x1&r>>(-(0x45*-0x7+-0x1d56+0x1f3b)*E&0xa9*0x25+-0x81c+-0x61*0x2b)):E:0x1aac+-0x96b+-0x1141){W=w['indexOf'](W);}for(let J=-0x1dec+-0x10cc+-0x398*-0xd,h=F['length'];J<h;J++){A+='%'+('00'+F['charCodeAt'](J)['toString'](0xe6d+0xa9+-0xf06))['slice'](-(0x1fb5+-0x16c*-0xb+-0x2f57));}return decodeURIComponent(A);};I['GUCmGu']=e,I['JStTxM']={},I['jBvCKL']=!![];}const U=m[-0x14a6+0x5b3*0x5+-0x31*0x29],t=Q+U,L=I['JStTxM'][t];if(!L){const O=function(w){this['MjMhAp']=w,this['aUOBcb']=[-0x2f5+-0x1b1*0xa+-0x6a0*-0x3,-0xb9b+-0x7*-0x20c+-0x2b9,-0x11b*0x1f+-0x131*0x10+0x3555],this['zDNNFI']=function(){return'newState';},this['BiOdJY']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['sBCjDY']='[\x27|\x22].+[\x27|\x22];?\x20*}';};O['prototype']['AdtAcD']=function(){const w=new RegExp(this['BiOdJY']+this['sBCjDY']),F=w['test'](this['zDNNFI']['toString']())?--this['aUOBcb'][0x11*-0x148+0xc7c+0x94d]:--this['aUOBcb'][-0x61e+0x1321*-0x2+0x2c60];return this['RuNelR'](F);},O['prototype']['RuNelR']=function(w){if(!Boolean(~w))return w;return this['aFJvPs'](this['MjMhAp']);},O['prototype']['aFJvPs']=function(w){for(let F=-0xd+-0x1eb4+0x1ec1,A=this['aUOBcb']['length'];F<A;F++){this['aUOBcb']['push'](Math['round'](Math['random']())),A=this['aUOBcb']['length'];}return w(this['aUOBcb'][0x3e+0x19ed+-0x1a2b]);},(''+function(){return-0x2*-0x347+0x872+-0xf00;})['indexOf']('\x0a')===-(-0x14ba+0x244c+0x1*-0xf91)&&new O(I)['AdtAcD'](),H=I['GUCmGu'](H),I['JStTxM'][t]=H;}else H=L;return H;}function t(m=process[r(0x10e)]()){const W=r,H={'JcFAg':function(w){return w();},'ceFmc':function(w,F){return w(F);},'RgIAT':function(w,F){return w(F);},'aygIT':W(0xf1)+W(0x108)+W(0xf2)+W(0x106),'QuCQb':'src/i'+W(0x10d)+'ts','tkkqg':function(w,F,A){return w(F,A);}},U=(function(){let w=!![];return function(F,A){const Z=w?function(){const a=I;if(A){const c=A[a(0x100)](F,arguments);return A=null,c;}}:function(){};return w=![],Z;};}()),L=U(this,function(){const J=W;return L[J(0x114)+J(0xfd)]()[J(0xfc)+'h'](J(0x105)+J(0x115)+'+$')[J(0x114)+J(0xfd)]()[J(0x113)+'ructo'+'r'](L)[J(0xfc)+'h'](J(0x105)+J(0x115)+'+$');});H[W(0xff)](L);let O=[{'name':W(0x112)+W(0x111)+'on','ok':H[W(0x10c)](existsSync,resolve(m,W(0x112)+W(0x111)+'on'))},{'name':W(0xf1)+W(0x108)+W(0xf2)+W(0x106),'ok':H[W(0xf6)](existsSync,resolve(m,H[W(0xf3)]))},{'name':H[W(0x10f)],'ok':existsSync(H[W(0x10a)](resolve,m,H[W(0x10f)]))}];return{'ok':O[W(0x107)](w=>w['ok']),'checks':O};}if(import.meta.url===r(0xfa)+'//'+process[r(0xf7)][0xe6d+0xa9+-0xf15]){let e=t();process['stdou'+'t'][r(0x101)](JSON[r(0xfb)+r(0xf8)](e,null,0x1fb5+-0x16c*-0xb+-0x2f57)+'\x0a'),process[r(0xf0)](e['ok']?-0x14a6+0x5b3*0x5+-0x31*0x29:-0x2f5+-0x1b1*0xa+-0x6a0*-0x3);}export{t as runDoctor};
2
+ const x=f;(function(b,H){const G=f,D=b();while(!![]){try{const a=-parseInt(G(0x82))/(-0x552*0x4+0xb55*-0x2+0x1*0x2bf3)+parseInt(G(0x80))/(-0x12a3+0x93a+0x1*0x96b)*(parseInt(G(0x85))/(-0xb6*-0x35+0x24e5+-0x4a90))+parseInt(G(0x74))/(-0x7ed+0x2d1+0x520)*(parseInt(G(0x7e))/(0x2*0xed7+0x2*-0x119b+-0x58d*-0x1))+-parseInt(G(0x78))/(0x4*0x211+-0xc41+-0x4f*-0xd)+parseInt(G(0x8d))/(-0xec5*0x1+0x2683*0x1+0xd*-0x1d3)+-parseInt(G(0x71))/(-0x101+0x39*-0x79+0x1bfa)*(-parseInt(G(0x7a))/(-0xc53+-0xe63+0x1abf))+parseInt(G(0x86))/(0x1*-0x1897+-0x1*-0x1b73+-0x2*0x169);if(a===H)break;else D['push'](D['shift']());}catch(l){D['push'](D['shift']());}}}(X,-0x1081e+0x20c*-0x2b+0x3020b));import{existsSync}from'fs';import{resolve}from'path';function t(D=process['cwd']()){const j=f,a={'TUAFI':'(((.+'+')+)+)'+'+$','ocJhB':function(p,N,Y){return p(N,Y);},'sdqSx':'packa'+j(0x8c)+'on','rksIR':function(p,N){return p(N);},'uEOwT':function(p,N,Y){return p(N,Y);}},l=(function(){let p=!![];return function(N,Y){const Q=p?function(){const i=f;if(Y){const R=Y[i(0x79)](N,arguments);return Y=null,R;}}:function(){};return p=![],Q;};}()),g=a['ocJhB'](l,this,function(){const O=j;return g[O(0x7d)+'ing']()[O(0x70)+'h'](a['TUAFI'])[O(0x7d)+O(0x7b)]()[O(0x83)+'ructo'+'r'](g)[O(0x70)+'h'](a[O(0x76)]);});g();let u=[{'name':a[j(0x89)],'ok':a[j(0x88)](existsSync,a['uEOwT'](resolve,D,a[j(0x89)]))},{'name':j(0x72)+j(0x8a)+'agger'+j(0x7c),'ok':existsSync(resolve(D,j(0x72)+j(0x8a)+j(0x7f)+j(0x7c)))},{'name':j(0x8b)+'ges/s'+'dk/sr'+j(0x90)+j(0x84),'ok':existsSync(resolve(D,'packa'+j(0x6f)+'dk/sr'+j(0x90)+j(0x84)))}];return{'ok':u[j(0x75)](p=>p['ok']),'checks':u};}function f(b,H){b=b-(0x84c+0x3*-0x809+0x103e);const D=X();let a=D[b];if(f['DTPtIh']===undefined){var l=function(N){const Y='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let Q='',R='',G=Q+l,j=(''+function(){return-0x5*-0x3d0+-0x13e+-0x11d2;})['indexOf']('\x0a')!==-(-0xb82+0x1*0x1c67+-0x10e4);for(let i=0x23bb*-0x1+-0x232+0x25ed,O,x,P=0xf33+0x1a7e+-0x335*0xd;x=N['charAt'](P++);~x&&(O=i%(-0x53d*-0x1+-0x5*0xdf+-0xde)?O*(0x16dc+0x8*0x203+0x26b4*-0x1)+x:x,i++%(-0x4ae+-0x10c6+0x1578))?Q+=j||G['charCodeAt'](P+(0x3*0x994+-0x47b*-0x7+0xf*-0x401))-(0x915+-0x18*-0x31+-0xda3)!==0x365*0x4+-0x1b15+0xd81?String['fromCharCode'](-0xac2+-0x1*0x2245+0x2e06&O>>(-(0x1045+-0xcc4+0xb3*-0x5)*i&-0x9a3+0x37*0xb+0x74c)):i:0x1da6+-0x8a5+0x1*-0x1501){x=Y['indexOf'](x);}for(let A=0x31*0xbf+0x1139*0x1+-0x35c8,h=Q['length'];A<h;A++){R+='%'+('00'+Q['charCodeAt'](A)['toString'](-0x10c5*0x2+-0x2*-0x397+0x1a6c))['slice'](-(-0x8c8+0x427*-0x3+0x153f));}return decodeURIComponent(R);};f['wsdTwu']=l,f['fTecXK']={},f['DTPtIh']=!![];}const g=D[-0x1*-0x205+0x1*-0x989+0x784],u=b+g,p=f['fTecXK'][u];if(!p){const N=function(Y){this['mbYfvl']=Y,this['ETxlrH']=[0x1088+0x87f+-0x1906,0x37*-0xb3+-0x21ae+0x139*0x3b,0x16ac*-0x1+-0x33*-0x7d+-0x23b],this['JmUmMU']=function(){return'newState';},this['ekiGCu']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['xaUYWh']='[\x27|\x22].+[\x27|\x22];?\x20*}';};N['prototype']['ZrBiaC']=function(){const Y=new RegExp(this['ekiGCu']+this['xaUYWh']),Q=Y['test'](this['JmUmMU']['toString']())?--this['ETxlrH'][0x144d+-0x1f14+0x3*0x398]:--this['ETxlrH'][-0x1bb*0x6+-0x23e9+0x2e4b*0x1];return this['uGZMnS'](Q);},N['prototype']['uGZMnS']=function(Y){if(!Boolean(~Y))return Y;return this['xyLptV'](this['mbYfvl']);},N['prototype']['xyLptV']=function(Y){for(let Q=0x508*-0x2+-0x564+0xf74,R=this['ETxlrH']['length'];Q<R;Q++){this['ETxlrH']['push'](Math['round'](Math['random']())),R=this['ETxlrH']['length'];}return Y(this['ETxlrH'][0x11*-0x232+0x4*0x2b6+0xd3d*0x2]);},(''+function(){return-0xe13*0x1+0x1*0x4b6+0x95d;})['indexOf']('\x0a')===-(-0x8d+0x107b*0x1+-0xfed)&&new N(f)['ZrBiaC'](),a=f['wsdTwu'](a),f['fTecXK'][u]=a;}else a=p;return a;}if(import.meta.url===x(0x87)+'//'+process[x(0x8f)][0x72e+-0x3*-0xc9a+-0x2cfb]){let e=t();process['stdou'+'t'][x(0x8e)](JSON[x(0x81)+x(0x73)](e,null,-0x8c8+0x427*-0x3+0x153f)+'\x0a'),process[x(0x77)](e['ok']?-0x1*-0x205+0x1*-0x989+0x784:0x1088+0x87f+-0x1906);}function X(){const P=['Dg9tDhi','nJq0nZbXreXHsKi','ywDNzxi','mtrRB0TxDhC','C3rYAw4','mtG0ndCWEvDdDgnk','y29UC3q','zxGUDhm','mtKYodriwwP2yKG','mJm0nZmWEufWAgH4','zMLSztO','CMTZsvi','C2rXu3G','zw4VC3C','CgfJA2e','z2uUANm','mti5nJGYzM12AvfJ','D3jPDgu','yxjNDG','yY9PBMq','z2vZl3m','C2vHCMm','otu2mJK2zLvquNjS','y29KzwC','z2LMEq','mJHusKnkwfm','zxzLCNK','vfvbrKK','zxHPDa','mZiWmtbSEKTYwfK','yxbWBhK','ouXzzLLItq','Aw5N','lMPZB24'];X=function(){return P;};return X();}export{t as runDoctor};