dsh-zen-remote 2.2.9 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +2 -2
  2. package/README.zh-CN.md +2 -2
  3. package/docs/interface.md +1 -1
  4. package/docs/remote-access.md +20 -0
  5. package/lan-gate.mjs +11 -1
  6. package/lib/adapters/dsh-better-sidebar/index.js +6 -2
  7. package/lib/adapters/dsh-better-sidebar/index.js.map +1 -1
  8. package/lib/adapters/dsh-better-sidebar/methods.js +3 -0
  9. package/lib/adapters/dsh-better-sidebar/methods.js.map +1 -1
  10. package/lib/admin-routes.js +33 -2
  11. package/lib/admin-routes.js.map +1 -1
  12. package/lib/client.js +3293 -6
  13. package/lib/config.js +70 -0
  14. package/lib/config.js.map +1 -1
  15. package/lib/index.js +232 -2
  16. package/lib/index.js.map +1 -1
  17. package/lib/intercept.js +43 -3
  18. package/lib/intercept.js.map +1 -1
  19. package/lib/lan-gate-server.cjs +58 -3
  20. package/lib/merge-streams.js +42 -12
  21. package/lib/merge-streams.js.map +1 -1
  22. package/lib/types/adapters/dsh-better-sidebar/index.d.ts +1 -1
  23. package/lib/types/adapters/dsh-better-sidebar/index.d.ts.map +1 -1
  24. package/lib/types/adapters/dsh-better-sidebar/methods.d.ts.map +1 -1
  25. package/lib/types/admin-routes.d.ts +13 -0
  26. package/lib/types/admin-routes.d.ts.map +1 -1
  27. package/lib/types/client/index.d.ts.map +1 -1
  28. package/lib/types/client/locales.d.ts +204 -1
  29. package/lib/types/client/locales.d.ts.map +1 -1
  30. package/lib/types/client/wizard/GatewayWizard.d.ts +29 -0
  31. package/lib/types/client/wizard/GatewayWizard.d.ts.map +1 -0
  32. package/lib/types/client/wizard/WizardCard.d.ts +30 -0
  33. package/lib/types/client/wizard/WizardCard.d.ts.map +1 -0
  34. package/lib/types/client/wizard/cards/MigrateCard.d.ts +15 -0
  35. package/lib/types/client/wizard/cards/MigrateCard.d.ts.map +1 -0
  36. package/lib/types/client/wizard/cards/PortForwardCard.d.ts +15 -0
  37. package/lib/types/client/wizard/cards/PortForwardCard.d.ts.map +1 -0
  38. package/lib/types/client/wizard/cards/ProxyCard.d.ts +19 -0
  39. package/lib/types/client/wizard/cards/ProxyCard.d.ts.map +1 -0
  40. package/lib/types/client/wizard/cards/TokenCard.d.ts +20 -0
  41. package/lib/types/client/wizard/cards/TokenCard.d.ts.map +1 -0
  42. package/lib/types/client/wizard/register-wizard.d.ts +51 -0
  43. package/lib/types/client/wizard/register-wizard.d.ts.map +1 -0
  44. package/lib/types/client/wizard/wizard-css.d.ts +10 -0
  45. package/lib/types/client/wizard/wizard-css.d.ts.map +1 -0
  46. package/lib/types/client-data/qr.d.ts +20 -0
  47. package/lib/types/client-data/qr.d.ts.map +1 -0
  48. package/lib/types/client-data/settings-form.d.ts +7 -2
  49. package/lib/types/client-data/settings-form.d.ts.map +1 -1
  50. package/lib/types/client-data/wizard.d.ts +247 -0
  51. package/lib/types/client-data/wizard.d.ts.map +1 -0
  52. package/lib/types/config.d.ts +27 -0
  53. package/lib/types/config.d.ts.map +1 -1
  54. package/lib/types/index.d.ts.map +1 -1
  55. package/lib/types/intercept.d.ts.map +1 -1
  56. package/lib/types/merge-streams.d.ts.map +1 -1
  57. package/lib/types/wizard/binary-io.d.ts +111 -0
  58. package/lib/types/wizard/binary-io.d.ts.map +1 -0
  59. package/lib/types/wizard/binary.d.ts +118 -0
  60. package/lib/types/wizard/binary.d.ts.map +1 -0
  61. package/lib/types/wizard/caddy-process.d.ts +101 -0
  62. package/lib/types/wizard/caddy-process.d.ts.map +1 -0
  63. package/lib/types/wizard/caddy.d.ts +53 -0
  64. package/lib/types/wizard/caddy.d.ts.map +1 -0
  65. package/lib/types/wizard/cloudflare.d.ts +112 -0
  66. package/lib/types/wizard/cloudflare.d.ts.map +1 -0
  67. package/lib/types/wizard/cloudflared.d.ts +71 -0
  68. package/lib/types/wizard/cloudflared.d.ts.map +1 -0
  69. package/lib/types/wizard/probe.d.ts +66 -0
  70. package/lib/types/wizard/probe.d.ts.map +1 -0
  71. package/lib/types/wizard/proxy-snippets.d.ts +60 -0
  72. package/lib/types/wizard/proxy-snippets.d.ts.map +1 -0
  73. package/lib/types/wizard/routes.d.ts +152 -0
  74. package/lib/types/wizard/routes.d.ts.map +1 -0
  75. package/lib/types/wizard/source-detect.d.ts +53 -0
  76. package/lib/types/wizard/source-detect.d.ts.map +1 -0
  77. package/lib/types/wizard/status.d.ts +115 -0
  78. package/lib/types/wizard/status.d.ts.map +1 -0
  79. package/lib/types/wizard/token-store.d.ts +27 -0
  80. package/lib/types/wizard/token-store.d.ts.map +1 -0
  81. package/lib/types/wizard/tunnel-orchestrator.d.ts +90 -0
  82. package/lib/types/wizard/tunnel-orchestrator.d.ts.map +1 -0
  83. package/lib/types/wizard/verify.d.ts +97 -0
  84. package/lib/types/wizard/verify.d.ts.map +1 -0
  85. package/lib/wizard/binary-io.js +386 -0
  86. package/lib/wizard/binary-io.js.map +1 -0
  87. package/lib/wizard/binary.js +138 -0
  88. package/lib/wizard/binary.js.map +1 -0
  89. package/lib/wizard/caddy-process.js +162 -0
  90. package/lib/wizard/caddy-process.js.map +1 -0
  91. package/lib/wizard/caddy.js +80 -0
  92. package/lib/wizard/caddy.js.map +1 -0
  93. package/lib/wizard/cloudflare.js +334 -0
  94. package/lib/wizard/cloudflare.js.map +1 -0
  95. package/lib/wizard/cloudflared.js +158 -0
  96. package/lib/wizard/cloudflared.js.map +1 -0
  97. package/lib/wizard/probe.js +118 -0
  98. package/lib/wizard/probe.js.map +1 -0
  99. package/lib/wizard/proxy-snippets.js +112 -0
  100. package/lib/wizard/proxy-snippets.js.map +1 -0
  101. package/lib/wizard/routes.js +462 -0
  102. package/lib/wizard/routes.js.map +1 -0
  103. package/lib/wizard/source-detect.js +77 -0
  104. package/lib/wizard/source-detect.js.map +1 -0
  105. package/lib/wizard/status.js +94 -0
  106. package/lib/wizard/status.js.map +1 -0
  107. package/lib/wizard/token-store.js +71 -0
  108. package/lib/wizard/token-store.js.map +1 -0
  109. package/lib/wizard/tunnel-orchestrator.js +155 -0
  110. package/lib/wizard/tunnel-orchestrator.js.map +1 -0
  111. package/lib/wizard/verify.js +171 -0
  112. package/lib/wizard/verify.js.map +1 -0
  113. package/package.json +37 -37
  114. package/scripts/check-settings-form.mjs +5 -4
  115. package/scripts/check-wizard-ui.mjs +690 -0
  116. package/src/adapters/dsh-better-sidebar/index.ts +6 -2
  117. package/src/adapters/dsh-better-sidebar/methods.ts +3 -0
  118. package/src/admin-routes.ts +44 -2
  119. package/src/client/index.tsx +9 -0
  120. package/src/client/locales.ts +410 -2
  121. package/src/client/wizard/GatewayWizard.tsx +2224 -0
  122. package/src/client/wizard/WizardCard.tsx +81 -0
  123. package/src/client/wizard/cards/MigrateCard.tsx +42 -0
  124. package/src/client/wizard/cards/PortForwardCard.tsx +37 -0
  125. package/src/client/wizard/cards/ProxyCard.tsx +56 -0
  126. package/src/client/wizard/cards/TokenCard.tsx +81 -0
  127. package/src/client/wizard/register-wizard.ts +99 -0
  128. package/src/client/wizard/wizard-css.ts +948 -0
  129. package/src/client-data/qr.ts +284 -0
  130. package/src/client-data/settings-form.ts +12 -3
  131. package/src/client-data/wizard.ts +432 -0
  132. package/src/config.ts +87 -0
  133. package/src/index.ts +227 -2
  134. package/src/intercept.ts +43 -3
  135. package/src/merge-streams.ts +41 -12
  136. package/src/wizard/binary-io.ts +449 -0
  137. package/src/wizard/binary.ts +177 -0
  138. package/src/wizard/caddy-process.ts +228 -0
  139. package/src/wizard/caddy.ts +97 -0
  140. package/src/wizard/cloudflare.ts +413 -0
  141. package/src/wizard/cloudflared.ts +196 -0
  142. package/src/wizard/probe.ts +161 -0
  143. package/src/wizard/proxy-snippets.ts +128 -0
  144. package/src/wizard/routes.ts +537 -0
  145. package/src/wizard/source-detect.ts +87 -0
  146. package/src/wizard/status.ts +180 -0
  147. package/src/wizard/token-store.ts +73 -0
  148. package/src/wizard/tunnel-orchestrator.ts +197 -0
  149. package/src/wizard/verify.ts +236 -0
