sunpeak 0.5.39 → 0.5.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -7408,7 +7408,13 @@ function SidebarSelect({ value, onChange, options, placeholder }) {
7408
7408
  }
7409
7409
  );
7410
7410
  }
7411
- function SidebarInput({ value, onChange, placeholder, type = "text" }) {
7411
+ function SidebarInput({
7412
+ value,
7413
+ onChange,
7414
+ placeholder,
7415
+ type = "text",
7416
+ disabled = false
7417
+ }) {
7412
7418
  return /* @__PURE__ */ jsx(
7413
7419
  Input,
7414
7420
  {
@@ -7416,7 +7422,8 @@ function SidebarInput({ value, onChange, placeholder, type = "text" }) {
7416
7422
  value,
7417
7423
  onChange: (e) => onChange(e.target.value),
7418
7424
  placeholder,
7419
- size: "2xs"
7425
+ size: "2xs",
7426
+ disabled
7420
7427
  }
7421
7428
  );
7422
7429
  }
@@ -7492,144 +7499,148 @@ function Conversation({
7492
7499
  api.requestDisplayMode({ mode: "inline" });
7493
7500
  }
7494
7501
  };
7495
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col bg-surface w-full h-full flex-1 items-center", children: [
7496
- /* @__PURE__ */ jsxs(
7497
- "div",
7498
- {
7499
- className: "w-full border-subtle bg-surface z-10 grid h-12 grid-cols-[1fr_auto_1fr] border-b px-2",
7500
- style: { maxWidth: containerWidth },
7501
- children: [
7502
- /* @__PURE__ */ jsx("div", { className: "flex items-center justify-start gap-3", children: /* @__PURE__ */ jsx(
7503
- "button",
7504
- {
7505
- onClick: handleClose,
7506
- "aria-label": "Close",
7507
- className: "h-7 w-7 flex items-center justify-center hover:bg-subtle rounded-md transition-colors text-primary",
7508
- type: "button",
7509
- children: /* @__PURE__ */ jsx(CloseBold, {})
7510
- }
7511
- ) }),
7512
- /* @__PURE__ */ jsx("div", { className: "text-primary flex items-center justify-center text-base", children: appName }),
7513
- /* @__PURE__ */ jsx("div", { className: "flex items-center justify-end" })
7514
- ]
7515
- }
7516
- ),
7517
- /* @__PURE__ */ jsx(
7518
- "div",
7519
- {
7520
- className: "relative overflow-hidden flex-1 w-full",
7521
- style: { maxWidth: containerWidth },
7522
- children: /* @__PURE__ */ jsx("div", { className: "h-full w-full max-w-full overflow-auto", children })
7523
- }
7524
- ),
7525
- /* @__PURE__ */ jsx("footer", { className: "bg-surface w-full", style: { maxWidth: containerWidth }, children: /* @__PURE__ */ jsx("div", { className: "px-4 py-4", children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx(
7526
- "input",
7527
- {
7528
- type: "text",
7529
- name: "userInput",
7530
- disabled: true,
7531
- placeholder: "Message SimGPT",
7532
- className: "w-full bg-[var(--color-background-primary)] dark:bg-[#303030] text-secondary-foreground placeholder:text-muted-foreground rounded-3xl px-5 py-3 pr-12 shadow-md light:border border-[#0000000f]"
7533
- }
7534
- ) }) }) })
7535
- ] });
7536
- }
7537
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col bg-surface w-full h-full flex-1 items-center", children: [
7538
- /* @__PURE__ */ jsx(
7539
- "header",
7540
- {
7541
- className: "h-12 bg-surface flex items-center px-4 text-lg sticky top-0 z-40 w-full",
7542
- style: { maxWidth: containerWidth },
7543
- children: /* @__PURE__ */ jsx("span", { className: "text-primary", children: "SimGPT" })
7544
- }
7545
- ),
7546
- /* @__PURE__ */ jsxs(
7502
+ return /* @__PURE__ */ jsx(
7547
7503
  "div",
7548
7504
  {
7549
- className: "flex flex-col flex-1 w-full transition-all duration-200 overflow-hidden",
7550
- style: { maxWidth: containerWidth },
7551
- children: [
7552
- /* @__PURE__ */ jsxs("main", { className: "flex-1 overflow-y-auto overflow-x-hidden", children: [
7553
- /* @__PURE__ */ jsxs("article", { className: "text-primary w-full focus:outline-none", dir: "auto", "data-turn": "user", children: [
7554
- /* @__PURE__ */ jsx("h5", { className: "sr-only", children: "You said:" }),
7555
- /* @__PURE__ */ jsx("div", { className: "text-base my-auto mx-auto md:pt-8 px-4", children: /* @__PURE__ */ jsx("div", { className: "max-w-[48rem] mx-auto flex-1 relative flex w-full min-w-0 flex-col", children: /* @__PURE__ */ jsx("div", { className: "flex max-w-full flex-col grow", children: /* @__PURE__ */ jsx(
7556
- "div",
7505
+ className: "flex flex-col bg-surface w-full h-full flex-1 items-center relative",
7506
+ style: { transform: "translate(0)" },
7507
+ children: /* @__PURE__ */ jsxs(
7508
+ "div",
7509
+ {
7510
+ className: "no-scrollbar fixed start-0 end-0 top-0 bottom-0 z-50 mx-auto flex w-auto flex-col overflow-hidden",
7511
+ style: { maxWidth: containerWidth },
7512
+ children: [
7513
+ /* @__PURE__ */ jsxs("div", { className: "border-subtle bg-token-bg-primary sm:bg-token-bg-primary z-10 grid h-[3.25rem] grid-cols-[1fr_auto_1fr] border-b px-2", children: [
7514
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-start gap-3", children: /* @__PURE__ */ jsx(
7515
+ "button",
7516
+ {
7517
+ onClick: handleClose,
7518
+ "aria-label": "Close",
7519
+ className: "h-7 w-7 flex items-center justify-center hover:bg-subtle rounded-md transition-colors text-primary",
7520
+ type: "button",
7521
+ children: /* @__PURE__ */ jsx(CloseBold, {})
7522
+ }
7523
+ ) }),
7524
+ /* @__PURE__ */ jsx("div", { className: "text-primary flex items-center justify-center text-base", children: appName }),
7525
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-end" })
7526
+ ] }),
7527
+ /* @__PURE__ */ jsx("div", { className: "relative overflow-hidden flex-1 min-h-0", children: /* @__PURE__ */ jsx("div", { className: "h-full w-full max-w-full overflow-auto", children }) }),
7528
+ /* @__PURE__ */ jsx("footer", { className: "bg-surface", children: /* @__PURE__ */ jsx("div", { className: "max-w-[48rem] mx-auto px-4 py-4", children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx(
7529
+ "input",
7557
7530
  {
7558
- "data-message-author-role": "user",
7559
- className: "min-h-8 relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal",
7560
- children: /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col gap-1 empty:hidden items-end", children: /* @__PURE__ */ jsx("div", { className: "bg-[var(--color-background-primary-soft)] relative rounded-[18px] px-4 py-3 max-w-[70%]", children: /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap", children: userMessage }) }) })
7531
+ type: "text",
7532
+ name: "userInput",
7533
+ disabled: true,
7534
+ placeholder: "Message SimGPT",
7535
+ className: "w-full dark:bg-[#303030] text-secondary-foreground placeholder:text-muted-foreground rounded-3xl px-5 py-3 pr-12 shadow-md light:border border-[#0000000f]"
7561
7536
  }
7562
7537
  ) }) }) })
7563
- ] }),
7564
- /* @__PURE__ */ jsxs(
7565
- "article",
7566
- {
7567
- className: "text-primary w-full focus:outline-none",
7568
- dir: "auto",
7569
- "data-turn": "assistant",
7570
- children: [
7571
- /* @__PURE__ */ jsxs("h6", { className: "sr-only", children: [
7572
- appName,
7573
- " said:"
7574
- ] }),
7575
- /* @__PURE__ */ jsx("div", { className: "text-base my-auto mx-auto pb-10 px-4", children: /* @__PURE__ */ jsx("div", { className: "max-w-[48rem] mx-auto flex-1 relative flex w-full min-w-0 flex-col", children: /* @__PURE__ */ jsxs("div", { className: "flex max-w-full flex-col grow", children: [
7576
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 my-3", children: [
7577
- appIcon ? /* @__PURE__ */ jsx("div", { className: "size-6 flex items-center justify-center text-base", children: appIcon }) : /* @__PURE__ */ jsx("div", { className: "size-6 rounded-full bg-primary flex items-center justify-center text-primary-foreground font-medium text-xs", children: "AI" }),
7578
- /* @__PURE__ */ jsx("span", { className: "font-semibold text-sm", children: appName })
7579
- ] }),
7580
- /* @__PURE__ */ jsx(
7581
- "div",
7582
- {
7583
- "data-message-author-role": "assistant",
7584
- className: "min-h-8 relative flex w-full flex-col items-start gap-2 text-start break-words whitespace-normal",
7585
- children: /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col gap-1 empty:hidden", children: displayMode === "pip" ? /* @__PURE__ */ jsxs(
7538
+ ]
7539
+ }
7540
+ )
7541
+ }
7542
+ );
7543
+ }
7544
+ return /* @__PURE__ */ jsxs(
7545
+ "div",
7546
+ {
7547
+ className: "flex flex-col bg-surface w-full h-full flex-1 items-center relative",
7548
+ style: { transform: "translate(0)" },
7549
+ children: [
7550
+ /* @__PURE__ */ jsx(
7551
+ "header",
7552
+ {
7553
+ className: "h-12 bg-surface flex items-center px-4 text-lg sticky top-0 z-40 w-full",
7554
+ style: { maxWidth: containerWidth },
7555
+ children: /* @__PURE__ */ jsx("span", { className: "text-primary", children: "SimGPT" })
7556
+ }
7557
+ ),
7558
+ /* @__PURE__ */ jsxs(
7559
+ "div",
7560
+ {
7561
+ className: "flex flex-col flex-1 w-full transition-all duration-200 overflow-hidden",
7562
+ style: { maxWidth: containerWidth },
7563
+ children: [
7564
+ /* @__PURE__ */ jsxs("main", { className: "flex-1 overflow-y-auto overflow-x-hidden", children: [
7565
+ /* @__PURE__ */ jsxs("article", { className: "text-primary w-full focus:outline-none", dir: "auto", "data-turn": "user", children: [
7566
+ /* @__PURE__ */ jsx("h5", { className: "sr-only", children: "You said:" }),
7567
+ /* @__PURE__ */ jsx("div", { className: "text-base my-auto mx-auto md:pt-8 px-4", children: /* @__PURE__ */ jsx("div", { className: "max-w-[48rem] mx-auto flex-1 relative flex w-full min-w-0 flex-col", children: /* @__PURE__ */ jsx("div", { className: "flex max-w-full flex-col grow", children: /* @__PURE__ */ jsx(
7568
+ "div",
7569
+ {
7570
+ "data-message-author-role": "user",
7571
+ className: "min-h-8 relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal",
7572
+ children: /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col gap-1 empty:hidden items-end", children: /* @__PURE__ */ jsx("div", { className: "bg-[var(--color-background-primary-soft)] relative rounded-[18px] px-4 py-3 max-w-[70%]", children: /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap", children: userMessage }) }) })
7573
+ }
7574
+ ) }) }) })
7575
+ ] }),
7576
+ /* @__PURE__ */ jsxs(
7577
+ "article",
7578
+ {
7579
+ className: "text-primary w-full focus:outline-none",
7580
+ dir: "auto",
7581
+ "data-turn": "assistant",
7582
+ children: [
7583
+ /* @__PURE__ */ jsxs("h6", { className: "sr-only", children: [
7584
+ appName,
7585
+ " said:"
7586
+ ] }),
7587
+ /* @__PURE__ */ jsx("div", { className: "text-base my-auto mx-auto pb-10 px-4", children: /* @__PURE__ */ jsx("div", { className: "max-w-[48rem] mx-auto flex-1 relative flex w-full min-w-0 flex-col", children: /* @__PURE__ */ jsxs("div", { className: "flex max-w-full flex-col grow", children: [
7588
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 my-3", children: [
7589
+ appIcon ? /* @__PURE__ */ jsx("div", { className: "size-6 flex items-center justify-center text-base", children: appIcon }) : /* @__PURE__ */ jsx("div", { className: "size-6 rounded-full bg-primary flex items-center justify-center text-primary-foreground font-medium text-xs", children: "AI" }),
7590
+ /* @__PURE__ */ jsx("span", { className: "font-semibold text-sm", children: appName })
7591
+ ] }),
7592
+ /* @__PURE__ */ jsx(
7586
7593
  "div",
7587
7594
  {
7588
- className: "fixed top-14 z-50 overflow-visible left-1/2 md:left-[calc(50vw+7rem)] -translate-x-1/2 max-w-[calc(100vw-2rem)] md:max-w-[calc(100vw-16rem)]",
7589
- style: {
7590
- maxHeight: "429px",
7591
- width: containerWidth
7592
- },
7593
- children: [
7594
- /* @__PURE__ */ jsx(
7595
- "button",
7596
- {
7597
- onClick: () => {
7598
- if (api == null ? void 0 : api.requestDisplayMode) {
7599
- api.requestDisplayMode({ mode: "inline" });
7595
+ "data-message-author-role": "assistant",
7596
+ className: "min-h-8 relative flex w-full flex-col items-start gap-2 text-start break-words whitespace-normal",
7597
+ children: /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col gap-1 empty:hidden", children: displayMode === "pip" ? /* @__PURE__ */ jsxs(
7598
+ "div",
7599
+ {
7600
+ className: "no-scrollbar @w-xl/main:top-4 fixed start-4 end-4 top-4 z-50 mx-auto max-w-[40rem] lg:max-w-[48rem] sm:start-0 sm:end-0 sm:top-[3.25rem] sm:w-full overflow-visible",
7601
+ style: { maxHeight: "480px" },
7602
+ children: [
7603
+ /* @__PURE__ */ jsx(
7604
+ "button",
7605
+ {
7606
+ onClick: () => {
7607
+ if (api == null ? void 0 : api.requestDisplayMode) {
7608
+ api.requestDisplayMode({ mode: "inline" });
7609
+ }
7610
+ },
7611
+ className: "absolute -start-2 -top-1.5 z-10 rounded-full bg-[#3a3a3a] p-1.5 text-white shadow-[0px_0px_0px_1px_#fff3,0px_4px_12px_rgba(0,0,0,0.12)] hover:bg-[#6a6a6a]",
7612
+ "aria-label": "Close picture-in-picture",
7613
+ type: "button",
7614
+ children: /* @__PURE__ */ jsx(CloseBold, { className: "h-4 w-4" })
7600
7615
  }
7601
- },
7602
- className: "absolute -start-2 -top-1.5 z-10 rounded-full bg-[#3a3a3a] p-1.5 text-white shadow-[0px_0px_0px_1px_var(--border-heavy),0px_4px_12px_rgba(0,0,0,0.12)] hover:bg-[#6a6a6a]",
7603
- "aria-label": "Close picture-in-picture",
7604
- type: "button",
7605
- children: /* @__PURE__ */ jsx(CloseBold, { className: "h-4 w-4" })
7606
- }
7607
- ),
7608
- /* @__PURE__ */ jsx("div", { className: "relative overflow-hidden h-full rounded-2xl sm:rounded-3xl shadow-[0px_0px_0px_1px_var(--border-heavy),0px_6px_20px_rgba(0,0,0,0.1)] border border-subtle", children: /* @__PURE__ */ jsx("div", { className: "h-full w-full max-w-full overflow-auto bg-surface", children }) })
7609
- ]
7616
+ ),
7617
+ /* @__PURE__ */ jsx("div", { className: "relative overflow-hidden h-full rounded-2xl sm:rounded-3xl shadow-[0px_0px_0px_1px_#fff3,0px_6px_20px_rgba(0,0,0,0.1)] md:-mx-4", children: /* @__PURE__ */ jsx("div", { className: "h-full w-full max-w-full overflow-auto bg-[#212121]", children }) })
7618
+ ]
7619
+ }
7620
+ ) : /* @__PURE__ */ jsx("div", { className: "no-scrollbar relative mb-2 @w-sm/main:w-full mx-0 max-sm:-mx-[1rem] max-sm:w-[100cqw] max-sm:overflow-hidden overflow-visible", children: /* @__PURE__ */ jsx("div", { className: "relative overflow-hidden h-full", children }) }) })
7610
7621
  }
7611
- ) : /* @__PURE__ */ jsx("div", { className: "w-full overflow-x-auto", children }) })
7612
- }
7613
- )
7614
- ] }) }) })
7615
- ]
7616
- }
7617
- )
7618
- ] }),
7619
- /* @__PURE__ */ jsx("footer", { className: "bg-surface", children: /* @__PURE__ */ jsx("div", { className: "max-w-[48rem] mx-auto px-4 py-4", children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx(
7620
- "input",
7621
- {
7622
- type: "text",
7623
- name: "userInput",
7624
- disabled: true,
7625
- placeholder: "Message SimGPT",
7626
- className: "w-full bg-[var(--color-background-primary)] dark:bg-[#303030] text-secondary-foreground placeholder:text-muted-foreground rounded-3xl px-5 py-3 pr-12 shadow-md light:border border-[#0000000f]"
7627
- }
7628
- ) }) }) })
7629
- ]
7630
- }
7631
- )
7632
- ] });
7622
+ )
7623
+ ] }) }) })
7624
+ ]
7625
+ }
7626
+ )
7627
+ ] }),
7628
+ /* @__PURE__ */ jsx("footer", { className: "bg-surface", children: /* @__PURE__ */ jsx("div", { className: "max-w-[48rem] mx-auto px-4 py-4", children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsx(
7629
+ "input",
7630
+ {
7631
+ type: "text",
7632
+ name: "userInput",
7633
+ disabled: true,
7634
+ placeholder: "Message SimGPT",
7635
+ className: "w-full dark:bg-[#303030] text-secondary-foreground placeholder:text-muted-foreground rounded-3xl px-5 py-3 pr-12 shadow-md light:border border-[#0000000f]"
7636
+ }
7637
+ ) }) }) })
7638
+ ]
7639
+ }
7640
+ )
7641
+ ]
7642
+ }
7643
+ );
7633
7644
  }
