${this._plates().map((t) => this._renderPlate(t))}
@@ -1219,7 +1244,7 @@ class Bt extends M {
`;
}
_timeZone() {
- return gt(this.hass);
+ return kt(this.hass);
}
_state(e) {
const n = this.hass?.states?.[e];
@@ -1243,19 +1268,19 @@ class Bt extends M {
const t = this._state(
"sensor.nestquest_household_quests_due_today"
)?.attributes?.child_roster;
- return Array.isArray(t) ? t.map((n) => vt(n)).filter((n) => n.length > 0) : [];
+ return Array.isArray(t) ? t.map((n) => Ct(n)).filter((n) => n.length > 0) : [];
}
_plates() {
return this._childSlugs().map((e) => this._plate(e));
}
_plate(e) {
- const t = this._dueSensorResolution(e), n = this._state(`sensor.nestquest_${e}_quests_due_today`), i = this._state(
+ const t = this._dueSensorResolution(e), n = this._state(`sensor.nestquest_${e}_quests_due_today`), s = this._state(
`sensor.nestquest_${e}_quests_completed_today`
), a = this._state(
`sensor.nestquest_${e}_completion_pct_today`
), r = this._state(
`binary_sensor.nestquest_${e}_present_today`
- ), l = n?.attributes ?? {}, o = $e(X(n?.state, 0)), p = $e(X(i?.state, 0)), u = a ? X(a.state, Number.NaN) : Number.NaN, c = Number.isFinite(u) ? ke(u) : o > 0 ? ke(p / o * 100) : 0;
+ ), l = n?.attributes ?? {}, o = ze(te(n?.state, 0)), p = ze(te(s?.state, 0)), u = a ? te(a.state, Number.NaN) : Number.NaN, c = Number.isFinite(u) ? Se(u) : o > 0 ? Se(p / o * 100) : 0;
let f = !0;
const h = l.present;
typeof h == "boolean" ? f = h : r && (f = String(r.state ?? "").trim().toLowerCase() === "on");
@@ -1264,14 +1289,14 @@ class Bt extends M {
if (typeof _ == "string" && _.trim())
m = _.trim();
else {
- const G = r?.attributes?.child_name;
- typeof G == "string" && G.trim() && (m = G.trim());
+ const X = r?.attributes?.child_name;
+ typeof X == "string" && X.trim() && (m = X.trim());
}
- m || (m = xt(e));
- const x = kt(
+ m || (m = At(e));
+ const v = zt(
r?.attributes?.next_present,
this._timeZone()
- ), R = x ? `Returns ${J(x, this._timeZone())}` : null;
+ ), R = v ? `Returns ${ee(v, this._timeZone())}` : null;
return {
slug: e,
name: m,
@@ -1297,7 +1322,7 @@ class Bt extends M {
}
_boardNotice() {
const e = this._plates();
- return e.length === 0 ? Ce : e.every((t) => t.unresolved !== null) ? e.some((t) => t.unresolved === "stale") ? Nt : Ce : null;
+ return e.length === 0 ? Ne : e.every((t) => t.unresolved !== null) ? e.some((t) => t.unresolved === "stale") ? jt : Ne : null;
}
_renderNotice(e) {
return d`
@@ -1320,7 +1345,7 @@ class Bt extends M {
${e.name}
- ${Tt}
+ ${Ht}
Unknown
—
@@ -1340,7 +1365,7 @@ class Bt extends M {
${e.name}
- ${At}
+ ${It}
Home today
@@ -1359,7 +1384,7 @@ class Bt extends M {
${e.name}
- ${St}
+ ${Pt}
On travels
${e.returns ?? "Returns —"}
@@ -1368,11 +1393,11 @@ class Bt extends M {
`;
}
_openQuestLog(e) {
- const t = we(this._config?.quest_log_path);
+ const t = Ae(this._config?.quest_log_path);
t && (window.history.pushState(null, "", `${t.replace(/\/+$/, "")}/${e}`), window.dispatchEvent(new Event("location-changed")));
}
_dockWeather() {
- const e = we(this._config?.weather_entity);
+ const e = Ae(this._config?.weather_entity);
if (!e)
return null;
const t = this._state(e);
@@ -1381,9 +1406,9 @@ class Bt extends M {
const n = String(t.state ?? "").trim();
if (!n || n === "unavailable" || n === "unknown")
return null;
- const i = t.attributes ?? {};
+ const s = t.attributes ?? {};
let a = null, r = null;
- const l = i.forecast;
+ const l = s.forecast;
if (Array.isArray(l) && l.length > 0) {
const o = l[0];
if (o && typeof o == "object") {
@@ -1393,7 +1418,7 @@ class Bt extends M {
}
return {
condition: n,
- temperature: this._optionalNumber(i.temperature),
+ temperature: this._optionalNumber(s.temperature),
high: a,
low: r
};
@@ -1409,16 +1434,16 @@ class Bt extends M {
if (!e)
return d`
- ${J(this._now, this._timeZone())}
+ ${ee(this._now, this._timeZone())}
- ${_t(this._now, this._timeZone())}
+ ${$t(this._now, this._timeZone())}
`;
- const t = $t(e.condition), n = qt(e.condition, t), i = e.temperature === null ? g : d`
${Math.round(e.temperature)}°`, a = e.high === null || e.low === null ? null : `${Math.round(e.high)}° / ${Math.round(e.low)}°`;
+ const t = Tt(e.condition), n = Et(e.condition, t), s = e.temperature === null ? g : d`
${Math.round(e.temperature)}°`, a = e.high === null || e.low === null ? null : `${Math.round(e.high)}° / ${Math.round(e.low)}°`;
return d`
- ${Lt}
- ${i}
+ ${Dt}
+ ${s}
${a === null ? t : `${t} · ${a}`}
@@ -1428,15 +1453,21 @@ class Bt extends M {
`;
}
-}
-customElements.define("nestquest-party-board-card", Bt);
-le({
+};
+Q.properties = {
+ hass: { attribute: !1 },
+ _config: { state: !0 },
+ _now: { state: !0 }
+}, Q.styles = [x(Xe), Bt];
+let re = Q;
+customElements.define("nestquest-party-board-card", re);
+fe({
type: "nestquest-party-board-card",
name: "NestQuest Party Board",
description: "Kids' attract screen for present and away adventurers."
});
-const Ot = { CHILD: 2 }, Pt = (s) => (...e) => ({ _$litDirective$: s, values: e });
-let It = class {
+const Ft = { CHILD: 2 }, Vt = (i) => (...e) => ({ _$litDirective$: i, values: e });
+let Zt = class {
constructor(e) {
}
get _$AU() {
@@ -1452,79 +1483,79 @@ let It = class {
return this.render(...t);
}
};
-const { I: Ht } = pt, Me = (s) => s, Ae = () => document.createComment(""), B = (s, e, t) => {
- const n = s._$AA.parentNode, i = e === void 0 ? s._$AB : e._$AA;
+const { I: Qt } = yt, Le = (i) => i, Oe = () => document.createComment(""), O = (i, e, t) => {
+ const n = i._$AA.parentNode, s = e === void 0 ? i._$AB : e._$AA;
if (t === void 0) {
- const a = n.insertBefore(Ae(), i), r = n.insertBefore(Ae(), i);
- t = new Ht(a, r, s, s.options);
+ const a = n.insertBefore(Oe(), s), r = n.insertBefore(Oe(), s);
+ t = new Qt(a, r, i, i.options);
} else {
- const a = t._$AB.nextSibling, r = t._$AM, l = r !== s;
+ const a = t._$AB.nextSibling, r = t._$AM, l = r !== i;
if (l) {
let o;
- t._$AQ?.(s), t._$AM = s, t._$AP !== void 0 && (o = s._$AU) !== r._$AU && t._$AP(o);
+ t._$AQ?.(i), t._$AM = i, t._$AP !== void 0 && (o = i._$AU) !== r._$AU && t._$AP(o);
}
- if (a !== i || l) {
+ if (a !== s || l) {
let o = t._$AA;
for (; o !== a; ) {
- const p = Me(o).nextSibling;
- Me(n).insertBefore(o, i), o = p;
+ const p = Le(o).nextSibling;
+ Le(n).insertBefore(o, s), o = p;
}
}
}
return t;
-}, q = (s, e, t = s) => (s._$AI(e, t), s), jt = {}, Rt = (s, e = jt) => s._$AH = e, Ut = (s) => s._$AH, Y = (s) => {
- s._$AR(), s._$AA.remove();
+}, q = (i, e, t = i) => (i._$AI(e, t), i), Wt = {}, Gt = (i, e = Wt) => i._$AH = e, Kt = (i) => i._$AH, ne = (i) => {
+ i._$AR(), i._$AA.remove();
};
-const Se = (s, e, t) => {
+const Be = (i, e, t) => {
const n = /* @__PURE__ */ new Map();
- for (let i = e; i <= t; i++) n.set(s[i], i);
+ for (let s = e; s <= t; s++) n.set(i[s], s);
return n;
-}, Te = Pt(class extends It {
- constructor(s) {
- if (super(s), s.type !== Ot.CHILD) throw Error("repeat() can only be used in text expressions");
+}, Ie = Vt(class extends Zt {
+ constructor(i) {
+ if (super(i), i.type !== Ft.CHILD) throw Error("repeat() can only be used in text expressions");
}
- dt(s, e, t) {
+ dt(i, e, t) {
let n;
t === void 0 ? t = e : e !== void 0 && (n = e);
- const i = [], a = [];
+ const s = [], a = [];
let r = 0;
- for (const l of s) i[r] = n ? n(l, r) : r, a[r] = t(l, r), r++;
- return { values: a, keys: i };
+ for (const l of i) s[r] = n ? n(l, r) : r, a[r] = t(l, r), r++;
+ return { values: a, keys: s };
}
- render(s, e, t) {
- return this.dt(s, e, t).values;
+ render(i, e, t) {
+ return this.dt(i, e, t).values;
}
- update(s, [e, t, n]) {
- const i = Ut(s), { values: a, keys: r } = this.dt(e, t, n);
- if (!Array.isArray(i)) return this.ut = r, a;
+ update(i, [e, t, n]) {
+ const s = Kt(i), { values: a, keys: r } = this.dt(e, t, n);
+ if (!Array.isArray(s)) return this.ut = r, a;
const l = this.ut ??= [], o = [];
- let p, u, c = 0, f = i.length - 1, h = 0, m = a.length - 1;
- for (; c <= f && h <= m; ) if (i[c] === null) c++;
- else if (i[f] === null) f--;
- else if (l[c] === r[h]) o[h] = q(i[c], a[h]), c++, h++;
- else if (l[f] === r[m]) o[m] = q(i[f], a[m]), f--, m--;
- else if (l[c] === r[m]) o[m] = q(i[c], a[m]), B(s, o[m + 1], i[c]), c++, m--;
- else if (l[f] === r[h]) o[h] = q(i[f], a[h]), B(s, i[c], i[f]), f--, h++;
- else if (p === void 0 && (p = Se(r, h, m), u = Se(l, c, f)), p.has(l[c])) if (p.has(l[f])) {
- const _ = u.get(r[h]), x = _ !== void 0 ? i[_] : null;
- if (x === null) {
- const R = B(s, i[c]);
+ let p, u, c = 0, f = s.length - 1, h = 0, m = a.length - 1;
+ for (; c <= f && h <= m; ) if (s[c] === null) c++;
+ else if (s[f] === null) f--;
+ else if (l[c] === r[h]) o[h] = q(s[c], a[h]), c++, h++;
+ else if (l[f] === r[m]) o[m] = q(s[f], a[m]), f--, m--;
+ else if (l[c] === r[m]) o[m] = q(s[c], a[m]), O(i, o[m + 1], s[c]), c++, m--;
+ else if (l[f] === r[h]) o[h] = q(s[f], a[h]), O(i, s[c], s[f]), f--, h++;
+ else if (p === void 0 && (p = Be(r, h, m), u = Be(l, c, f)), p.has(l[c])) if (p.has(l[f])) {
+ const _ = u.get(r[h]), v = _ !== void 0 ? s[_] : null;
+ if (v === null) {
+ const R = O(i, s[c]);
q(R, a[h]), o[h] = R;
- } else o[h] = q(x, a[h]), B(s, i[c], x), i[_] = null;
+ } else o[h] = q(v, a[h]), O(i, s[c], v), s[_] = null;
h++;
- } else Y(i[f]), f--;
- else Y(i[c]), c++;
+ } else ne(s[f]), f--;
+ else ne(s[c]), c++;
for (; h <= m; ) {
- const _ = B(s, o[m + 1]);
+ const _ = O(i, o[m + 1]);
q(_, a[h]), o[h++] = _;
}
for (; c <= f; ) {
- const _ = i[c++];
- _ !== null && Y(_);
+ const _ = s[c++];
+ _ !== null && ne(_);
}
- return this.ut = r, Rt(s, o), S;
+ return this.ut = r, Gt(i, o), S;
}
-}), Dt = [
+}), Jt = [
{
kind: "lucide",
key: "lucide:bed",
@@ -1994,7 +2025,7 @@ const Se = (s, e, t) => {
"m3 7 2 2 4-4"
]
}
-], Ft = [
+], Xt = [
{
kind: "fa",
key: "fa:broom",
@@ -2215,20 +2246,20 @@ const Se = (s, e, t) => {
"M384 512L96 512c-53 0-96-43-96-96L0 96C0 43 43 0 96 0L400 0c26.5 0 48 21.5 48 48l0 288c0 20.9-13.4 38.7-32 45.3l0 66.7c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0zM96 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0 0-64-256 0zm32-232c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0c-13.3 0-24 10.7-24 24zm24 72c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0z"
]
}
-], O = { kind: "fallback", key: null }, Qt = 8, ze = new Map(Dt.map((s) => [s.name, s])), Vt = new Map(Ft.map((s) => [s.name, s]));
-function Zt(s) {
- const e = [...s];
- return e.length === 0 || e.length > Qt ? !1 : !e.some((t) => new RegExp("[\\s<>&]|\\p{Cc}", "u").test(t));
+], B = { kind: "fallback", key: null }, Yt = 8, Pe = new Map(Jt.map((i) => [i.name, i])), en = new Map(Xt.map((i) => [i.name, i]));
+function tn(i) {
+ const e = [...i];
+ return e.length === 0 || e.length > Yt ? !1 : !e.some((t) => new RegExp("[\\s<>&]|\\p{Cc}", "u").test(t));
}
-function Wt(s) {
- if (!s || !s.trim()) return O;
- const e = s.indexOf(":");
- if (e === -1) return ze.get(s) ?? O;
- const t = s.slice(0, e), n = s.slice(e + 1);
- return t === "lucide" ? ze.get(n) ?? O : t === "fa" ? Vt.get(n) ?? O : t === "emoji" && Zt(n) ? { kind: "emoji", key: s, text: n } : O;
+function nn(i) {
+ if (!i || !i.trim()) return B;
+ const e = i.indexOf(":");
+ if (e === -1) return Pe.get(i) ?? B;
+ const t = i.slice(0, e), n = i.slice(e + 1);
+ return t === "lucide" ? Pe.get(n) ?? B : t === "fa" ? en.get(n) ?? B : t === "emoji" && tn(n) ? { kind: "emoji", key: i, text: n } : B;
}
-function Gt(s, e) {
- const t = Wt(s);
+function sn(i, e) {
+ const t = nn(i);
switch (t.kind) {
case "lucide":
return d`
`;
case "fa":
return d`
`;
case "emoji":
return d`
${t.text}`;
@@ -2258,59 +2289,59 @@ function Gt(s, e) {
return e;
}
}
-const Kt = [
+const an = [
"nestquest_quest_completed",
"nestquest_quest_uncompleted",
"nestquest_quest_missed",
"nestquest_child_day_complete"
-], Ee = /* @__PURE__ */ new Map();
-function E(s, e) {
- const t = `${s ?? "local"}|${JSON.stringify(e)}`, n = Ee.get(t);
+], He = /* @__PURE__ */ new Map();
+function E(i, e) {
+ const t = `${i ?? "local"}|${JSON.stringify(e)}`, n = He.get(t);
if (n)
return n;
- let i;
+ let s;
try {
- i = new Intl.DateTimeFormat("en-US", {
+ s = new Intl.DateTimeFormat("en-US", {
...e,
- ...s ? { timeZone: s } : {}
+ ...i ? { timeZone: i } : {}
});
} catch {
- i = new Intl.DateTimeFormat("en-US", e);
+ s = new Intl.DateTimeFormat("en-US", e);
}
- return Ee.set(t, i), i;
+ return He.set(t, s), s;
}
-function Jt(s) {
- const e = s?.config;
+function rn(i) {
+ const e = i?.config;
if (!e || typeof e != "object")
return;
const t = e.time_zone;
return typeof t == "string" && t.trim() ? t.trim() : void 0;
}
-function U(s, e) {
- return `${E(e, { weekday: "long" }).format(s)}, ${E(e, { month: "short", day: "numeric" }).format(s)}`;
+function j(i, e) {
+ return `${E(e, { weekday: "long" }).format(i)}, ${E(e, { month: "short", day: "numeric" }).format(i)}`;
}
-function Xt(s, e) {
- return E(e, { weekday: "long" }).format(s);
+function on(i, e) {
+ return E(e, { weekday: "long" }).format(i);
}
-function Yt(s, e) {
- const t = new Date(s);
+function ln(i, e) {
+ const t = new Date(i);
return Number.isNaN(t.getTime()) ? "" : E(e, {
hour: "numeric",
minute: "2-digit",
hour12: !0
}).format(t);
}
-function en(s, e) {
+function cn(i, e) {
return E(e, {
hour: "numeric",
minute: "2-digit",
hour12: !0
- }).format(s);
+ }).format(i);
}
-function tn(s) {
- if (!s)
+function dn(i) {
+ if (!i)
return null;
- const e = /^(\d{1,2}):(\d{2})$/.exec(s.trim());
+ const e = /^(\d{1,2}):(\d{2})$/.exec(i.trim());
if (!e)
return null;
const t = Number(e[1]);
@@ -2319,22 +2350,22 @@ function tn(s) {
const n = t >= 12 ? "PM" : "AM";
return `${t % 12 === 0 ? 12 : t % 12}:${e[2]} ${n}`;
}
-function w(s) {
- return typeof s == "string" ? s.trim() : "";
+function w(i) {
+ return typeof i == "string" ? i.trim() : "";
}
-function y(s, e) {
- if (s == null || s === "")
+function y(i, e) {
+ if (i == null || i === "")
return e;
- const t = typeof s == "number" ? s : Number(s);
+ const t = typeof i == "number" ? i : Number(i);
return Number.isFinite(t) ? t : e;
}
-function b(s) {
- return Math.max(0, Math.round(s));
+function b(i) {
+ return Math.max(0, Math.round(i));
}
-function ee(s) {
- return s.split(/[-_]+/).filter(Boolean).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ");
+function ie(i) {
+ return i.split(/[-_]+/).filter(Boolean).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ");
}
-function nn(s, e) {
+function pn(i, e) {
const t = E(e, {
year: "numeric",
month: "2-digit",
@@ -2343,10 +2374,10 @@ function nn(s, e) {
minute: "2-digit",
second: "2-digit",
hourCycle: "h23"
- }).formatToParts(new Date(s)), n = (a) => {
+ }).formatToParts(new Date(i)), n = (a) => {
const r = t.find((l) => l.type === a);
return r ? Number(r.value) : Number.NaN;
- }, i = Date.UTC(
+ }, s = Date.UTC(
n("year"),
n("month") - 1,
n("day"),
@@ -2354,41 +2385,41 @@ function nn(s, e) {
n("minute"),
n("second")
);
- return Number.isFinite(i) ? i - s : 0;
+ return Number.isFinite(s) ? s - i : 0;
}
-function Ne(s, e) {
- if (typeof s != "string")
+function Ue(i, e) {
+ if (typeof i != "string")
return null;
- const t = s.split("-");
+ const t = i.split("-");
if (t.length !== 3)
return null;
- const [n, i, a] = t.map((o) => Number(o));
- if (!n || !i || !a)
+ const [n, s, a] = t.map((o) => Number(o));
+ if (!n || !s || !a)
return null;
if (!e) {
- const o = new Date(n, i - 1, a);
+ const o = new Date(n, s - 1, a);
return Number.isNaN(o.getTime()) ? null : o;
}
- const r = Date.UTC(n, i - 1, a), l = new Date(r - nn(r, e));
+ const r = Date.UTC(n, s - 1, a), l = new Date(r - pn(r, e));
return Number.isNaN(l.getTime()) ? null : l;
}
-function sn() {
- const s = window.location.pathname.split("/").filter(Boolean);
- return s.length > 0 ? s[s.length - 1].toLowerCase() : "";
+function hn() {
+ const i = window.location.pathname.split("/").filter(Boolean);
+ return i.length > 0 ? i[i.length - 1].toLowerCase() : "";
}
-function an(s) {
- if (!s || typeof s != "object")
+function un(i) {
+ if (!i || typeof i != "object")
return null;
- const e = s, t = w(e.state).toLowerCase();
+ const e = i, t = w(e.state).toLowerCase();
if (t !== "open" && t !== "completed")
return null;
const n = y(e.id, 0);
if (!n)
return null;
- const i = y(e.child_id, 0);
+ const s = y(e.child_id, 0);
return {
id: n,
- child_id: i > 0 ? i : null,
+ child_id: s > 0 ? s : null,
title: w(e.title) || "Quest",
icon: w(e.icon) || null,
window: w(e.window).toLowerCase(),
@@ -2399,7 +2430,7 @@ function an(s) {
on_time: e.on_time === !0 ? !0 : e.on_time === !1 ? !1 : null
};
}
-const rn = {
+const fn = {
"clear-night": "Clear",
cloudy: "Cloudy",
exceptional: "Clear",
@@ -2415,7 +2446,7 @@ const rn = {
sunny: "Sunny",
windy: "Windy",
"windy-variant": "Windy"
-}, on = {
+}, mn = {
"clear-night": "Clear night skies",
cloudy: "Grey skies today",
exceptional: "A striking day",
@@ -2432,14 +2463,14 @@ const rn = {
windy: "A blustery day",
"windy-variant": "A blustery day"
};
-function ln(s) {
- const e = rn[s];
- return e || s.charAt(0).toUpperCase() + s.slice(1);
+function gn(i) {
+ const e = fn[i];
+ return e || i.charAt(0).toUpperCase() + i.slice(1);
}
-function cn(s, e) {
- return on[s] ?? e;
+function _n(i, e) {
+ return mn[i] ?? e;
}
-const Le = "polygon(0 0, 100% 0, 100% 62%, 50% 100%, 0 62%)", dn = "polygon(50% 0, 93% 25%, 93% 75%, 50% 100%, 7% 75%, 7% 25%)", Be = [-9, 6, -4], pn = Ie`
+const Re = "polygon(0 0, 100% 0, 100% 62%, 50% 100%, 0 62%)", yn = "polygon(50% 0, 93% 25%, 93% 75%, 50% 100%, 7% 75%, 7% 25%)", je = [-9, 6, -4], bn = Ve`
* {
box-sizing: border-box;
}
@@ -2498,8 +2529,8 @@ const Le = "polygon(0 0, 100% 0, 100% 62%, 50% 100%, 0 62%)", dn = "polygon(50%
flex: none;
width: 96px;
height: 110px;
- padding: 3px;
- clip-path: ${v(Le)};
+ padding: 4px;
+ clip-path: ${x(Re)};
background: rgba(255, 255, 255, 0.22);
}
@@ -2510,7 +2541,7 @@ const Le = "polygon(0 0, 100% 0, 100% 62%, 50% 100%, 0 62%)", dn = "polygon(50%
align-items: center;
justify-content: center;
padding-bottom: 32px;
- clip-path: ${v(Le)};
+ clip-path: ${x(Re)};
background: var(--nq-p-crest);
}
@@ -2576,7 +2607,7 @@ const Le = "polygon(0 0, 100% 0, 100% 62%, 50% 100%, 0 62%)", dn = "polygon(50%
justify-content: center;
width: 44px;
height: 44px;
- clip-path: ${v(dn)};
+ clip-path: ${x(yn)};
background: var(--nq-brand-gradient);
}
@@ -3301,7 +3332,7 @@ const Le = "polygon(0 0, 100% 0, 100% 62%, 50% 100%, 0 62%)", dn = "polygon(50%
aria-hidden="true"
>
-`, hn = d`