@@ -0,0 +1,15 @@
1
+ /**
2
+ * MigrateCard (GW-11): the six-step domain-to-Cloudflare walkthrough for
3
+ * the tunnel path's precondition, with the 「重新检查」 button that closes
4
+ * the card so the user re-runs the form's own check.
5
+ */
6
+ import type { ReactNode } from 'react';
7
+ import type { WizardT } from './TokenCard.tsx';
8
+ export interface MigrateCardProps {
9
+ t: WizardT;
10
+ /** Closes the card so the caller can re-run its precondition check. */
11
+ onRecheck: () => void;
12
+ onClose: () => void;
13
+ }
14
+ export declare function MigrateCard({ t, onRecheck, onClose }: MigrateCardProps): ReactNode;
15
+ //# sourceMappingURL=MigrateCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MigrateCard.d.ts","sourceRoot":"","sources":["../../../../../src/client/wizard/cards/MigrateCard.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,CAAC,EAAE,OAAO,CAAA;IACV,uEAAuE;IACvE,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAID,wBAAgB,WAAW,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,gBAAgB,GAAG,SAAS,CAsBlF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * PortForwardCard (GW-11): the router port-forwarding steps for path A on
3
+ * a non-443 HTTPS port — the certificate rides DNS-01 (no inbound needed
4
+ * for issuance), but the HTTPS service port itself must be reachable.
5
+ */
6
+ import type { ReactNode } from 'react';
7
+ import type { WizardT } from './TokenCard.tsx';
8
+ export interface PortForwardCardProps {
9
+ t: WizardT;
10
+ /** The HTTPS port to forward. */
11
+ port: number;
12
+ onClose: () => void;
13
+ }
14
+ export declare function PortForwardCard({ t, port, onClose }: PortForwardCardProps): ReactNode;
15
+ //# sourceMappingURL=PortForwardCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortForwardCard.d.ts","sourceRoot":"","sources":["../../../../../src/client/wizard/cards/PortForwardCard.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,MAAM,WAAW,oBAAoB;IACnC,CAAC,EAAE,OAAO,CAAA;IACV,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAID,wBAAgB,eAAe,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,oBAAoB,GAAG,SAAS,CAiBrF"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ProxyCard (GW-11): the reverse-proxy snippets for the user's OWN proxy,
3
+ * tabbed nginx / Caddy / Lucky, with the snippet copy button and the
4
+ * 「我配好了,检查」 button that hands control back to the wizard's
5
+ * verification step.
6
+ */
7
+ import type { ReactNode } from 'react';
8
+ import type { WizardT } from './TokenCard.tsx';
9
+ export interface ProxyCardProps {
10
+ t: WizardT;
11
+ /** Snippet inputs — the domain as typed, the gateway's ACTUAL port. */
12
+ domain: string;
13
+ upstreamPort: number;
14
+ /** 「我配好了,检查」: closes the card and starts the verification. */
15
+ onCheck: () => void;
16
+ onClose: () => void;
17
+ }
18
+ export declare function ProxyCard({ t, domain, upstreamPort, onCheck, onClose }: ProxyCardProps): ReactNode;
19
+ //# sourceMappingURL=ProxyCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProxyCard.d.ts","sourceRoot":"","sources":["../../../../../src/client/wizard/cards/ProxyCard.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,OAAO,CAAA;IACV,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,wBAAgB,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,SAAS,CAgClG"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * TokenCard (GW-11): the Cloudflare API-token creation walkthrough — eight
3
+ * numbered steps, the permission checklist as a small table, and a
4
+ * paste-in box that hands the token back to the wizard's form (`onUse`).
5
+ * The token never persists in component state beyond the box and never
6
+ * leaves this machine except inside the wizard's own POST.
7
+ */
8
+ import type { ReactNode } from 'react';
9
+ import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
10
+ import { NS } from '../../locales.ts';
11
+ /** The wizard's translate function, straight from the shared locale contract. */
12
+ export type WizardT = PropsLocale<typeof NS>['t'];
13
+ export interface TokenCardProps {
14
+ t: WizardT;
15
+ /** Hands the pasted token back to the wizard's form field. */
16
+ onUse: (token: string) => void;
17
+ onClose: () => void;
18
+ }
19
+ export declare function TokenCard({ t, onUse, onClose }: TokenCardProps): ReactNode;
20
+ //# sourceMappingURL=TokenCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenCard.d.ts","sourceRoot":"","sources":["../../../../../src/client/wizard/cards/TokenCard.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAGrC,iFAAiF;AACjF,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;AAEjD,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,OAAO,CAAA;IACV,8DAA8D;IAC9D,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAID,wBAAgB,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,SAAS,CAsD1E"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Wizard registration for the plugin DETAIL page — the piece that must
3
+ * run BEFORE apply's desktop-shell gate (same discipline as
4
+ * register-settings.ts, and for the same reason: the desktop app IS the
5
+ * main server, and the wizard is exactly where it is most useful).
6
+ *
7
+ * Registered on `plugins.bundle.config` (keyed by `'dsh-zen-remote'`), which
8
+ * `PackageDetail` renders as the FIRST section at the top of the bundle
9
+ * detail page (above `RowsSection`「插件组件」and `SourceSection`「来源」),
10
+ * and which `RowDetail` (the component detail page) never renders.
11
+ *
12
+ * `configForms` never joins the top-level inject: a composition without
13
+ * the settings service keeps the whole browser half loadable, and the lazy
14
+ * `ctx.inject(['configForms'], …)` below simply never fires there — a
15
+ * composition that cannot stage row edits has no use for a wizard that
16
+ * writes rows.
17
+ */
18
+ import type { ClientContext } from '../compat/types.ts';
19
+ import type { GatewayWizard } from './GatewayWizard.tsx';
20
+ declare module '@deepseek-ai/dsh-client-ui-slots' {
21
+ interface SlotMap {
22
+ /**
23
+ * One bundle's top configuration block on the plugin DETAIL page — a
24
+ * keyed seat (`key = pkg.name`) rendered at the top of `PackageDetail`
25
+ * above the component rows and source sections, and absent from
26
+ * `RowDetail` (structural mirror of the plugin-manager's declaration).
27
+ */
28
+ 'plugins.bundle.config': {
29
+ kind: 'keyed';
30
+ scope: 'root';
31
+ owner: {
32
+ readonly view: 'page';
33
+ };
34
+ };
35
+ }
36
+ }
37
+ /** `plugins.bundle.config` key: the bundle's package name. */
38
+ export declare const WIZARD_BUNDLE_KEY = "dsh-zen-remote";
39
+ export interface SaveRowFieldsOptions {
40
+ /** Field names to remove (`op: 'unset'`) in the same atomic mutation. */
41
+ unset?: readonly string[];
42
+ }
43
+ /**
44
+ * Register the wizard stylesheet and (lazily, only where the settings
45
+ * service exists) the bundle detail-page top block.
46
+ * @param ctx - client root context.
47
+ * @param section - the block component; a parameter so this module stays
48
+ * JSX-free and importable under Node's type stripping.
49
+ */
50
+ export declare function registerGatewayWizard(ctx: ClientContext, section: typeof GatewayWizard): void;
51
+ //# sourceMappingURL=register-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-wizard.d.ts","sourceRoot":"","sources":["../../../../src/client/wizard/register-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAQvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,OAAO;QACf;;;;;WAKG;QACH,uBAAuB,EAAE;YACvB,IAAI,EAAE,OAAO,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE;gBAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAA;SACjC,CAAA;KACF;CACF;AAED,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,mBAAmB,CAAA;AAEjD,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,aAAa,GAAG,IAAI,CAwC7F"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Wizard-page CSS (GW-10), scoped end to end under the block's own
3
+ * `data-zen-remote` attributes — the desktop no-op rule in its CSS form:
4
+ * nothing here may reach a selector the wizard does not own, so the
5
+ * Plugins detail page at ≥1024px renders byte-identically whether or not
6
+ * the component mounts. Same transcription discipline as settings-css.ts
7
+ * (host design tokens only, no literal colors).
8
+ */
9
+ export declare const WIZARD_CSS = "\n[data-plugin-detail=\"dsh-zen-remote\"] section[data-plugin-config]:empty {\n display: none;\n}\n\n[data-zen-remote=\"wizard\"] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n box-sizing: border-box;\n margin-inline: auto;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 12px;\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-module-platform));\n padding: 18px 20px;\n}\n\n[data-zen-remote=\"wizard\"] .zr-wizard-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n flex-wrap: wrap;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-headerText {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-title {\n font-size: 15px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n margin: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-subtitle {\n font-size: 12.5px;\n color: var(--dsw-alias-label-tertiary);\n margin: 0;\n line-height: 1.45;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-statusBadge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n padding: 4px 10px;\n border-radius: 999px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-statusBadge[data-state=\"pass\"] {\n color: var(--dsw-alias-label-primary);\n}\n\n[data-zen-remote=\"wizard\"] .zr-wizard-notice {\n font-size: 12.5px;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 8px;\n padding: 9px 12px;\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-secondary);\n margin: 0;\n line-height: 1.45;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-notice[data-tone=\"error\"] {\n border-color: var(--dsw-alias-state-error-primary, #d5304f);\n color: var(--dsw-alias-state-error-primary, #d5304f);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-notice[data-tone=\"ok\"] {\n border-color: var(--dsw-alias-state-success-primary, #16a34a);\n color: var(--dsw-alias-state-success-primary, #16a34a);\n}\n\n/* Inline Status Overview Card (2x2 spacious layout, full text visibility) */\n[data-zen-remote=\"wizard\"] .zr-wizard-overviewGrid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 12px;\n}\n@media (max-width: 560px) {\n [data-zen-remote=\"wizard\"] .zr-wizard-overviewGrid {\n grid-template-columns: 1fr;\n }\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-overviewItem {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 13px 15px;\n border-radius: 10px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n min-width: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-overviewHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-overviewLabel {\n font-size: 12px;\n color: var(--dsw-alias-label-tertiary);\n margin: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-overviewValue {\n display: flex;\n align-items: center;\n gap: 7px;\n font-size: 13.5px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n margin: 0;\n line-height: 1.45;\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-overviewSub {\n font-size: 12px;\n color: var(--dsw-alias-label-secondary);\n margin: 0;\n line-height: 1.45;\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-emptyBanner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n flex-wrap: wrap;\n padding: 14px 16px;\n border-radius: 10px;\n border: 1px dashed var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-emptyText {\n font-size: 12.5px;\n color: var(--dsw-alias-label-secondary);\n line-height: 1.5;\n margin: 0;\n flex: 1;\n min-width: 220px;\n}\n\n/* Wizard Modal Dialog (above app chrome, below helper sub-cards) */\n[data-zen-remote=\"wizard-modal\"] {\n position: fixed;\n inset: 0;\n z-index: 950;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(2px);\n}\n[data-zen-remote=\"wizard-modal\"] .zr-wizard-modalDialog {\n width: min(680px, calc(100vw - 32px));\n max-height: min(88vh, 760px);\n display: flex;\n flex-direction: column;\n border-radius: 14px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-primary);\n box-shadow: 0 20px 48px rgba(0, 0, 0, 0.28);\n overflow: hidden;\n}\n[data-zen-remote=\"wizard-modal\"] .zr-wizard-modalHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 16px 22px 14px;\n}\n[data-zen-remote=\"wizard-modal\"] .zr-wizard-modalTitle {\n font-size: 15.5px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n margin: 0;\n}\n[data-zen-remote=\"wizard-modal\"] .zr-wizard-modalBody {\n padding: 18px 22px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n}\n[data-zen-remote=\"wizard-modal\"] .zr-wizard-modalFooter {\n padding: 14px 22px;\n border-top: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-module-platform));\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n/* Non-clickable 3-step visual progress indicator */\n[data-zen-remote=\"wizard\"] .zr-wizard-stepper {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n padding: 13px 22px;\n margin: 0;\n list-style: none;\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n border-top: 1px solid var(--dsw-alias-border-l2);\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n user-select: none;\n pointer-events: none;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepItem {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepCircle {\n width: 26px;\n height: 26px;\n border-radius: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 600;\n border: 1.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-tertiary);\n flex: none;\n transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease, box-shadow 160ms ease;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepItem[data-state=\"current\"] .zr-wizard-stepCircle {\n background: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-layer-2, #fff);\n box-shadow: 0 0 0 3px var(--dsw-alias-border-l2);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepItem[data-state=\"done\"] .zr-wizard-stepCircle {\n background: var(--dsw-alias-state-success-primary, #16a34a);\n border-color: var(--dsw-alias-state-success-primary, #16a34a);\n color: #fff;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepText {\n display: flex;\n flex-direction: column;\n gap: 1px;\n min-width: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepTag {\n font-size: 11px;\n color: var(--dsw-alias-label-tertiary);\n line-height: 1.2;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepItem[data-state=\"current\"] .zr-wizard-stepTag {\n color: var(--dsw-alias-label-secondary);\n font-weight: 500;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepItem[data-state=\"done\"] .zr-wizard-stepTag {\n color: var(--dsw-alias-state-success-primary, #16a34a);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepName {\n font-size: 13px;\n font-weight: 500;\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepItem[data-state=\"current\"] .zr-wizard-stepName {\n color: var(--dsw-alias-label-primary);\n font-weight: 600;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepItem[data-state=\"done\"] .zr-wizard-stepName {\n color: var(--dsw-alias-label-secondary);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepConnector {\n flex: 1;\n height: 2px;\n min-width: 18px;\n border-radius: 2px;\n background: var(--dsw-alias-border-l2);\n transition: background-color 200ms ease;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepConnector[data-done=\"true\"] {\n background: var(--dsw-alias-state-success-primary, #16a34a);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-stepIntro {\n font-size: 12.5px;\n color: var(--dsw-alias-label-secondary);\n margin: 0;\n line-height: 1.45;\n}\n\n[data-zen-remote=\"wizard\"] .zr-wizard-body {\n display: flex;\n flex-direction: column;\n gap: 14px;\n}\n\n/* Step 1: 3-column path cards */\n[data-zen-remote=\"wizard\"] .zr-wizard-paths {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 10px;\n margin: 0;\n padding: 0;\n border: none;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-path {\n display: flex;\n flex-direction: column;\n gap: 6px;\n text-align: left;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 10px;\n padding: 12px 14px;\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n cursor: pointer;\n font: inherit;\n color: inherit;\n transition: border-color 120ms ease, box-shadow 120ms ease;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-path:hover:not(:disabled) {\n border-color: var(--dsw-alias-label-secondary);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-path[data-selected=\"true\"] {\n border-color: var(--dsw-alias-label-primary);\n box-shadow: 0 0 0 1px var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-module-platform));\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-path:disabled {\n cursor: not-allowed;\n opacity: 0.55;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-pathHead {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-pathRadio {\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 1.5px solid var(--dsw-alias-label-tertiary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-pathRadio[data-selected=\"true\"] {\n border-color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-label-primary);\n box-shadow: inset 0 0 0 2.5px var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-module-platform));\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-pathName {\n font-size: 13px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n margin: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-pathDesc {\n font-size: 12px;\n color: var(--dsw-alias-label-tertiary);\n margin: 0;\n line-height: 1.45;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-sectionTitle {\n font-size: 12px;\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n margin: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-roleGrid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 10px;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-checkRow {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n font-size: 12.5px;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n user-select: none;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-checkRow input[type=\"checkbox\"] {\n margin: 0;\n cursor: pointer;\n}\n\n/* Step 2: form controls */\n[data-zen-remote=\"wizard\"] .zr-wizard-selectedBar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-selectedLabel {\n font-size: 12.5px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-formStack {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-formGrid {\n display: grid;\n grid-template-columns: 1fr 120px;\n gap: 12px;\n align-items: start;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-labelRow {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-label {\n font-size: 12.5px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n margin: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-savedTag {\n font-size: 11px;\n padding: 1px 7px;\n border-radius: 999px;\n border: 1px solid var(--dsw-alias-border-l2);\n color: var(--dsw-alias-state-success-primary, #16a34a);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-hint {\n font-size: 12px;\n color: var(--dsw-alias-label-tertiary);\n margin: 0;\n line-height: 1.4;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-input {\n height: 34px;\n font: inherit;\n font-size: 13px;\n padding: 0 10px;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 8px;\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-primary);\n width: 100%;\n box-sizing: border-box;\n}\n[data-zen-remote=\"wizard\"] code.zr-wizard-input {\n display: flex;\n align-items: center;\n min-height: 36px;\n height: auto;\n padding: 6px 12px;\n font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n line-height: 1.4;\n overflow-wrap: anywhere;\n word-break: break-all;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-input:focus {\n outline: none;\n border-color: var(--dsw-alias-label-primary);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-row {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-link {\n background: none;\n border: none;\n padding: 0;\n font: inherit;\n font-size: 12px;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n text-decoration: underline;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-link:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-linkBtn {\n font: inherit;\n font-size: 12px;\n padding: 4px 10px;\n border-radius: 6px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-linkBtn:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-label-secondary);\n}\n\n/* Primary & Secondary action buttons + Footer */\n[data-zen-remote=\"wizard\"] .zr-wizard-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n padding-top: 8px;\n border-top: 1px solid var(--dsw-alias-border-l2);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-footerHint {\n font-size: 12px;\n color: var(--dsw-alias-label-secondary);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-btn,\n[data-zen-remote=\"wizard-card\"] .zr-wizard-btn {\n font: inherit;\n font-size: 12.5px;\n font-weight: 500;\n height: 32px;\n padding: 0 14px;\n border-radius: 8px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-btn:hover:not(:disabled),\n[data-zen-remote=\"wizard-card\"] .zr-wizard-btn:hover:not(:disabled) {\n border-color: var(--dsw-alias-label-secondary);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-btnPrimary,\n[data-zen-remote=\"wizard-card\"] .zr-wizard-btnPrimary {\n background: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-layer-2, #fff);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-btnPrimary:hover:not(:disabled),\n[data-zen-remote=\"wizard-card\"] .zr-wizard-btnPrimary:hover:not(:disabled) {\n opacity: 0.9;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-btn:disabled,\n[data-zen-remote=\"wizard-card\"] .zr-wizard-btn:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Step 3: service control bar, 3-column lights, and QR pairing panel */\n[data-zen-remote=\"wizard\"] .zr-wizard-serviceBar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n flex-wrap: wrap;\n padding: 10px 12px;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 10px;\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-serviceInfo {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-lights {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 8px;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-light {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 9px 12px;\n border-radius: 8px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n font-size: 12.5px;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-lightMain {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-lightName {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-lightState {\n font-size: 11.5px;\n color: var(--dsw-alias-label-tertiary);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-lightState[data-state=\"pass\"] {\n color: var(--dsw-alias-state-success-primary, #16a34a);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-lightState[data-state=\"fail\"] {\n color: var(--dsw-alias-state-error-primary, #d5304f);\n}\n\n[data-zen-remote=\"wizard\"] .zr-wizard-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--dsw-alias-label-tertiary);\n flex: none;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-dot[data-state=\"pass\"] {\n background: var(--dsw-alias-state-success-primary, #16a34a);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-dot[data-state=\"fail\"] {\n background: var(--dsw-alias-state-error-primary, #d5304f);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-dot[data-state=\"pending\"] {\n background: var(--dsw-alias-state-warning-primary, #b8860b);\n}\n\n[data-zen-remote=\"wizard\"] .zr-wizard-pairPanel {\n display: flex;\n align-items: center;\n gap: 18px;\n flex-wrap: wrap;\n padding: 14px;\n border-radius: 10px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-pairMeta {\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex: 1;\n min-width: 180px;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-code {\n font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n font-size: 24px;\n letter-spacing: 4px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n margin: 2px 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-countdown {\n font-size: 12px;\n color: var(--dsw-alias-label-secondary);\n margin: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-qr {\n width: 156px;\n height: 156px;\n image-rendering: pixelated;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 8px;\n background: #fff;\n display: block;\n flex: none;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-qr[data-usable=\"false\"] {\n display: none;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-targetTabs {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 6px;\n padding: 4px;\n border-radius: 9px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-targetTab {\n font: inherit;\n font-size: 12.5px;\n font-weight: 500;\n padding: 7px 12px;\n border-radius: 6px;\n border: 1px solid transparent;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n text-align: center;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-targetTab[data-selected=\"true\"] {\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-module-platform));\n border-color: var(--dsw-alias-border-l2);\n color: var(--dsw-alias-label-primary);\n font-weight: 600;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-desktopBox,\n[data-zen-remote=\"wizard\"] .zr-wizard-clientBox {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 14px;\n border-radius: 10px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-deviceList {\n display: flex;\n flex-direction: column;\n gap: 10px;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-deviceItem {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 12px 14px;\n border-radius: 10px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n font-size: 12.5px;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-deviceHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n flex-wrap: wrap;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-deviceTitleRow {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n min-width: 0;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-deviceBadge {\n font-size: 11px;\n font-weight: 500;\n padding: 2px 8px;\n border-radius: 999px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-secondary);\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-deviceActions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n[data-zen-remote=\"wizard\"] .zr-wizard-select {\n height: 30px;\n font: inherit;\n font-size: 12px;\n padding: 0 8px;\n border-radius: 6px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-primary);\n}\n\n/* The modal card: a body-level overlay, above the app chrome. */\n[data-zen-remote=\"wizard-card\"] {\n position: fixed;\n inset: 0;\n z-index: 1000;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.45);\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardPanel {\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-primary);\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 12px;\n width: min(560px, calc(100vw - 32px));\n max-height: min(82vh, 660px);\n overflow: auto;\n padding: 18px 20px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardTitle {\n font-size: 15px;\n font-weight: 600;\n margin: 0;\n}\n[data-zen-remote=\"wizard-modal\"] .zr-wizard-cardCloseIcon,\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardCloseIcon {\n border: none;\n background: none;\n color: var(--dsw-alias-label-secondary);\n font-size: 18px;\n line-height: 1;\n padding: 2px 6px;\n border-radius: 6px;\n cursor: pointer;\n}\n[data-zen-remote=\"wizard-modal\"] .zr-wizard-cardCloseIcon:hover,\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardCloseIcon:hover {\n color: var(--dsw-alias-label-primary);\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardBody {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardSteps {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardSubhead {\n font-size: 12.5px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n margin: 4px 0 0;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardTable {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 8px;\n overflow: hidden;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardTable td {\n padding: 6px 10px;\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardTable tr:last-child td {\n border-bottom: none;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardPerm {\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardWhy {\n color: var(--dsw-alias-label-tertiary);\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardTabs {\n display: flex;\n gap: 6px;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardTab {\n font: inherit;\n font-size: 12px;\n font-weight: 500;\n padding: 4px 12px;\n border-radius: 999px;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardTab[data-selected=\"true\"] {\n color: var(--dsw-alias-bg-layer-2, #fff);\n background: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-label-primary);\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardStep {\n font-size: 12.5px;\n color: var(--dsw-alias-label-secondary);\n margin: 0;\n line-height: 1.45;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardCode {\n font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n font-size: 12px;\n white-space: pre;\n background: var(--dsw-alias-bg-layer-3, rgba(127, 127, 127, 0.12));\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 8px;\n padding: 10px 12px;\n overflow: auto;\n max-height: 260px;\n margin: 0;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-label {\n font-size: 12.5px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-input {\n height: 34px;\n font: inherit;\n font-size: 13px;\n padding: 0 10px;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: 8px;\n background: var(--dsw-alias-bg-layer-3, var(--dsw-alias-bg-module-platform));\n color: var(--dsw-alias-label-primary);\n width: 100%;\n box-sizing: border-box;\n}\n[data-zen-remote=\"wizard-card\"] .zr-wizard-cardActions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--dsw-alias-border-l2);\n}\n";
10
+ //# sourceMappingURL=wizard-css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard-css.d.ts","sourceRoot":"","sources":["../../../../src/client/wizard/wizard-css.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,UAAU,w42BA06BtB,CAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Minimal QR encoder (GW-10): byte mode, versions 1–5, ECC level L, fixed
3
+ * mask 0 — enough for any sane origin URL (106 bytes at v5) while keeping
4
+ * the whole implementation single-block (no interleave) and reviewable.
5
+ * Returns the module matrix (true = dark) or null when the text does not
6
+ * fit. Pure: the check script verifies it at decoder level (RS syndromes
7
+ * all-zero + data recovery + format-info BCH), which is stronger than any
8
+ * memorized reference vector.
9
+ *
10
+ * Standard QR constants only: sizes 21/25/29/33/37, data codewords
11
+ * 19/34/55/80/108, ECC codewords 7/10/15/20/26, alignment centers
12
+ * [6,18]/[6,22]/[6,26]/[6,30], Galois field 0x11d, format-info generator
13
+ * 0x537 XOR-mask 0x5412.
14
+ */
15
+ /**
16
+ * The QR matrix for `text` (UTF-8, byte mode), or null when it does not fit
17
+ * into a version-5-L symbol (106 bytes).
18
+ */
19
+ export declare function qrMatrix(text: string): boolean[][] | null;
20
+ //# sourceMappingURL=qr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr.d.ts","sourceRoot":"","sources":["../../../src/client-data/qr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAqPH;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,EAAE,GAAG,IAAI,CAqBzD"}
@@ -262,8 +262,13 @@ export interface ClaimRouteBody {
262
262
  message?: string;
263
263
  retryAfterMs?: number;
264
264
  }