7634
7645
  class MockOpenAI {
7635
7646
  constructor() {
@@ -7642,7 +7653,7 @@ class MockOpenAI {
7642
7653
  }
7643
7654
  });
7644
7655
  __publicField(this, "locale", "en-US");
7645
- __publicField(this, "maxHeight", 600);
7656
+ __publicField(this, "maxHeight");
7646
7657
  __publicField(this, "displayMode", "inline");
7647
7658
  __publicField(this, "safeArea", {
7648
7659
  insets: {
@@ -7703,7 +7714,8 @@ class MockOpenAI {
7703
7714
  }
7704
7715
  setDisplayMode(displayMode) {
7705
7716
  this.displayMode = displayMode;
7706
- this.emitUpdate({ displayMode });
7717
+ this.maxHeight = displayMode === "pip" ? 480 : void 0;
7718
+ this.emitUpdate({ displayMode, maxHeight: this.maxHeight });
7707
7719
  }
7708
7720
  setSafeArea(safeArea) {
7709
7721
  this.safeArea = safeArea;
@@ -7838,7 +7850,7 @@ function ChatGPTSimulator({
7838
7850
  []
7839
7851
  );
7840
7852
  useEffect(() => {
7841
- var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j;
7853
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k;
7842
7854
  if (selectedSim) {
7843
7855
  if (((_a2 = selectedSim.simulationGlobals) == null ? void 0 : _a2.theme) !== void 0) {
7844
7856
  mock.theme = selectedSim.simulationGlobals.theme;
@@ -7852,12 +7864,13 @@ function ChatGPTSimulator({
7852
7864
  }
7853
7865
  mock.userAgent = ((_c = selectedSim.simulationGlobals) == null ? void 0 : _c.userAgent) ?? mock.userAgent;
7854
7866
  mock.locale = ((_d = selectedSim.simulationGlobals) == null ? void 0 : _d.locale) ?? "en-US";
7855
- mock.maxHeight = ((_e = selectedSim.simulationGlobals) == null ? void 0 : _e.maxHeight) ?? 600;
7856
- mock.safeArea = ((_f = selectedSim.simulationGlobals) == null ? void 0 : _f.safeArea) ?? mock.safeArea;
7857
- mock.view = ((_g = selectedSim.simulationGlobals) == null ? void 0 : _g.view) ?? null;
7858
- mock.toolInput = ((_h = selectedSim.simulationGlobals) == null ? void 0 : _h.toolInput) ?? {};
7859
- mock.widgetState = ((_i = selectedSim.simulationGlobals) == null ? void 0 : _i.widgetState) ?? null;
7860
- mock.toolOutput = ((_j = selectedSim.toolCall) == null ? void 0 : _j.structuredContent) ?? null;
7867
+ const currentDisplayMode = ((_e = selectedSim.simulationGlobals) == null ? void 0 : _e.displayMode) ?? DEFAULT_DISPLAY_MODE;
7868
+ mock.maxHeight = currentDisplayMode === "pip" ? ((_f = selectedSim.simulationGlobals) == null ? void 0 : _f.maxHeight) ?? 480 : void 0;
7869
+ mock.safeArea = ((_g = selectedSim.simulationGlobals) == null ? void 0 : _g.safeArea) ?? mock.safeArea;
7870
+ mock.view = ((_h = selectedSim.simulationGlobals) == null ? void 0 : _h.view) ?? null;
7871
+ mock.toolInput = ((_i = selectedSim.simulationGlobals) == null ? void 0 : _i.toolInput) ?? {};
7872
+ mock.widgetState = ((_j = selectedSim.simulationGlobals) == null ? void 0 : _j.widgetState) ?? null;
7873
+ mock.toolOutput = ((_k = selectedSim.toolCall) == null ? void 0 : _k.structuredContent) ?? null;
7861
7874
  }
7862
7875
  }, [selectedKey, selectedSim, mock]);
7863
7876
  const theme = useTheme() ?? DEFAULT_THEME;
@@ -8052,13 +8065,18 @@ function ChatGPTSimulator({
8052
8065
  placeholder: "e.g. en-US"
8053
8066
  }
8054
8067
  ) }),
8055
- /* @__PURE__ */ jsx(SidebarControl, { label: "Max Height", children: /* @__PURE__ */ jsx(
8068
+ /* @__PURE__ */ jsx(SidebarControl, { label: "Max Height (PiP)", children: /* @__PURE__ */ jsx(
8056
8069
  SidebarInput,
8057
8070
  {
8058
8071
  type: "number",
8059
- value: String(maxHeight),
8060
- onChange: (value) => mock.setMaxHeight(Number(value)),
8061
- placeholder: "600"
8072
+ value: displayMode === "pip" && maxHeight !== void 0 ? String(maxHeight) : "",
8073
+ onChange: (value) => {
8074
+ if (displayMode === "pip") {
8075
+ mock.setMaxHeight(value ? Number(value) : 480);
8076
+ }
8077
+ },
8078
+ placeholder: displayMode === "pip" ? "480" : "-",
8079
+ disabled: displayMode !== "pip"
8062
8080
  }
8063
8081
  ) })
8064
8082
  ] }),