265
- /** What the pairing-code box keeps as its draft: uppercase, no spaces or
266
- * hyphens (the gateway strips every other character at claim time anyway). */
265
+ /** The gateway's 32-character unambiguous pairing-code alphabet (no 0/O/1/I/L)
266
+ * and fixed 8-character length (`lib/lan-gate-server.cjs:330-335`). */
267
+ export declare const PAIRING_CODE_ALPHABET = "ABCDEFGHJKMNPQRSTUVWXYZ23456789";
268
+ export declare const PAIRING_CODE_LENGTH = 8;
269
+ /** What the pairing-code box keeps as its draft: uppercase, restricted to the
270
+ * 32-character pairing-code alphabet (excluding 0/O/1/I/L and symbols), and
271
+ * capped at 8 characters. */
267
272
  export declare function normalizePairingCode(input: string): string;
268
273
  /**
269
274
  * Whether the settings page may follow the SERVER's record of this device's
@@ -1 +1 @@
1
- {"version":3,"file":"settings-form.d.ts","sourceRoot":"","sources":["../../../src/client-data/settings-form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-form.d.ts","sourceRoot":"","sources":["../../../src/client-data/settings-form.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Wizard UI pure logic (GW-10): route constants, wire types, the step
3
+ * state machine, form validation and the derived lights — everything the
4
+ * React components need that a test can drive without a DOM. Mirrors of
5
+ * the host half's shapes (src/wizard/routes.ts / verify.ts /
6
+ * proxy-snippets.ts) live HERE because the browser bundle cannot import
7
+ * those modules (they transitively import node builtins through
8
+ * config.ts); the check script cross-checks the snippet templates against
9
+ * the host's so the two cannot drift.
10
+ *
11
+ * Validation mirrors src/config.ts's `hostOf` for the same reason — the
12
+ * row layer applies the same rule when the fields land there, so a client
13
+ * that accepts something the resolver would silently drop would only set
14
+ * the user up for a mystery.
15
+ */
16
+ /** Wizard route constants — mirror of src/wizard/routes.ts. */
17
+ export declare const WIZARD_STATUS_ROUTE = "/_dsh/zen-remote/admin/wizard/status";
18
+ export declare const WIZARD_VERIFY_ROUTE = "/_dsh/zen-remote/admin/wizard/verify";
19
+ export declare const WIZARD_CF_TOKEN_ROUTE = "/_dsh/zen-remote/admin/wizard/cf-token";
20
+ export declare const WIZARD_TUNNEL_TOKEN_ROUTE = "/_dsh/zen-remote/admin/wizard/tunnel-token";
21
+ export declare const WIZARD_CADDY_START_ROUTE = "/_dsh/zen-remote/admin/wizard/caddy/start";
22
+ export declare const WIZARD_CADDY_STOP_ROUTE = "/_dsh/zen-remote/admin/wizard/caddy/stop";
23
+ export declare const WIZARD_CADDY_STATUS_ROUTE = "/_dsh/zen-remote/admin/wizard/caddy/status";
24
+ export declare const WIZARD_TUNNEL_CHECK_ROUTE = "/_dsh/zen-remote/admin/wizard/tunnel/check-domain";
25
+ export declare const WIZARD_TUNNEL_SETUP_ROUTE = "/_dsh/zen-remote/admin/wizard/tunnel/setup";
26
+ export declare const WIZARD_TUNNEL_STOP_ROUTE = "/_dsh/zen-remote/admin/wizard/tunnel/stop";
27
+ export declare const WIZARD_TUNNEL_STATUS_ROUTE = "/_dsh/zen-remote/admin/wizard/tunnel/status";
28
+ /** Wire mirror of src/wizard/routes.ts's CaddyProcessState. */
29
+ export type CaddyState = 'running' | 'stopped' | 'never-started';
30
+ /** Wire mirror of src/wizard/tunnel-orchestrator.ts's results. */
31
+ export interface TunnelExisting {
32
+ id: string;
33
+ name: string;
34
+ status: string;
35
+ }
36
+ export type TunnelSetupWire = {
37
+ ok: true;
38
+ tunnelId: string;
39
+ publicUrl: string;
40
+ } | {
41
+ ok: false;
42
+ reason: string;
43
+ detail?: string;
44
+ existing?: TunnelExisting[];
45
+ };
46
+ export type TunnelCheckWire = {
47
+ ok: true;
48
+ onCloudflare: boolean;
49
+ zoneId: string | null;
50
+ } | {
51
+ ok: false;
52
+ reason: string;
53
+ detail?: string;
54
+ };
55
+ /** The tunnel setup failure's locale key (plus params). Pure. */
56
+ export declare function tunnelFailureCopy(reason: string, detail?: string): {
57
+ key: string;
58
+ params: Record<string, string>;
59
+ };
60
+ /** The domain check's copy (the migration card's re-check). Pure. */
61
+ export declare function tunnelCheckCopy(result: TunnelCheckWire): {
62
+ key: string;
63
+ tone: 'ok' | 'error';
64
+ };
65
+ /** Wire mirror of src/wizard/status.ts's WizardStatus. */
66
+ export interface WizardStatusBody {
67
+ ok: true;
68
+ mode: 'off' | 'caddy' | 'external' | 'cloudflared';
69
+ domain: string;
70
+ httpsPort: number;
71
+ publicUrl: string;
72
+ cfTokenConfigured: boolean;
73
+ tunnelTokenConfigured: boolean;
74
+ caddyRunning: boolean;
75
+ cloudflaredRunning: boolean;
76
+ gatewayActualPort: number | null;
77
+ lanAddress?: string;
78
+ lastHostProbe: {
79
+ result: string;
80
+ deviceId: string | null;
81
+ at: number | null;
82
+ } | null;
83
+ lastExternalVerification: {
84
+ result: string;
85
+ deviceId: string | null;
86
+ at: number | null;
87
+ } | null;
88
+ lastForwardedSource: {
89
+ ip: string;
90
+ at: number;
91
+ } | null;
92
+ }
93
+ /** Wire mirror of src/wizard/verify.ts's poll result. */
94
+ export type WizardVerifyPoll = {
95
+ result: 'not-started';
96
+ } | {
97
+ result: 'stale';
98
+ } | {
99
+ result: 'code-expired';
100
+ } | {
101
+ result: 'pending';
102
+ } | {
103
+ result: 'cookie-insecure';
104
+ deviceId: string;
105
+ } | {
106
+ result: 'pass';
107
+ deviceId: string;
108
+ at: number;
109
+ };
110
+ /** Wire mirror of src/wizard/verify.ts's start result. */
111
+ export type WizardVerifyStart = {
112
+ ok: true;
113
+ pairingCode: string;
114
+ publicUrl: string;
115
+ expiresAt: number;
116
+ } | {
117
+ ok: false;
118
+ reason: 'no-public-url' | 'bad-public-url' | 'runtime-not-ready' | 'gateway-unreachable' | 'probe-failed' | 'pair-refused';
119
+ detail?: unknown;
120
+ };
121
+ /** The deployment role the unified wizard configures: server (`host`) or
122
+ * desktop sub-client (`client`). */
123
+ export type WizardRole = 'host' | 'client';
124
+ /** The three wizard steps: pick a path, fill its form, verify end to end. */
125
+ export type WizardStep = 'pick' | 'configure' | 'verify';
126
+ /** The four server-ingress paths (the three public ones plus LAN-only `'lan'`). */
127
+ export type WizardPath = 'caddy' | 'external' | 'cloudflared' | 'lan';
128
+ /** Where the wizard opens: a configured ingress jumps straight to verify. */
129
+ export declare function initialStep(status: WizardStatusBody | undefined): WizardStep;
130
+ /**
131
+ * Whether the inline overview card should render the configured status
132
+ * dashboard instead of the first-time setup prompt.
133
+ */
134
+ export declare function isWizardConfigured(input: {
135
+ effectiveClient: boolean;
136
+ wizardStatus: WizardStatusBody | undefined;
137
+ pairedDeviceCount: number;
138
+ hasSavedHostConfig: boolean;
139
+ tokenConfigured: boolean;
140
+ clientServerUrl: string;
141
+ clientState: string | undefined;
142
+ }): boolean;
143
+ export interface WizardFormSeed {
144
+ domain: string;
145
+ httpsPort: string;
146
+ serverUrl: string;
147
+ path: WizardPath | undefined;
148
+ }
149
+ /**
150
+ * The configure-form seed from one wizard status projection (GW-fix-3/M1):
151
+ * the projection (wizard/status) is the ONLY surface that carries the
152
+ * ingress fields — admin/status strips them by design, so the form must
153
+ * seed from here. Empty values leave the form untouched.
154
+ */
155
+ export declare function formSeedOf(status: WizardStatusBody | undefined): WizardFormSeed;
156
+ /**
157
+ * The reverse-proxy snippet's upstream port: the gateway's ACTUAL port as
158
+ * the wizard runtime reports it, falling back to the configured default
159
+ * 3088 when no status has landed yet (GW-fix-3/M2).
160
+ */
161
+ export declare function upstreamPortOf(status: WizardStatusBody | undefined): number;
162
+ /** The step AFTER pick, given the user's path choice. */
163
+ export declare function stepAfterPick(): WizardStep;
164
+ export declare function isValidHostname(value: string): boolean;
165
+ /** Port strings: [1, 65535]. */
166
+ export declare function isValidPort(value: string): boolean;
167
+ /** The public origin a verified domain+port answers on (443 hides the port). */
168
+ export declare function publicUrlFrom(domain: string, httpsPort: number): string;
169
+ /** Which configure form is complete enough to advance. */
170
+ export declare function configureReadiness(path: WizardPath, form: {
171
+ domain: string;
172
+ httpsPort: string;
173
+ cfToken: string;
174
+ serverUrl: string;
175
+ }): {
176
+ ok: true;
177
+ publicUrl: string;
178
+ httpsPort: number;
179
+ } | {
180
+ ok: false;
181
+ error: 'bad-domain' | 'bad-port' | 'missing-token' | 'bad-server-url';
182
+ };
183
+ export type LightState = 'pass' | 'pending' | 'fail';
184
+ export interface WizardLights {
185
+ /** The gateway child answers on this machine. */
186
+ gateway: LightState;
187
+ /** The public URL walks back to this gateway. */
188
+ publicUrl: LightState;
189
+ /** A phone actually paired through it. */
190
+ pairing: LightState;
191
+ }
192
+ /**
193
+ * The three progress lights, derived from the admin/status reachability
194
+ * plus the verification poll result. Before a session is started the poll
195
+ * answers `not-started`, which is a pending state — the public and pairing
196
+ * lights stay amber (nothing has been tried, so red would just shout);
197
+ * once started, an amber poll keeps them amber, a wrong-shape answer
198
+ * (redirect, someone else's server) turns the public light red, and an
199
+ * insecure cookie turns the pairing light red without ever passing.
200
+ */
201
+ export declare function deriveWizardLights(input: {
202
+ gatewayReachable: boolean;
203
+ poll: WizardVerifyPoll | undefined;
204
+ startResult?: WizardVerifyStart | undefined;
205
+ }): WizardLights;
206
+ export interface ClientWizardLights {
207
+ /** Whether a desktop-client token is saved on this machine. */
208
+ credential: LightState;
209
+ /** Whether the client can reach and authenticate with the server. */
210
+ connection: LightState;
211
+ /** Whether the session-sync and plugin-bridge interceptors are active. */
212
+ sync: LightState;
213
+ }
214
+ /**
215
+ * Derive the three status lights for the desktop sub-client verification
216
+ * step (`role === 'client'`).
217
+ */
218
+ export declare function deriveClientWizardLights(input: {
219
+ tokenConfigured: boolean;
220
+ clientState: string | undefined;
221
+ interceptInstalled?: boolean | undefined;
222
+ }): ClientWizardLights;
223
+ /** Pairing-code countdown, whole seconds, never negative. */
224
+ export declare function pairingSecondsLeft(expiresAt: number, now: number): number;
225
+ /**
226
+ * The managed-Caddy start-failure copy: maps the wire error code to a
227
+ * locale key (+params / manual-install link). Pure — the check script pins
228
+ * every mapping.
229
+ */
230
+ export declare function caddyFailureCopy(error: string, detail?: string, installUrl?: string): {
231
+ key: string;
232
+ params: Record<string, string>;
233
+ installUrl?: string;
234
+ };
235
+ export interface SnippetInput {
236
+ domain: string;
237
+ upstreamHost: string;
238
+ upstreamPort: number;
239
+ }
240
+ export declare function nginxSnippetText(input: SnippetInput): string | null;
241
+ export declare function caddySnippetText(input: SnippetInput): string | null;
242
+ /** The Lucky steps (mirror of proxy-snippets.ts luckySteps). */
243
+ export declare function luckyStepTexts(input: SnippetInput): string[] | null;
244
+ /** The snippet kinds the reverse-proxy card tabs over, in tab order. */
245
+ export declare const SNIPPET_KINDS: readonly ["nginx", "caddy", "lucky"];
246
+ export type SnippetKind = (typeof SNIPPET_KINDS)[number];
247
+ //# sourceMappingURL=wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../../src/client-data/wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,yCAAyC,CAAA;AACzE,eAAO,MAAM,mBAAmB,yCAAyC,CAAA;AACzE,eAAO,MAAM,qBAAqB,2CAA2C,CAAA;AAC7E,eAAO,MAAM,yBAAyB,+CAA+C,CAAA;AACrF,eAAO,MAAM,wBAAwB,8CAA8C,CAAA;AACnF,eAAO,MAAM,uBAAuB,6CAA6C,CAAA;AACjF,eAAO,MAAM,yBAAyB,+CAA+C,CAAA;AACrF,eAAO,MAAM,yBAAyB,sDAAsD,CAAA;AAC5F,eAAO,MAAM,yBAAyB,+CAA+C,CAAA;AACrF,eAAO,MAAM,wBAAwB,8CAA8C,CAAA;AACnF,eAAO,MAAM,0BAA0B,gDAAgD,CAAA;AAEvF,+DAA+D;AAC/D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,CAAA;AAEhE,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAA;CAAE,CAAA;AAE/E,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAElD,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAqBlH;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAA;CAAE,CAO9F;AAED,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,IAAI,CAAA;IACR,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,CAAA;IAClD,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,qBAAqB,EAAE,OAAO,CAAA;IAC9B,YAAY,EAAE,OAAO,CAAA;IACrB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;IACpF,wBAAwB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;IAC/F,mBAAmB,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CACvD;AAED,yDAAyD;AACzD,MAAM,MAAM,gBAAgB,GACxB;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,GACzB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,qBAAqB,GAAG,cAAc,GAAG,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAI/J;oCACoC;AACpC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE1C,6EAA6E;AAC7E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;AAExD,mFAAmF;AACnF,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,KAAK,CAAA;AAErE,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAE5E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,eAAe,EAAE,OAAO,CAAA;IACxB,YAAY,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAC1C,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,eAAe,EAAE,OAAO,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CAChC,GAAG,OAAO,CAQV;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,UAAU,GAAG,SAAS,CAAA;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,GAAG,cAAc,CAU/E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAI3E;AAED,yDAAyD;AACzD,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAOD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,gCAAgC;AAChC,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAIlD;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,0DAA0D;AAC1D,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,YAAY,GAAG,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAA;CAAE,CAmC3I;AAID,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;AAEpD,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,OAAO,EAAE,UAAU,CAAA;IACnB,iDAAiD;IACjD,SAAS,EAAE,UAAU,CAAA;IACrB,0CAA0C;IAC1C,OAAO,EAAE,UAAU,CAAA;CACpB;AAKD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,gBAAgB,EAAE,OAAO,CAAA;IACzB,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAClC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAC5C,GAAG,YAAY,CAWf;AAED,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,UAAU,EAAE,UAAU,CAAA;IACtB,qEAAqE;IACrE,UAAU,EAAE,UAAU,CAAA;IACtB,0EAA0E;IAC1E,IAAI,EAAE,UAAU,CAAA;CACjB;AAUD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACzC,GAAG,kBAAkB,CAQrB;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAetE;AAID,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;CACrB;AAUD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CA+BnE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAInE;AAED,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,GAAG,IAAI,CAQnE;AAED,wEAAwE;AACxE,eAAO,MAAM,aAAa,sCAAuC,CAAA;AACjE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA"}