import { n as e } from "./rolldown-runtime-C266TIVP.js";
import { An as t, Cn as n, Dn as r, En as i, Fn as a, In as o, Nn as s, On as c, Pn as l, jn as u, kn as d } from "./features-CgTy87Ni.js";
//#region ../quality/src/types.ts
var f = {
	altMaxLength: 125,
	minFontSize: 14,
	allCapsMinLength: 20,
	minTouchTargetPx: 44
}, p = [
	"localhost",
	"127.0.0.1",
	"0.0.0.0",
	"*.local",
	"*.staging.*",
	"*.dev.*"
];
//#endregion
//#region ../quality/src/contrast.ts
function m(e, t) {
	let n = h(e), r = h(t);
	if (!n || !r) return NaN;
	let i = ne(n), a = ne(r), o = Math.max(i, a), s = Math.min(i, a);
	return (o + .05) / (s + .05);
}
var ee = /^#?([0-9a-f])([0-9a-f])([0-9a-f])$/i, te = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i;
function h(e) {
	if (typeof e != "string") return null;
	let t = e.trim(), n = te.exec(t);
	if (n) return {
		r: parseInt(n[1], 16),
		g: parseInt(n[2], 16),
		b: parseInt(n[3], 16)
	};
	let r = ee.exec(t);
	return r ? {
		r: parseInt(r[1] + r[1], 16),
		g: parseInt(r[2] + r[2], 16),
		b: parseInt(r[3] + r[3], 16)
	} : null;
}
function g(e) {
	return h(e ?? "") !== null;
}
function ne({ r: e, g: t, b: n }) {
	let r = _(e / 255), i = _(t / 255), a = _(n / 255);
	return .2126 * r + .7152 * i + .0722 * a;
}
function _(e) {
	return e <= .03928 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4;
}
//#endregion
//#region ../quality/src/walk.ts
var re = "#ffffff";
function v(e, n) {
	let r = g(e.settings.backgroundColor) ? e.settings.backgroundColor.toLowerCase() : re, i = (e, r) => {
		if (n(e, r), !t(e)) return;
		let a = e.styles?.backgroundColor, o = g(a) ? a.toLowerCase() : r.resolvedBackgroundColor;
		e.children.forEach((t, n) => {
			t.forEach((t) => i(t, {
				parent: e,
				section: e,
				columnIndex: n,
				depth: r.depth + 1,
				resolvedBackgroundColor: o
			}));
		});
	};
	for (let t of e.blocks) i(t, {
		parent: null,
		section: null,
		columnIndex: null,
		depth: 0,
		resolvedBackgroundColor: r
	});
}
//#endregion
//#region ../quality/src/run-rules.ts
function y(e, t, n, r) {
	if (n.disabled === !0) return [];
	let i = ie(n, t), a = [];
	function o(e, t, n) {
		return {
			blockId: n.blockId,
			ruleId: e,
			severity: t,
			message: r(i.locale, e, n.params),
			fix: n.fix
		};
	}
	v(e, (e, n) => {
		for (let r of t) {
			let t = i.severity(r.meta.id);
			if (t === "off" || !r.block) continue;
			let s = r.block(e, n, i);
			s !== null && a.push(o(r.meta.id, t, s));
		}
	});
	for (let n of t) {
		let t = i.severity(n.meta.id);
		if (t === "off" || !n.template) continue;
		let r = n.template(e, i);
		for (let e of r) a.push(o(n.meta.id, t, e));
	}
	return a;
}
function ie(e, t) {
	let n = e.rules ?? {};
	return {
		locale: e.locale ?? "en",
		rules: n,
		thresholds: {
			...f,
			...e.thresholds ?? {}
		},
		links: { nonProductionHosts: e.links?.nonProductionHosts ?? p },
		severity: (e) => {
			let r = n[e];
			return r === void 0 ? t.find((t) => t.meta.id === e)?.meta.severity ?? "warning" : r;
		}
	};
}
//#endregion
//#region ../quality/src/accessibility/messages/de.ts
var ae = /* @__PURE__ */ e({ default: () => oe }), oe = {
	"a11y.img-missing-alt": "Bild ohne Alt-Text. Füge eine kurze Beschreibung hinzu oder markiere das Bild als dekorativ.",
	"a11y.img-alt-is-filename": "Alt-Text sieht wie ein Dateiname aus (\"{alt}\"). Beschreibe stattdessen kurz, was das Bild zeigt.",
	"a11y.img-alt-too-long": "Alt-Text ist {length} Zeichen lang; bleibe unter {max}.",
	"a11y.img-decorative-needs-empty-alt": "Dekoratives Bild hat Alt-Text. Entferne den Alt-Text oder hebe die Markierung als dekorativ auf.",
	"a11y.img-linked-no-context": "Verlinktes Bild beschreibt nur das Motiv, nicht das Linkziel. Nenne das Ziel (z. B. „Frühlingssale ansehen“).",
	"a11y.heading-empty": "Überschrift ist leer. Füge Text hinzu oder entferne den Block.",
	"a11y.heading-skip-level": "Überschrift springt von H{from} auf H{to}. Eine Ebene pro Schritt.",
	"a11y.heading-multiple-h1": "E-Mail enthält mehr als eine H1. Verwende H1 nur einmal für die Hauptüberschrift.",
	"a11y.link-empty": "Ein Link in diesem Block hat keinen Text und kein beschriebenes Bild.",
	"a11y.link-vague-text": "Link-Text „{text}“ ist unspezifisch. Beschreibe stattdessen das Ziel.",
	"a11y.link-href-empty": "Ein Link in diesem Block hat ein leeres oder „#“-href.",
	"a11y.link-target-blank-no-rel": "Link öffnet in neuem Tab, aber rel=\"noopener\" fehlt – ergänze es, damit das Ziel nicht auf window.opener zugreifen kann.",
	"a11y.text-all-caps": "Längere Texte in Großbuchstaben sind schwerer lesbar. Verwende Groß- und Kleinschreibung.",
	"a11y.text-low-contrast": "Überschriftskontrast beträgt {ratio}:1; WCAG AA verlangt mindestens {required}:1.",
	"a11y.text-too-small": "Text ist {size}px; mindestens {min}px verwenden.",
	"a11y.button-vague-label": "Button-Beschriftung „{text}“ ist unspezifisch. Beschreibe die Aktion.",
	"a11y.button-touch-target": "Button ist etwa {height}px hoch; mindestens {min}px verwenden, um Fehltipper auf Mobilgeräten zu vermeiden.",
	"a11y.button-low-contrast": "Buttontextkontrast beträgt {ratio}:1; WCAG AA verlangt mindestens {required}:1.",
	"a11y.missing-preheader": "Kein Preheader-Text gesetzt. Postfächer zeigen sonst Bruchstücke des ersten Blocks an."
}, se = /* @__PURE__ */ e({ default: () => b }), b = {
	"a11y.img-missing-alt": "Image is missing alt text. Add a short description, or mark the image as decorative.",
	"a11y.img-alt-is-filename": "Alt text looks like a filename (\"{alt}\"). Replace with a short description of what the image conveys.",
	"a11y.img-alt-too-long": "Alt text is {length} characters; aim for under {max}.",
	"a11y.img-decorative-needs-empty-alt": "Decorative image has alt text. Either clear the alt text or unmark the image as decorative.",
	"a11y.img-linked-no-context": "Linked image alt describes the image but not the link destination. Include where the link goes (e.g. 'Buy spring sale').",
	"a11y.heading-empty": "Heading is empty. Add text or remove the block.",
	"a11y.heading-skip-level": "Heading jumps from H{from} to H{to}. Step one level at a time.",
	"a11y.heading-multiple-h1": "Email has more than one H1. Use H1 once for the main heading.",
	"a11y.link-empty": "A link in this block has no text and no described image.",
	"a11y.link-vague-text": "Link text \"{text}\" is vague. Describe the destination instead.",
	"a11y.link-href-empty": "A link in this block has an empty or '#' href.",
	"a11y.link-target-blank-no-rel": "Link opens in a new tab but is missing rel=\"noopener\" — add it to prevent the destination from accessing window.opener.",
	"a11y.text-all-caps": "Long all-caps text is harder to read for everyone. Use sentence case.",
	"a11y.text-low-contrast": "Heading contrast is {ratio}:1; WCAG AA requires at least {required}:1.",
	"a11y.text-too-small": "Text is {size}px; aim for at least {min}px.",
	"a11y.button-vague-label": "Button label \"{text}\" is vague. Describe the action.",
	"a11y.button-touch-target": "Button is roughly {height}px tall; aim for at least {min}px to avoid mis-taps on mobile.",
	"a11y.button-low-contrast": "Button text contrast is {ratio}:1; WCAG AA requires at least {required}:1.",
	"a11y.missing-preheader": "No preheader text set. Inboxes will fall back to fragments of the first block."
}, ce = /* @__PURE__ */ Object.assign({
	"./de.ts": ae,
	"./en.ts": se
}), x = {};
for (let e in ce) {
	let t = /\.\/([^/]+)\.ts$/.exec(e);
	if (!t) continue;
	let n = t[1];
	n !== "index" && (x[n] = ce[e].default);
}
function le(e) {
	return x[e.split("-")[0]?.toLowerCase() ?? "en"] ?? x.en ?? b;
}
function ue(e, t, n) {
	let r = le(e)[t] ?? b[t];
	return n ? r.replace(/\{(\w+)\}/g, (e, t) => {
		let r = n[t];
		return r === void 0 ? `{${t}}` : String(r);
	}) : r;
}
var de = {
	meta: {
		id: "a11y.img-missing-alt",
		severity: "error"
	},
	block(e) {
		return !r(e) || e.decorative === !0 || (e.alt?.trim() ?? "") !== "" || (e.src ?? "").trim() === "" ? null : { blockId: e.id };
	}
}, fe = {
	id: "a11y.img-alt-is-filename",
	severity: "warning"
}, pe = [
	/\.(jpe?g|png|gif|webp|svg)$/i,
	/^IMG[_-]?\d+/i,
	/^Untitled/i,
	/^Screen[\s_-]?Shot/i,
	/^DSC[_-]?\d+/i
], me = {
	meta: fe,
	block(e) {
		if (!r(e) || e.decorative === !0) return null;
		let t = e.alt?.trim() ?? "";
		return t === "" || !pe.some((e) => e.test(t)) ? null : {
			blockId: e.id,
			params: { alt: t },
			fix: {
				description: "Clear alt text",
				apply: (t) => t.updateBlock(e.id, { alt: "" })
			}
		};
	}
}, he = {
	meta: {
		id: "a11y.img-alt-too-long",
		severity: "warning"
	},
	block(e, t, n) {
		if (!r(e) || e.decorative === !0) return null;
		let i = e.alt ?? "";
		return i.length <= n.thresholds.altMaxLength ? null : {
			blockId: e.id,
			params: {
				length: i.length,
				max: n.thresholds.altMaxLength
			}
		};
	}
}, ge = {
	meta: {
		id: "a11y.img-decorative-needs-empty-alt",
		severity: "info"
	},
	block(e) {
		return !r(e) || e.decorative !== !0 || (e.alt ?? "") === "" ? null : {
			blockId: e.id,
			fix: {
				description: "Clear alt text",
				apply: (t) => t.updateBlock(e.id, { alt: "" })
			}
		};
	}
}, _e = /* @__PURE__ */ e({ default: () => ve }), ve = {
	vagueLinkText: [
		"hier klicken",
		"hier",
		"mehr lesen",
		"mehr",
		"weiter",
		"weiterlesen",
		"siehe mehr",
		"dies",
		"dieser link",
		"link",
		"klick"
	],
	vagueButtonLabels: [
		"hier klicken",
		"klicken",
		"senden",
		"los",
		"ok",
		"okay",
		"ja",
		"nein"
	],
	linkedImageActionHints: [
		"kaufen",
		"shoppen",
		"ansehen",
		"lesen",
		"lernen",
		"öffnen",
		"los",
		"sehen",
		"entdecken",
		"erkunden",
		"stöbern",
		"herunterladen",
		"holen",
		"abholen",
		"einlösen",
		"anschauen",
		"jetzt"
	]
}, ye = /* @__PURE__ */ e({ default: () => be }), be = {
	vagueLinkText: [
		"click here",
		"here",
		"read more",
		"more",
		"learn more",
		"see more",
		"this",
		"this link",
		"link",
		"click"
	],
	vagueButtonLabels: [
		"click here",
		"click",
		"submit",
		"go",
		"ok",
		"okay",
		"yes",
		"no"
	],
	linkedImageActionHints: [
		"buy",
		"shop",
		"view",
		"read",
		"learn",
		"open",
		"go",
		"see",
		"explore",
		"discover",
		"browse",
		"download",
		"get",
		"claim",
		"redeem",
		"watch"
	]
}, xe = /* @__PURE__ */ Object.assign({
	"./de.ts": _e,
	"./en.ts": ye
}), Se = {};
for (let e in xe) {
	let t = /\.\/([^/]+)\.ts$/.exec(e);
	if (!t) continue;
	let n = t[1];
	n !== "index" && (Se[n] = xe[e].default);
}
function S(e) {
	return Ce;
}
function C(e) {
	let t = /* @__PURE__ */ new Set();
	for (let n of Object.values(Se)) for (let r of e(n)) t.add(r);
	return Array.from(t);
}
var Ce = {
	vagueLinkText: C((e) => e.vagueLinkText),
	vagueButtonLabels: C((e) => e.vagueButtonLabels),
	linkedImageActionHints: C((e) => e.linkedImageActionHints)
};
function we(e) {
	return e.toLowerCase().replace(/\s+/g, " ").replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu, "").trim();
}
var Te = {
	meta: {
		id: "a11y.img-linked-no-context",
		severity: "warning"
	},
	block(e, t, n) {
		if (!r(e) || e.decorative === !0 || !e.linkUrl || e.linkUrl.trim() === "") return null;
		let i = (e.alt ?? "").trim();
		if (i === "") return null;
		let a = i.toLocaleLowerCase().split(/[^\p{L}\p{N}]+/u).filter(Boolean), o = S(n.locale).linkedImageActionHints;
		return a.some((e) => o.includes(e)) ? null : { blockId: e.id };
	}
}, Ee = new Uint16Array("ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTǇǋǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻\"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉ǲኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻ǲᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤĳạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ﬃɩᾹ\0\0᾽g;耀ﬀig;耀ﬄ;쀀𝔣lig;耀ﬁlig;쀀fjƀaltῙ῜ῡt;晭ig;耀ﬂns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒α‚‰‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସǳ⧟\0⧣p肻\xA0ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗǈⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼ǲ㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌".split("").map((e) => e.charCodeAt(0))), w = new Uint16Array("Ȁaglq	\x1Bɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((e) => e.charCodeAt(0))), De = new Map([
	[0, 65533],
	[128, 8364],
	[130, 8218],
	[131, 402],
	[132, 8222],
	[133, 8230],
	[134, 8224],
	[135, 8225],
	[136, 710],
	[137, 8240],
	[138, 352],
	[139, 8249],
	[140, 338],
	[142, 381],
	[145, 8216],
	[146, 8217],
	[147, 8220],
	[148, 8221],
	[149, 8226],
	[150, 8211],
	[151, 8212],
	[152, 732],
	[153, 8482],
	[154, 353],
	[155, 8250],
	[156, 339],
	[158, 382],
	[159, 376]
]), T = String.fromCodePoint ?? function(e) {
	let t = "";
	return e > 65535 && (e -= 65536, t += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | e & 1023), t += String.fromCharCode(e), t;
};
function Oe(e) {
	return e >= 55296 && e <= 57343 || e > 1114111 ? 65533 : De.get(e) ?? e;
}
//#endregion
//#region ../../node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js
var E;
(function(e) {
	e[e.NUM = 35] = "NUM", e[e.SEMI = 59] = "SEMI", e[e.EQUALS = 61] = "EQUALS", e[e.ZERO = 48] = "ZERO", e[e.NINE = 57] = "NINE", e[e.LOWER_A = 97] = "LOWER_A", e[e.LOWER_F = 102] = "LOWER_F", e[e.LOWER_X = 120] = "LOWER_X", e[e.LOWER_Z = 122] = "LOWER_Z", e[e.UPPER_A = 65] = "UPPER_A", e[e.UPPER_F = 70] = "UPPER_F", e[e.UPPER_Z = 90] = "UPPER_Z";
})(E ||= {});
var ke = 32, D;
(function(e) {
	e[e.VALUE_LENGTH = 49152] = "VALUE_LENGTH", e[e.BRANCH_LENGTH = 16256] = "BRANCH_LENGTH", e[e.JUMP_TABLE = 127] = "JUMP_TABLE";
})(D ||= {});
function O(e) {
	return e >= E.ZERO && e <= E.NINE;
}
function Ae(e) {
	return e >= E.UPPER_A && e <= E.UPPER_F || e >= E.LOWER_A && e <= E.LOWER_F;
}
function je(e) {
	return e >= E.UPPER_A && e <= E.UPPER_Z || e >= E.LOWER_A && e <= E.LOWER_Z || O(e);
}
function Me(e) {
	return e === E.EQUALS || je(e);
}
var k;
(function(e) {
	e[e.EntityStart = 0] = "EntityStart", e[e.NumericStart = 1] = "NumericStart", e[e.NumericDecimal = 2] = "NumericDecimal", e[e.NumericHex = 3] = "NumericHex", e[e.NamedEntity = 4] = "NamedEntity";
})(k ||= {});
var A;
(function(e) {
	e[e.Legacy = 0] = "Legacy", e[e.Strict = 1] = "Strict", e[e.Attribute = 2] = "Attribute";
})(A ||= {});
var j = class {
	constructor(e, t, n) {
		this.decodeTree = e, this.emitCodePoint = t, this.errors = n, this.state = k.EntityStart, this.consumed = 1, this.result = 0, this.treeIndex = 0, this.excess = 1, this.decodeMode = A.Strict;
	}
	startEntity(e) {
		this.decodeMode = e, this.state = k.EntityStart, this.result = 0, this.treeIndex = 0, this.excess = 1, this.consumed = 1;
	}
	write(e, t) {
		switch (this.state) {
			case k.EntityStart: return e.charCodeAt(t) === E.NUM ? (this.state = k.NumericStart, this.consumed += 1, this.stateNumericStart(e, t + 1)) : (this.state = k.NamedEntity, this.stateNamedEntity(e, t));
			case k.NumericStart: return this.stateNumericStart(e, t);
			case k.NumericDecimal: return this.stateNumericDecimal(e, t);
			case k.NumericHex: return this.stateNumericHex(e, t);
			case k.NamedEntity: return this.stateNamedEntity(e, t);
		}
	}
	stateNumericStart(e, t) {
		return t >= e.length ? -1 : (e.charCodeAt(t) | ke) === E.LOWER_X ? (this.state = k.NumericHex, this.consumed += 1, this.stateNumericHex(e, t + 1)) : (this.state = k.NumericDecimal, this.stateNumericDecimal(e, t));
	}
	addToNumericResult(e, t, n, r) {
		if (t !== n) {
			let i = n - t;
			this.result = this.result * r ** +i + parseInt(e.substr(t, i), r), this.consumed += i;
		}
	}
	stateNumericHex(e, t) {
		let n = t;
		for (; t < e.length;) {
			let r = e.charCodeAt(t);
			if (O(r) || Ae(r)) t += 1;
			else return this.addToNumericResult(e, n, t, 16), this.emitNumericEntity(r, 3);
		}
		return this.addToNumericResult(e, n, t, 16), -1;
	}
	stateNumericDecimal(e, t) {
		let n = t;
		for (; t < e.length;) {
			let r = e.charCodeAt(t);
			if (O(r)) t += 1;
			else return this.addToNumericResult(e, n, t, 10), this.emitNumericEntity(r, 2);
		}
		return this.addToNumericResult(e, n, t, 10), -1;
	}
	emitNumericEntity(e, t) {
		var n;
		if (this.consumed <= t) return (n = this.errors) == null || n.absenceOfDigitsInNumericCharacterReference(this.consumed), 0;
		if (e === E.SEMI) this.consumed += 1;
		else if (this.decodeMode === A.Strict) return 0;
		return this.emitCodePoint(Oe(this.result), this.consumed), this.errors && (e !== E.SEMI && this.errors.missingSemicolonAfterCharacterReference(), this.errors.validateNumericCharacterReference(this.result)), this.consumed;
	}
	stateNamedEntity(e, t) {
		let { decodeTree: n } = this, r = n[this.treeIndex], i = (r & D.VALUE_LENGTH) >> 14;
		for (; t < e.length; t++, this.excess++) {
			let a = e.charCodeAt(t);
			if (this.treeIndex = Pe(n, r, this.treeIndex + Math.max(1, i), a), this.treeIndex < 0) return this.result === 0 || this.decodeMode === A.Attribute && (i === 0 || Me(a)) ? 0 : this.emitNotTerminatedNamedEntity();
			if (r = n[this.treeIndex], i = (r & D.VALUE_LENGTH) >> 14, i !== 0) {
				if (a === E.SEMI) return this.emitNamedEntityData(this.treeIndex, i, this.consumed + this.excess);
				this.decodeMode !== A.Strict && (this.result = this.treeIndex, this.consumed += this.excess, this.excess = 0);
			}
		}
		return -1;
	}
	emitNotTerminatedNamedEntity() {
		var e;
		let { result: t, decodeTree: n } = this, r = (n[t] & D.VALUE_LENGTH) >> 14;
		return this.emitNamedEntityData(t, r, this.consumed), (e = this.errors) == null || e.missingSemicolonAfterCharacterReference(), this.consumed;
	}
	emitNamedEntityData(e, t, n) {
		let { decodeTree: r } = this;
		return this.emitCodePoint(t === 1 ? r[e] & ~D.VALUE_LENGTH : r[e + 1], n), t === 3 && this.emitCodePoint(r[e + 2], n), n;
	}
	end() {
		var e;
		switch (this.state) {
			case k.NamedEntity: return this.result !== 0 && (this.decodeMode !== A.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
			case k.NumericDecimal: return this.emitNumericEntity(0, 2);
			case k.NumericHex: return this.emitNumericEntity(0, 3);
			case k.NumericStart: return (e = this.errors) == null || e.absenceOfDigitsInNumericCharacterReference(this.consumed), 0;
			case k.EntityStart: return 0;
		}
	}
};
function Ne(e) {
	let t = "", n = new j(e, (e) => t += T(e));
	return function(e, r) {
		let i = 0, a = 0;
		for (; (a = e.indexOf("&", a)) >= 0;) {
			t += e.slice(i, a), n.startEntity(r);
			let o = n.write(e, a + 1);
			if (o < 0) {
				i = a + n.end();
				break;
			}
			i = a + o, a = o === 0 ? i + 1 : i;
		}
		let o = t + e.slice(i);
		return t = "", o;
	};
}
function Pe(e, t, n, r) {
	let i = (t & D.BRANCH_LENGTH) >> 7, a = t & D.JUMP_TABLE;
	if (i === 0) return a !== 0 && r === a ? n : -1;
	if (a) {
		let t = r - a;
		return t < 0 || t >= i ? -1 : e[n + t] - 1;
	}
	let o = n, s = o + i - 1;
	for (; o <= s;) {
		let t = o + s >>> 1, n = e[t];
		if (n < r) o = t + 1;
		else if (n > r) s = t - 1;
		else return e[t + i];
	}
	return -1;
}
Ne(Ee), Ne(w);
//#endregion
//#region ../../node_modules/.pnpm/htmlparser2@9.1.0/node_modules/htmlparser2/lib/esm/Tokenizer.js
var M;
(function(e) {
	e[e.Tab = 9] = "Tab", e[e.NewLine = 10] = "NewLine", e[e.FormFeed = 12] = "FormFeed", e[e.CarriageReturn = 13] = "CarriageReturn", e[e.Space = 32] = "Space", e[e.ExclamationMark = 33] = "ExclamationMark", e[e.Number = 35] = "Number", e[e.Amp = 38] = "Amp", e[e.SingleQuote = 39] = "SingleQuote", e[e.DoubleQuote = 34] = "DoubleQuote", e[e.Dash = 45] = "Dash", e[e.Slash = 47] = "Slash", e[e.Zero = 48] = "Zero", e[e.Nine = 57] = "Nine", e[e.Semi = 59] = "Semi", e[e.Lt = 60] = "Lt", e[e.Eq = 61] = "Eq", e[e.Gt = 62] = "Gt", e[e.Questionmark = 63] = "Questionmark", e[e.UpperA = 65] = "UpperA", e[e.LowerA = 97] = "LowerA", e[e.UpperF = 70] = "UpperF", e[e.LowerF = 102] = "LowerF", e[e.UpperZ = 90] = "UpperZ", e[e.LowerZ = 122] = "LowerZ", e[e.LowerX = 120] = "LowerX", e[e.OpeningSquareBracket = 91] = "OpeningSquareBracket";
})(M ||= {});
var N;
(function(e) {
	e[e.Text = 1] = "Text", e[e.BeforeTagName = 2] = "BeforeTagName", e[e.InTagName = 3] = "InTagName", e[e.InSelfClosingTag = 4] = "InSelfClosingTag", e[e.BeforeClosingTagName = 5] = "BeforeClosingTagName", e[e.InClosingTagName = 6] = "InClosingTagName", e[e.AfterClosingTagName = 7] = "AfterClosingTagName", e[e.BeforeAttributeName = 8] = "BeforeAttributeName", e[e.InAttributeName = 9] = "InAttributeName", e[e.AfterAttributeName = 10] = "AfterAttributeName", e[e.BeforeAttributeValue = 11] = "BeforeAttributeValue", e[e.InAttributeValueDq = 12] = "InAttributeValueDq", e[e.InAttributeValueSq = 13] = "InAttributeValueSq", e[e.InAttributeValueNq = 14] = "InAttributeValueNq", e[e.BeforeDeclaration = 15] = "BeforeDeclaration", e[e.InDeclaration = 16] = "InDeclaration", e[e.InProcessingInstruction = 17] = "InProcessingInstruction", e[e.BeforeComment = 18] = "BeforeComment", e[e.CDATASequence = 19] = "CDATASequence", e[e.InSpecialComment = 20] = "InSpecialComment", e[e.InCommentLike = 21] = "InCommentLike", e[e.BeforeSpecialS = 22] = "BeforeSpecialS", e[e.BeforeSpecialT = 23] = "BeforeSpecialT", e[e.SpecialStartSequence = 24] = "SpecialStartSequence", e[e.InSpecialTag = 25] = "InSpecialTag", e[e.InEntity = 26] = "InEntity";
})(N ||= {});
function P(e) {
	return e === M.Space || e === M.NewLine || e === M.Tab || e === M.FormFeed || e === M.CarriageReturn;
}
function F(e) {
	return e === M.Slash || e === M.Gt || P(e);
}
function Fe(e) {
	return e >= M.LowerA && e <= M.LowerZ || e >= M.UpperA && e <= M.UpperZ;
}
var I;
(function(e) {
	e[e.NoValue = 0] = "NoValue", e[e.Unquoted = 1] = "Unquoted", e[e.Single = 2] = "Single", e[e.Double = 3] = "Double";
})(I ||= {});
var L = {
	Cdata: new Uint8Array([
		67,
		68,
		65,
		84,
		65,
		91
	]),
	CdataEnd: new Uint8Array([
		93,
		93,
		62
	]),
	CommentEnd: new Uint8Array([
		45,
		45,
		62
	]),
	ScriptEnd: new Uint8Array([
		60,
		47,
		115,
		99,
		114,
		105,
		112,
		116
	]),
	StyleEnd: new Uint8Array([
		60,
		47,
		115,
		116,
		121,
		108,
		101
	]),
	TitleEnd: new Uint8Array([
		60,
		47,
		116,
		105,
		116,
		108,
		101
	]),
	TextareaEnd: new Uint8Array([
		60,
		47,
		116,
		101,
		120,
		116,
		97,
		114,
		101,
		97
	])
}, Ie = class {
	constructor({ xmlMode: e = !1, decodeEntities: t = !0 }, n) {
		this.cbs = n, this.state = N.Text, this.buffer = "", this.sectionStart = 0, this.index = 0, this.entityStart = 0, this.baseState = N.Text, this.isSpecial = !1, this.running = !0, this.offset = 0, this.currentSequence = void 0, this.sequenceIndex = 0, this.xmlMode = e, this.decodeEntities = t, this.entityDecoder = new j(e ? w : Ee, (e, t) => this.emitCodePoint(e, t));
	}
	reset() {
		this.state = N.Text, this.buffer = "", this.sectionStart = 0, this.index = 0, this.baseState = N.Text, this.currentSequence = void 0, this.running = !0, this.offset = 0;
	}
	write(e) {
		this.offset += this.buffer.length, this.buffer = e, this.parse();
	}
	end() {
		this.running && this.finish();
	}
	pause() {
		this.running = !1;
	}
	resume() {
		this.running = !0, this.index < this.buffer.length + this.offset && this.parse();
	}
	stateText(e) {
		e === M.Lt || !this.decodeEntities && this.fastForwardTo(M.Lt) ? (this.index > this.sectionStart && this.cbs.ontext(this.sectionStart, this.index), this.state = N.BeforeTagName, this.sectionStart = this.index) : this.decodeEntities && e === M.Amp && this.startEntity();
	}
	stateSpecialStartSequence(e) {
		let t = this.sequenceIndex === this.currentSequence.length;
		if (!(t ? F(e) : (e | 32) === this.currentSequence[this.sequenceIndex])) this.isSpecial = !1;
		else if (!t) {
			this.sequenceIndex++;
			return;
		}
		this.sequenceIndex = 0, this.state = N.InTagName, this.stateInTagName(e);
	}
	stateInSpecialTag(e) {
		if (this.sequenceIndex === this.currentSequence.length) {
			if (e === M.Gt || P(e)) {
				let t = this.index - this.currentSequence.length;
				if (this.sectionStart < t) {
					let e = this.index;
					this.index = t, this.cbs.ontext(this.sectionStart, t), this.index = e;
				}
				this.isSpecial = !1, this.sectionStart = t + 2, this.stateInClosingTagName(e);
				return;
			}
			this.sequenceIndex = 0;
		}
		(e | 32) === this.currentSequence[this.sequenceIndex] ? this.sequenceIndex += 1 : this.sequenceIndex === 0 ? this.currentSequence === L.TitleEnd ? this.decodeEntities && e === M.Amp && this.startEntity() : this.fastForwardTo(M.Lt) && (this.sequenceIndex = 1) : this.sequenceIndex = Number(e === M.Lt);
	}
	stateCDATASequence(e) {
		e === L.Cdata[this.sequenceIndex] ? ++this.sequenceIndex === L.Cdata.length && (this.state = N.InCommentLike, this.currentSequence = L.CdataEnd, this.sequenceIndex = 0, this.sectionStart = this.index + 1) : (this.sequenceIndex = 0, this.state = N.InDeclaration, this.stateInDeclaration(e));
	}
	fastForwardTo(e) {
		for (; ++this.index < this.buffer.length + this.offset;) if (this.buffer.charCodeAt(this.index - this.offset) === e) return !0;
		return this.index = this.buffer.length + this.offset - 1, !1;
	}
	stateInCommentLike(e) {
		e === this.currentSequence[this.sequenceIndex] ? ++this.sequenceIndex === this.currentSequence.length && (this.currentSequence === L.CdataEnd ? this.cbs.oncdata(this.sectionStart, this.index, 2) : this.cbs.oncomment(this.sectionStart, this.index, 2), this.sequenceIndex = 0, this.sectionStart = this.index + 1, this.state = N.Text) : this.sequenceIndex === 0 ? this.fastForwardTo(this.currentSequence[0]) && (this.sequenceIndex = 1) : e !== this.currentSequence[this.sequenceIndex - 1] && (this.sequenceIndex = 0);
	}
	isTagStartChar(e) {
		return this.xmlMode ? !F(e) : Fe(e);
	}
	startSpecial(e, t) {
		this.isSpecial = !0, this.currentSequence = e, this.sequenceIndex = t, this.state = N.SpecialStartSequence;
	}
	stateBeforeTagName(e) {
		if (e === M.ExclamationMark) this.state = N.BeforeDeclaration, this.sectionStart = this.index + 1;
		else if (e === M.Questionmark) this.state = N.InProcessingInstruction, this.sectionStart = this.index + 1;
		else if (this.isTagStartChar(e)) {
			let t = e | 32;
			this.sectionStart = this.index, this.xmlMode ? this.state = N.InTagName : t === L.ScriptEnd[2] ? this.state = N.BeforeSpecialS : t === L.TitleEnd[2] ? this.state = N.BeforeSpecialT : this.state = N.InTagName;
		} else e === M.Slash ? this.state = N.BeforeClosingTagName : (this.state = N.Text, this.stateText(e));
	}
	stateInTagName(e) {
		F(e) && (this.cbs.onopentagname(this.sectionStart, this.index), this.sectionStart = -1, this.state = N.BeforeAttributeName, this.stateBeforeAttributeName(e));
	}
	stateBeforeClosingTagName(e) {
		P(e) || (e === M.Gt ? this.state = N.Text : (this.state = this.isTagStartChar(e) ? N.InClosingTagName : N.InSpecialComment, this.sectionStart = this.index));
	}
	stateInClosingTagName(e) {
		(e === M.Gt || P(e)) && (this.cbs.onclosetag(this.sectionStart, this.index), this.sectionStart = -1, this.state = N.AfterClosingTagName, this.stateAfterClosingTagName(e));
	}
	stateAfterClosingTagName(e) {
		(e === M.Gt || this.fastForwardTo(M.Gt)) && (this.state = N.Text, this.sectionStart = this.index + 1);
	}
	stateBeforeAttributeName(e) {
		e === M.Gt ? (this.cbs.onopentagend(this.index), this.isSpecial ? (this.state = N.InSpecialTag, this.sequenceIndex = 0) : this.state = N.Text, this.sectionStart = this.index + 1) : e === M.Slash ? this.state = N.InSelfClosingTag : P(e) || (this.state = N.InAttributeName, this.sectionStart = this.index);
	}
	stateInSelfClosingTag(e) {
		e === M.Gt ? (this.cbs.onselfclosingtag(this.index), this.state = N.Text, this.sectionStart = this.index + 1, this.isSpecial = !1) : P(e) || (this.state = N.BeforeAttributeName, this.stateBeforeAttributeName(e));
	}
	stateInAttributeName(e) {
		(e === M.Eq || F(e)) && (this.cbs.onattribname(this.sectionStart, this.index), this.sectionStart = this.index, this.state = N.AfterAttributeName, this.stateAfterAttributeName(e));
	}
	stateAfterAttributeName(e) {
		e === M.Eq ? this.state = N.BeforeAttributeValue : e === M.Slash || e === M.Gt ? (this.cbs.onattribend(I.NoValue, this.sectionStart), this.sectionStart = -1, this.state = N.BeforeAttributeName, this.stateBeforeAttributeName(e)) : P(e) || (this.cbs.onattribend(I.NoValue, this.sectionStart), this.state = N.InAttributeName, this.sectionStart = this.index);
	}
	stateBeforeAttributeValue(e) {
		e === M.DoubleQuote ? (this.state = N.InAttributeValueDq, this.sectionStart = this.index + 1) : e === M.SingleQuote ? (this.state = N.InAttributeValueSq, this.sectionStart = this.index + 1) : P(e) || (this.sectionStart = this.index, this.state = N.InAttributeValueNq, this.stateInAttributeValueNoQuotes(e));
	}
	handleInAttributeValue(e, t) {
		e === t || !this.decodeEntities && this.fastForwardTo(t) ? (this.cbs.onattribdata(this.sectionStart, this.index), this.sectionStart = -1, this.cbs.onattribend(t === M.DoubleQuote ? I.Double : I.Single, this.index + 1), this.state = N.BeforeAttributeName) : this.decodeEntities && e === M.Amp && this.startEntity();
	}
	stateInAttributeValueDoubleQuotes(e) {
		this.handleInAttributeValue(e, M.DoubleQuote);
	}
	stateInAttributeValueSingleQuotes(e) {
		this.handleInAttributeValue(e, M.SingleQuote);
	}
	stateInAttributeValueNoQuotes(e) {
		P(e) || e === M.Gt ? (this.cbs.onattribdata(this.sectionStart, this.index), this.sectionStart = -1, this.cbs.onattribend(I.Unquoted, this.index), this.state = N.BeforeAttributeName, this.stateBeforeAttributeName(e)) : this.decodeEntities && e === M.Amp && this.startEntity();
	}
	stateBeforeDeclaration(e) {
		e === M.OpeningSquareBracket ? (this.state = N.CDATASequence, this.sequenceIndex = 0) : this.state = e === M.Dash ? N.BeforeComment : N.InDeclaration;
	}
	stateInDeclaration(e) {
		(e === M.Gt || this.fastForwardTo(M.Gt)) && (this.cbs.ondeclaration(this.sectionStart, this.index), this.state = N.Text, this.sectionStart = this.index + 1);
	}
	stateInProcessingInstruction(e) {
		(e === M.Gt || this.fastForwardTo(M.Gt)) && (this.cbs.onprocessinginstruction(this.sectionStart, this.index), this.state = N.Text, this.sectionStart = this.index + 1);
	}
	stateBeforeComment(e) {
		e === M.Dash ? (this.state = N.InCommentLike, this.currentSequence = L.CommentEnd, this.sequenceIndex = 2, this.sectionStart = this.index + 1) : this.state = N.InDeclaration;
	}
	stateInSpecialComment(e) {
		(e === M.Gt || this.fastForwardTo(M.Gt)) && (this.cbs.oncomment(this.sectionStart, this.index, 0), this.state = N.Text, this.sectionStart = this.index + 1);
	}
	stateBeforeSpecialS(e) {
		let t = e | 32;
		t === L.ScriptEnd[3] ? this.startSpecial(L.ScriptEnd, 4) : t === L.StyleEnd[3] ? this.startSpecial(L.StyleEnd, 4) : (this.state = N.InTagName, this.stateInTagName(e));
	}
	stateBeforeSpecialT(e) {
		let t = e | 32;
		t === L.TitleEnd[3] ? this.startSpecial(L.TitleEnd, 4) : t === L.TextareaEnd[3] ? this.startSpecial(L.TextareaEnd, 4) : (this.state = N.InTagName, this.stateInTagName(e));
	}
	startEntity() {
		this.baseState = this.state, this.state = N.InEntity, this.entityStart = this.index, this.entityDecoder.startEntity(this.xmlMode ? A.Strict : this.baseState === N.Text || this.baseState === N.InSpecialTag ? A.Legacy : A.Attribute);
	}
	stateInEntity() {
		let e = this.entityDecoder.write(this.buffer, this.index - this.offset);
		e >= 0 ? (this.state = this.baseState, e === 0 && (this.index = this.entityStart)) : this.index = this.offset + this.buffer.length - 1;
	}
	cleanup() {
		this.running && this.sectionStart !== this.index && (this.state === N.Text || this.state === N.InSpecialTag && this.sequenceIndex === 0 ? (this.cbs.ontext(this.sectionStart, this.index), this.sectionStart = this.index) : (this.state === N.InAttributeValueDq || this.state === N.InAttributeValueSq || this.state === N.InAttributeValueNq) && (this.cbs.onattribdata(this.sectionStart, this.index), this.sectionStart = this.index));
	}
	shouldContinue() {
		return this.index < this.buffer.length + this.offset && this.running;
	}
	parse() {
		for (; this.shouldContinue();) {
			let e = this.buffer.charCodeAt(this.index - this.offset);
			switch (this.state) {
				case N.Text:
					this.stateText(e);
					break;
				case N.SpecialStartSequence:
					this.stateSpecialStartSequence(e);
					break;
				case N.InSpecialTag:
					this.stateInSpecialTag(e);
					break;
				case N.CDATASequence:
					this.stateCDATASequence(e);
					break;
				case N.InAttributeValueDq:
					this.stateInAttributeValueDoubleQuotes(e);
					break;
				case N.InAttributeName:
					this.stateInAttributeName(e);
					break;
				case N.InCommentLike:
					this.stateInCommentLike(e);
					break;
				case N.InSpecialComment:
					this.stateInSpecialComment(e);
					break;
				case N.BeforeAttributeName:
					this.stateBeforeAttributeName(e);
					break;
				case N.InTagName:
					this.stateInTagName(e);
					break;
				case N.InClosingTagName:
					this.stateInClosingTagName(e);
					break;
				case N.BeforeTagName:
					this.stateBeforeTagName(e);
					break;
				case N.AfterAttributeName:
					this.stateAfterAttributeName(e);
					break;
				case N.InAttributeValueSq:
					this.stateInAttributeValueSingleQuotes(e);
					break;
				case N.BeforeAttributeValue:
					this.stateBeforeAttributeValue(e);
					break;
				case N.BeforeClosingTagName:
					this.stateBeforeClosingTagName(e);
					break;
				case N.AfterClosingTagName:
					this.stateAfterClosingTagName(e);
					break;
				case N.BeforeSpecialS:
					this.stateBeforeSpecialS(e);
					break;
				case N.BeforeSpecialT:
					this.stateBeforeSpecialT(e);
					break;
				case N.InAttributeValueNq:
					this.stateInAttributeValueNoQuotes(e);
					break;
				case N.InSelfClosingTag:
					this.stateInSelfClosingTag(e);
					break;
				case N.InDeclaration:
					this.stateInDeclaration(e);
					break;
				case N.BeforeDeclaration:
					this.stateBeforeDeclaration(e);
					break;
				case N.BeforeComment:
					this.stateBeforeComment(e);
					break;
				case N.InProcessingInstruction:
					this.stateInProcessingInstruction(e);
					break;
				case N.InEntity:
					this.stateInEntity();
					break;
			}
			this.index++;
		}
		this.cleanup();
	}
	finish() {
		this.state === N.InEntity && (this.entityDecoder.end(), this.state = this.baseState), this.handleTrailingData(), this.cbs.onend();
	}
	handleTrailingData() {
		let e = this.buffer.length + this.offset;
		this.sectionStart >= e || (this.state === N.InCommentLike ? this.currentSequence === L.CdataEnd ? this.cbs.oncdata(this.sectionStart, e, 0) : this.cbs.oncomment(this.sectionStart, e, 0) : this.state === N.InTagName || this.state === N.BeforeAttributeName || this.state === N.BeforeAttributeValue || this.state === N.AfterAttributeName || this.state === N.InAttributeName || this.state === N.InAttributeValueSq || this.state === N.InAttributeValueDq || this.state === N.InAttributeValueNq || this.state === N.InClosingTagName || this.cbs.ontext(this.sectionStart, e));
	}
	emitCodePoint(e, t) {
		this.baseState !== N.Text && this.baseState !== N.InSpecialTag ? (this.sectionStart < this.entityStart && this.cbs.onattribdata(this.sectionStart, this.entityStart), this.sectionStart = this.entityStart + t, this.index = this.sectionStart - 1, this.cbs.onattribentity(e)) : (this.sectionStart < this.entityStart && this.cbs.ontext(this.sectionStart, this.entityStart), this.sectionStart = this.entityStart + t, this.index = this.sectionStart - 1, this.cbs.ontextentity(e, this.sectionStart));
	}
}, R = new Set([
	"input",
	"option",
	"optgroup",
	"select",
	"button",
	"datalist",
	"textarea"
]), z = new Set(["p"]), B = new Set(["thead", "tbody"]), V = new Set(["dd", "dt"]), H = new Set(["rt", "rp"]), Le = new Map([
	["tr", new Set([
		"tr",
		"th",
		"td"
	])],
	["th", new Set(["th"])],
	["td", new Set([
		"thead",
		"th",
		"td"
	])],
	["body", new Set([
		"head",
		"link",
		"script"
	])],
	["li", new Set(["li"])],
	["p", z],
	["h1", z],
	["h2", z],
	["h3", z],
	["h4", z],
	["h5", z],
	["h6", z],
	["select", R],
	["input", R],
	["output", R],
	["button", R],
	["datalist", R],
	["textarea", R],
	["option", new Set(["option"])],
	["optgroup", new Set(["optgroup", "option"])],
	["dd", V],
	["dt", V],
	["address", z],
	["article", z],
	["aside", z],
	["blockquote", z],
	["details", z],
	["div", z],
	["dl", z],
	["fieldset", z],
	["figcaption", z],
	["figure", z],
	["footer", z],
	["form", z],
	["header", z],
	["hr", z],
	["main", z],
	["nav", z],
	["ol", z],
	["pre", z],
	["section", z],
	["table", z],
	["ul", z],
	["rt", H],
	["rp", H],
	["tbody", B],
	["tfoot", B]
]), Re = new Set([
	"area",
	"base",
	"basefont",
	"br",
	"col",
	"command",
	"embed",
	"frame",
	"hr",
	"img",
	"input",
	"isindex",
	"keygen",
	"link",
	"meta",
	"param",
	"source",
	"track",
	"wbr"
]), U = new Set(["math", "svg"]), W = new Set([
	"mi",
	"mo",
	"mn",
	"ms",
	"mtext",
	"annotation-xml",
	"foreignobject",
	"desc",
	"title"
]), ze = /\s|\//, G = class {
	constructor(e, t = {}) {
		var n, r;
		this.options = t, this.startIndex = 0, this.endIndex = 0, this.openTagStart = 0, this.tagname = "", this.attribname = "", this.attribvalue = "", this.attribs = null, this.stack = [], this.buffers = [], this.bufferOffset = 0, this.writeIndex = 0, this.ended = !1, this.cbs = e ?? {}, this.htmlMode = !this.options.xmlMode, this.lowerCaseTagNames = t.lowerCaseTags ?? this.htmlMode, this.lowerCaseAttributeNames = t.lowerCaseAttributeNames ?? this.htmlMode, this.recognizeSelfClosing = t.recognizeSelfClosing ?? !this.htmlMode, this.tokenizer = new (t.Tokenizer ?? Ie)(this.options, this), this.foreignContext = [!this.htmlMode], (r = (n = this.cbs).onparserinit) == null || r.call(n, this);
	}
	ontext(e, t) {
		var n, r;
		let i = this.getSlice(e, t);
		this.endIndex = t - 1, (r = (n = this.cbs).ontext) == null || r.call(n, i), this.startIndex = t;
	}
	ontextentity(e, t) {
		var n, r;
		this.endIndex = t - 1, (r = (n = this.cbs).ontext) == null || r.call(n, T(e)), this.startIndex = t;
	}
	isVoidElement(e) {
		return this.htmlMode && Re.has(e);
	}
	onopentagname(e, t) {
		this.endIndex = t;
		let n = this.getSlice(e, t);
		this.lowerCaseTagNames && (n = n.toLowerCase()), this.emitOpenTag(n);
	}
	emitOpenTag(e) {
		var t, n, r, i;
		this.openTagStart = this.startIndex, this.tagname = e;
		let a = this.htmlMode && Le.get(e);
		if (a) for (; this.stack.length > 0 && a.has(this.stack[0]);) {
			let e = this.stack.shift();
			(n = (t = this.cbs).onclosetag) == null || n.call(t, e, !0);
		}
		this.isVoidElement(e) || (this.stack.unshift(e), this.htmlMode && (U.has(e) ? this.foreignContext.unshift(!0) : W.has(e) && this.foreignContext.unshift(!1))), (i = (r = this.cbs).onopentagname) == null || i.call(r, e), this.cbs.onopentag && (this.attribs = {});
	}
	endOpenTag(e) {
		var t, n;
		this.startIndex = this.openTagStart, this.attribs &&= ((n = (t = this.cbs).onopentag) == null || n.call(t, this.tagname, this.attribs, e), null), this.cbs.onclosetag && this.isVoidElement(this.tagname) && this.cbs.onclosetag(this.tagname, !0), this.tagname = "";
	}
	onopentagend(e) {
		this.endIndex = e, this.endOpenTag(!1), this.startIndex = e + 1;
	}
	onclosetag(e, t) {
		var n, r, i, a, o, s, c, l;
		this.endIndex = t;
		let u = this.getSlice(e, t);
		if (this.lowerCaseTagNames && (u = u.toLowerCase()), this.htmlMode && (U.has(u) || W.has(u)) && this.foreignContext.shift(), this.isVoidElement(u)) this.htmlMode && u === "br" && ((a = (i = this.cbs).onopentagname) == null || a.call(i, "br"), (s = (o = this.cbs).onopentag) == null || s.call(o, "br", {}, !0), (l = (c = this.cbs).onclosetag) == null || l.call(c, "br", !1));
		else {
			let e = this.stack.indexOf(u);
			if (e !== -1) for (let t = 0; t <= e; t++) {
				let i = this.stack.shift();
				(r = (n = this.cbs).onclosetag) == null || r.call(n, i, t !== e);
			}
			else this.htmlMode && u === "p" && (this.emitOpenTag("p"), this.closeCurrentTag(!0));
		}
		this.startIndex = t + 1;
	}
	onselfclosingtag(e) {
		this.endIndex = e, this.recognizeSelfClosing || this.foreignContext[0] ? (this.closeCurrentTag(!1), this.startIndex = e + 1) : this.onopentagend(e);
	}
	closeCurrentTag(e) {
		var t, n;
		let r = this.tagname;
		this.endOpenTag(e), this.stack[0] === r && ((n = (t = this.cbs).onclosetag) == null || n.call(t, r, !e), this.stack.shift());
	}
	onattribname(e, t) {
		this.startIndex = e;
		let n = this.getSlice(e, t);
		this.attribname = this.lowerCaseAttributeNames ? n.toLowerCase() : n;
	}
	onattribdata(e, t) {
		this.attribvalue += this.getSlice(e, t);
	}
	onattribentity(e) {
		this.attribvalue += T(e);
	}
	onattribend(e, t) {
		var n, r;
		this.endIndex = t, (r = (n = this.cbs).onattribute) == null || r.call(n, this.attribname, this.attribvalue, e === I.Double ? "\"" : e === I.Single ? "'" : e === I.NoValue ? void 0 : null), this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname) && (this.attribs[this.attribname] = this.attribvalue), this.attribvalue = "";
	}
	getInstructionName(e) {
		let t = e.search(ze), n = t < 0 ? e : e.substr(0, t);
		return this.lowerCaseTagNames && (n = n.toLowerCase()), n;
	}
	ondeclaration(e, t) {
		this.endIndex = t;
		let n = this.getSlice(e, t);
		if (this.cbs.onprocessinginstruction) {
			let e = this.getInstructionName(n);
			this.cbs.onprocessinginstruction(`!${e}`, `!${n}`);
		}
		this.startIndex = t + 1;
	}
	onprocessinginstruction(e, t) {
		this.endIndex = t;
		let n = this.getSlice(e, t);
		if (this.cbs.onprocessinginstruction) {
			let e = this.getInstructionName(n);
			this.cbs.onprocessinginstruction(`?${e}`, `?${n}`);
		}
		this.startIndex = t + 1;
	}
	oncomment(e, t, n) {
		var r, i, a, o;
		this.endIndex = t, (i = (r = this.cbs).oncomment) == null || i.call(r, this.getSlice(e, t - n)), (o = (a = this.cbs).oncommentend) == null || o.call(a), this.startIndex = t + 1;
	}
	oncdata(e, t, n) {
		var r, i, a, o, s, c, l, u, d, f;
		this.endIndex = t;
		let p = this.getSlice(e, t - n);
		!this.htmlMode || this.options.recognizeCDATA ? ((i = (r = this.cbs).oncdatastart) == null || i.call(r), (o = (a = this.cbs).ontext) == null || o.call(a, p), (c = (s = this.cbs).oncdataend) == null || c.call(s)) : ((u = (l = this.cbs).oncomment) == null || u.call(l, `[CDATA[${p}]]`), (f = (d = this.cbs).oncommentend) == null || f.call(d)), this.startIndex = t + 1;
	}
	onend() {
		var e, t;
		if (this.cbs.onclosetag) {
			this.endIndex = this.startIndex;
			for (let e = 0; e < this.stack.length; e++) this.cbs.onclosetag(this.stack[e], !0);
		}
		(t = (e = this.cbs).onend) == null || t.call(e);
	}
	reset() {
		var e, t, n, r;
		(t = (e = this.cbs).onreset) == null || t.call(e), this.tokenizer.reset(), this.tagname = "", this.attribname = "", this.attribs = null, this.stack.length = 0, this.startIndex = 0, this.endIndex = 0, (r = (n = this.cbs).onparserinit) == null || r.call(n, this), this.buffers.length = 0, this.foreignContext.length = 0, this.foreignContext.unshift(!this.htmlMode), this.bufferOffset = 0, this.writeIndex = 0, this.ended = !1;
	}
	parseComplete(e) {
		this.reset(), this.end(e);
	}
	getSlice(e, t) {
		for (; e - this.bufferOffset >= this.buffers[0].length;) this.shiftBuffer();
		let n = this.buffers[0].slice(e - this.bufferOffset, t - this.bufferOffset);
		for (; t - this.bufferOffset > this.buffers[0].length;) this.shiftBuffer(), n += this.buffers[0].slice(0, t - this.bufferOffset);
		return n;
	}
	shiftBuffer() {
		this.bufferOffset += this.buffers[0].length, this.writeIndex--, this.buffers.shift();
	}
	write(e) {
		var t, n;
		if (this.ended) {
			(n = (t = this.cbs).onerror) == null || n.call(t, /* @__PURE__ */ Error(".write() after done!"));
			return;
		}
		this.buffers.push(e), this.tokenizer.running && (this.tokenizer.write(e), this.writeIndex++);
	}
	end(e) {
		var t, n;
		if (this.ended) {
			(n = (t = this.cbs).onerror) == null || n.call(t, /* @__PURE__ */ Error(".end() after done!"));
			return;
		}
		e && this.write(e), this.ended = !0, this.tokenizer.end();
	}
	pause() {
		this.tokenizer.pause();
	}
	resume() {
		for (this.tokenizer.resume(); this.tokenizer.running && this.writeIndex < this.buffers.length;) this.tokenizer.write(this.buffers[this.writeIndex++]);
		this.ended && this.tokenizer.end();
	}
	parseChunk(e) {
		this.write(e);
	}
	done(e) {
		this.end(e);
	}
};
//#endregion
//#region ../quality/src/html-utils.ts
function K(e) {
	let t = [], n = [], r = new G({
		onopentag(e, t) {
			if (e === "a") {
				n.push({
					anchor: {
						href: t.href ?? "",
						text: "",
						target: t.target ?? null,
						rel: t.rel ?? null,
						hasImageWithAlt: !1
					},
					buffer: ""
				});
				return;
			}
			e === "img" && n.length > 0 && (t.alt ?? "").trim() !== "" && (n[n.length - 1].anchor.hasImageWithAlt = !0);
		},
		ontext(e) {
			for (let t of n) t.buffer += e;
		},
		onclosetag(e) {
			if (e === "a" && n.length > 0) {
				let e = n.pop();
				e.anchor.text = e.buffer.trim(), t.push(e.anchor);
			}
		}
	});
	return r.write(e), r.end(), t;
}
function q(e) {
	let t = "", n = new G({ ontext(e) {
		t += e;
	} });
	return n.write(e), n.end(), t.trim();
}
var Be = {
	meta: {
		id: "a11y.heading-empty",
		severity: "error"
	},
	block(e) {
		return !l(e) || q(e.content ?? "") !== "" ? null : { blockId: e.id };
	}
}, Ve = {
	id: "a11y.heading-skip-level",
	severity: "error"
};
function He(e, n) {
	for (let r of e) {
		if (l(r)) {
			n.push(r);
			continue;
		}
		if (t(r)) for (let e of r.children) He(e, n);
	}
}
var Ue = {
	meta: Ve,
	template(e) {
		let t = [];
		He(e.blocks, t);
		let n = [], r = 0;
		for (let e of t) r !== 0 && e.level > r + 1 && n.push({
			blockId: e.id,
			params: {
				from: r,
				to: e.level
			}
		}), r = e.level;
		return n;
	}
}, We = {
	id: "a11y.heading-multiple-h1",
	severity: "warning"
};
function Ge(e, n) {
	for (let r of e) {
		if (l(r)) {
			n.push(r);
			continue;
		}
		if (t(r)) for (let e of r.children) Ge(e, n);
	}
}
var Ke = {
	meta: We,
	template(e) {
		let t = [];
		Ge(e.blocks, t);
		let n = t.filter((e) => e.level === 1);
		return n.length <= 1 ? [] : n.slice(1).map((e) => ({ blockId: e.id }));
	}
}, qe = {
	id: "a11y.link-empty",
	severity: "error"
};
function Je(e) {
	return d(e) || l(e) ? e.content : null;
}
var Ye = {
	meta: qe,
	block(e) {
		let t = Je(e);
		return t === null || !K(t).find((e) => e.text === "" && !e.hasImageWithAlt) ? null : { blockId: e.id };
	}
}, Xe = {
	id: "a11y.link-vague-text",
	severity: "warning"
};
function Ze(e) {
	return d(e) || l(e) ? e.content : null;
}
var Qe = {
	meta: Xe,
	block(e, t, n) {
		let r = Ze(e);
		if (r === null) return null;
		let i = S(n.locale).vagueLinkText, a = K(r).find((e) => {
			let t = we(e.text);
			return t !== "" && i.includes(t);
		});
		return a ? {
			blockId: e.id,
			params: { text: a.text }
		} : null;
	}
}, $e = {
	id: "a11y.link-href-empty",
	severity: "error"
};
function et(e) {
	return d(e) || l(e) ? e.content : null;
}
var tt = {
	meta: $e,
	block(e) {
		let t = et(e);
		return t === null || !K(t).find((e) => {
			let t = e.href.trim();
			return t === "" || t === "#";
		}) ? null : { blockId: e.id };
	}
}, nt = {
	id: "a11y.link-target-blank-no-rel",
	severity: "warning"
};
function rt(e) {
	return d(e) || l(e) ? e.content : null;
}
function it(e) {
	if (e === null) return !1;
	let t = e.toLowerCase().split(/\s+/);
	return t.includes("noopener") || t.includes("noreferrer");
}
var at = {
	meta: nt,
	block(e) {
		let t = rt(e);
		return t === null || !K(t).find((e) => e.target === "_blank" && !it(e.rel)) ? null : {
			blockId: e.id,
			fix: {
				description: "Add rel=\"noopener\"",
				apply: (t) => {
					if (!d(e) && !l(e)) return;
					let n = ct(e.content ?? "");
					t.updateBlock(e.id, { content: n });
				}
			}
		};
	}
}, J = /([^\s"'>/=]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g;
function ot(e) {
	let t = [], n = new RegExp(J.source, J.flags), r;
	for (; (r = n.exec(e)) !== null;) t.push({
		raw: r[0],
		name: r[1],
		value: r[2] ?? r[3] ?? r[4] ?? null,
		start: r.index
	});
	return t;
}
function st(e) {
	return e.some((e) => e.name.toLowerCase() === "target" && e.value !== null && e.value.toLowerCase() === "_blank");
}
function ct(e) {
	return e.replace(/<a\b([^>]*)>/gi, (e, t) => {
		let n = ot(t);
		if (!st(n)) return e;
		let r = n.find((e) => e.name.toLowerCase() === "rel");
		if (r) {
			let n = (r.value ?? "").toLowerCase().split(/\s+/);
			if (n.includes("noopener") || n.includes("noreferrer")) return e;
			let i = `${r.value ?? ""} noopener`.trim();
			return `<a${t.slice(0, r.start)}rel="${i}"${t.slice(r.start + r.raw.length)}>`;
		}
		return `<a${t} rel="noopener">`;
	});
}
var lt = {
	meta: {
		id: "a11y.text-all-caps",
		severity: "warning"
	},
	block(e, t, n) {
		if (!d(e) && !l(e)) return null;
		let r = q(e.content ?? "").replace(/[^\p{L}]/gu, "");
		return r.length < n.thresholds.allCapsMinLength || r !== r.toLocaleUpperCase() ? null : { blockId: e.id };
	}
}, ut = {
	meta: {
		id: "a11y.text-low-contrast",
		severity: "error"
	},
	block(e, t) {
		if (!l(e) || !g(e.color) || !g(t.resolvedBackgroundColor)) return null;
		let n = o[e.level] >= 24 ? 3 : 4.5, r = m(e.color, t.resolvedBackgroundColor);
		return Number.isNaN(r) || r >= n ? null : {
			blockId: e.id,
			params: {
				ratio: r.toFixed(2),
				required: n
			}
		};
	}
}, dt = {
	id: "a11y.text-too-small",
	severity: "warning"
};
function ft(e) {
	return c(e) || s(e) ? e.fontSize : null;
}
//#endregion
//#region ../quality/src/accessibility/index.ts
var pt = [
	de,
	me,
	he,
	ge,
	Te,
	Be,
	Ue,
	Ke,
	Ye,
	Qe,
	tt,
	at,
	lt,
	ut,
	{
		meta: dt,
		block(e, t, n) {
			let r = ft(e);
			return r === null || r >= n.thresholds.minFontSize ? null : {
				blockId: e.id,
				params: {
					size: r,
					min: n.thresholds.minFontSize
				}
			};
		}
	},
	{
		meta: {
			id: "a11y.button-vague-label",
			severity: "warning"
		},
		block(e, t, r) {
			if (!n(e)) return null;
			let i = we(e.text ?? "");
			return i === "" || !S(r.locale).vagueButtonLabels.includes(i) ? null : {
				blockId: e.id,
				params: { text: e.text }
			};
		}
	},
	{
		meta: {
			id: "a11y.button-touch-target",
			severity: "warning"
		},
		block(e, t, r) {
			if (!n(e)) return null;
			let i = e.buttonPadding;
			if (!i) return null;
			let a = e.fontSize * 1.4 + i.top + i.bottom;
			return a >= r.thresholds.minTouchTargetPx ? null : {
				blockId: e.id,
				params: {
					height: Math.round(a),
					min: r.thresholds.minTouchTargetPx
				}
			};
		}
	},
	{
		meta: {
			id: "a11y.button-low-contrast",
			severity: "error"
		},
		block(e) {
			if (!n(e)) return null;
			let t = m(e.textColor, e.backgroundColor);
			if (Number.isNaN(t)) return null;
			let r = e.fontSize >= 24 ? 3 : 4.5;
			return t >= r ? null : {
				blockId: e.id,
				params: {
					ratio: t.toFixed(2),
					required: r
				}
			};
		}
	},
	{
		meta: {
			id: "a11y.missing-preheader",
			severity: "info"
		},
		template(e) {
			return (e.settings.preheaderText?.trim() ?? "") === "" ? [{ blockId: null }] : [];
		}
	}
];
function mt(e, t = {}) {
	return y(e, pt, t, (e, t, n) => ue(e, t, n));
}
//#endregion
//#region ../quality/src/structure/messages/de.ts
var ht = /* @__PURE__ */ e({ default: () => gt }), gt = {
	"structure.duplicate-block-id": "Block-ID erscheint {count}-mal im Baum. Jeder Block muss eine eindeutige ID haben.",
	"structure.section-column-mismatch": "Sektion verwendet Layout „{layout}\" (erwartet {expected} Spalten), hat aber {actual}. Deutet auf beschädigten Zustand hin.",
	"structure.nested-section": "Sektion ist in einer anderen Sektion verschachtelt. Sektionen können nicht verschachtelt werden – der Renderer wird sich falsch verhalten.",
	"structure.empty-section": "Sektion enthält keine Blöcke. Entferne sie oder füge Inhalt hinzu.",
	"structure.empty-column": "Spalte {columnIndex} dieser Sektion ist leer. Füge Inhalt hinzu oder reduziere die Spaltenanzahl."
}, _t = /* @__PURE__ */ e({ default: () => Y }), Y = {
	"structure.duplicate-block-id": "Block id appears {count} times in the tree. Each block must have a unique id.",
	"structure.section-column-mismatch": "Section uses layout \"{layout}\" (expects {expected} columns) but has {actual}. Indicates corrupted state.",
	"structure.nested-section": "Section is nested inside another section. Sections cannot nest — the renderer will misbehave.",
	"structure.empty-section": "Section has no blocks. Remove it or add content.",
	"structure.empty-column": "Column {columnIndex} of this section is empty. Add content or reduce the column count."
}, vt = /* @__PURE__ */ Object.assign({
	"./de.ts": ht,
	"./en.ts": _t
}), X = {};
for (let e in vt) {
	let t = /\.\/([^/]+)\.ts$/.exec(e);
	if (!t) continue;
	let n = t[1];
	n !== "index" && (X[n] = vt[e].default);
}
function yt(e) {
	return X[e.split("-")[0]?.toLowerCase() ?? "en"] ?? X.en ?? Y;
}
function bt(e, t, n) {
	let r = yt(e)[t] ?? Y[t];
	return n ? r.replace(/\{(\w+)\}/g, (e, t) => {
		let r = n[t];
		return r === void 0 ? `{${t}}` : String(r);
	}) : r;
}
//#endregion
//#region ../quality/src/structure/rules/duplicate-block-id.ts
var xt = {
	id: "structure.duplicate-block-id",
	severity: "error"
};
function St(e, n) {
	for (let r of e) if (n.set(r.id, (n.get(r.id) ?? 0) + 1), t(r)) for (let e of r.children) St(e, n);
}
var Ct = {
	meta: xt,
	template(e) {
		let t = /* @__PURE__ */ new Map();
		St(e.blocks, t);
		let n = [];
		for (let [e, r] of t) r > 1 && n.push({
			blockId: e,
			params: { count: r }
		});
		return n;
	}
}, wt = {
	id: "structure.empty-column",
	severity: "warning"
};
function Tt(e, n) {
	for (let r of e) {
		if (!t(r)) continue;
		let e = r;
		e.children.length > 1 && e.children.forEach((t, r) => {
			t.length === 0 && n.push({
				blockId: e.id,
				params: { columnIndex: r + 1 }
			});
		});
		for (let t of e.children) Tt(t, n);
	}
}
var Et = {
	meta: wt,
	template(e) {
		let t = [];
		return Tt(e.blocks, t), t;
	}
}, Dt = {
	id: "structure.empty-section",
	severity: "warning"
};
function Ot(e) {
	return e.children.length === 0 ? !0 : e.children.every((e) => e.length === 0);
}
var kt = {
	meta: Dt,
	block(e) {
		if (!t(e)) return null;
		let n = e;
		return Ot(n) ? {
			blockId: n.id,
			fix: {
				description: "Remove the empty section",
				apply: (e) => {
					e.removeBlock(n.id);
				}
			}
		} : null;
	}
}, At = {
	meta: {
		id: "structure.nested-section",
		severity: "error"
	},
	block(e, n) {
		return !t(e) || n.section === null ? null : {
			blockId: e.id,
			params: { parentId: n.section.id }
		};
	}
}, jt = {
	id: "structure.section-column-mismatch",
	severity: "error"
};
function Mt(e) {
	return e === "1" ? 1 : e === "3" ? 3 : 2;
}
//#endregion
//#region ../quality/src/structure/index.ts
var Nt = [
	Ct,
	kt,
	Et,
	At,
	{
		meta: jt,
		block(e) {
			if (!t(e)) return null;
			let n = e, r = Mt(n.columns), i = n.children.length;
			return i === r ? null : {
				blockId: n.id,
				params: {
					layout: n.columns,
					expected: r,
					actual: i
				}
			};
		}
	}
];
function Pt(e, t = {}) {
	return y(e, Nt, t, (e, t, n) => bt(e, t, n));
}
//#endregion
//#region ../quality/src/links/messages/de.ts
var Ft = /* @__PURE__ */ e({ default: () => It }), It = {
	"link.javascript-protocol": "Die URL verwendet das „javascript:\"-Protokoll, das aus Sicherheitsgründen beim Rendern entfernt wird. Ersetze sie durch eine echte URL oder entferne sie.",
	"link.unsupported-protocol": "Die URL verwendet das Protokoll „{protocol}\", das von den meisten E-Mail-Clients nicht unterstützt wird. Verwende http, https, mailto, tel oder sms.",
	"link.malformed-mailto": "Der mailto:-Link ist fehlerhaft. Erwartet wird eine einzelne Empfängeradresse vor einer eventuellen Querystring (z. B. mailto:hallo@example.com).",
	"link.malformed-tel": "Der tel:-Link enthält Zeichen, die keine Ziffern, +, Leerzeichen, Bindestriche, Klammern oder Punkte sind.",
	"link.localhost-or-staging": "Der URL-Host „{host}\" entspricht einem Nicht-Produktionsmuster. Ersetze ihn vor dem Versand durch die Produktions-URL."
}, Lt = /* @__PURE__ */ e({ default: () => Z }), Z = {
	"link.javascript-protocol": "URL uses the \"javascript:\" protocol, which is stripped at render time for safety. Replace it with a real link or remove the URL.",
	"link.unsupported-protocol": "URL uses the \"{protocol}\" protocol, which most email clients do not support. Use http, https, mailto, tel, or sms.",
	"link.malformed-mailto": "mailto: link is malformed. Expected a single recipient address before any query string (e.g. mailto:hello@example.com).",
	"link.malformed-tel": "tel: link contains characters that are not digits, +, spaces, dashes, parentheses, or dots.",
	"link.localhost-or-staging": "URL host \"{host}\" matches a non-production pattern. Replace with the production URL before sending."
}, Rt = /* @__PURE__ */ Object.assign({
	"./de.ts": Ft,
	"./en.ts": Lt
}), Q = {};
for (let e in Rt) {
	let t = /\.\/([^/]+)\.ts$/.exec(e);
	if (!t) continue;
	let n = t[1];
	n !== "index" && (Q[n] = Rt[e].default);
}
function zt(e) {
	return Q[e.split("-")[0]?.toLowerCase() ?? "en"] ?? Q.en ?? Z;
}
function Bt(e, t, n) {
	let r = zt(e)[t] ?? Z[t];
	return n ? r.replace(/\{(\w+)\}/g, (e, t) => {
		let r = n[t];
		return r === void 0 ? `{${t}}` : String(r);
	}) : r;
}
//#endregion
//#region ../quality/src/url-walker.ts
function $(e) {
	let t = [];
	return v(e, (e) => {
		if (l(e) || d(e) || i(e)) {
			for (let n of K(e.content)) t.push({
				url: n.href,
				blockId: e.id,
				source: "anchor",
				label: n.text
			});
			return;
		}
		if (n(e)) {
			t.push({
				url: e.url,
				blockId: e.id,
				source: "button",
				label: e.text
			});
			return;
		}
		if (r(e)) {
			e.linkUrl && e.linkUrl !== "" && t.push({
				url: e.linkUrl,
				blockId: e.id,
				source: "image-link",
				label: e.alt || void 0
			});
			return;
		}
		if (a(e)) {
			t.push({
				url: e.url,
				blockId: e.id,
				source: "video",
				label: e.alt || void 0
			});
			return;
		}
		if (c(e)) {
			for (let n of e.items) t.push({
				url: n.url,
				blockId: e.id,
				source: "menu-item",
				label: n.text
			});
			return;
		}
		if (u(e)) {
			for (let n of e.icons) t.push({
				url: n.url,
				blockId: e.id,
				source: "social-icon",
				label: n.platform
			});
			return;
		}
	}), t;
}
//#endregion
//#region ../quality/src/links/rules/javascript-protocol.ts
var Vt = {
	id: "link.javascript-protocol",
	severity: "error"
};
function Ht(e) {
	if (!e) return !1;
	let t = e.replace(/\s+/g, "");
	return /^javascript:/i.test(t);
}
var Ut = {
	meta: Vt,
	template(e) {
		let t = [];
		for (let n of $(e)) Ht(n.url) && t.push({ blockId: n.blockId });
		return t;
	}
}, Wt = {
	id: "link.unsupported-protocol",
	severity: "warning"
}, Gt = new Set([
	"http",
	"https",
	"mailto",
	"tel",
	"sms"
]);
function Kt(e) {
	if (!e) return null;
	let t = e.trim(), n = /^([a-z][a-z0-9+\-.]*):/i.exec(t);
	return n ? n[1].toLowerCase() : null;
}
var qt = {
	meta: Wt,
	template(e) {
		let t = [];
		for (let n of $(e)) {
			let e = Kt(n.url);
			e !== null && e !== "javascript" && (Gt.has(e) || t.push({
				blockId: n.blockId,
				params: { protocol: e }
			}));
		}
		return t;
	}
}, Jt = {
	id: "link.malformed-mailto",
	severity: "warning"
};
function Yt(e) {
	let t = e.trim();
	if (!/^mailto:/i.test(t)) return !1;
	let [n] = t.slice(7).split("?", 2);
	if (n.trim() === "") return !0;
	let r = n.split(",").map((e) => e.trim());
	for (let e of r) {
		if (e === "") return !0;
		let t = e.split("@");
		if (t.length !== 2) return !0;
		let [n, r] = t;
		if (n === "" || r === "" || !r.includes(".")) return !0;
	}
	return !1;
}
var Xt = {
	meta: Jt,
	template(e) {
		let t = [];
		for (let n of $(e)) Yt(n.url) && t.push({ blockId: n.blockId });
		return t;
	}
}, Zt = {
	id: "link.malformed-tel",
	severity: "warning"
}, Qt = /^[+0-9\s().\-]+$/;
function $t(e) {
	let t = e.trim();
	if (!/^tel:/i.test(t)) return !1;
	let n = t.slice(4).trim();
	return n === "" ? !0 : !Qt.test(n);
}
var en = {
	meta: Zt,
	template(e) {
		let t = [];
		for (let n of $(e)) $t(n.url) && t.push({ blockId: n.blockId });
		return t;
	}
}, tn = {
	id: "link.localhost-or-staging",
	severity: "warning"
};
function nn(e) {
	let t = e.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
	return RegExp(`^${t}$`, "i");
}
function rn(e) {
	if (!e) return null;
	let t = e.trim();
	if (!/^(https?|ftps?):\/\//i.test(t)) return null;
	try {
		return new URL(t).hostname.toLowerCase();
	} catch {
		return null;
	}
}
//#endregion
//#region ../quality/src/links/index.ts
var an = [
	Ut,
	qt,
	Xt,
	en,
	{
		meta: tn,
		template(e, t) {
			let n = t.links.nonProductionHosts;
			if (n.length === 0) return [];
			let r = n.map(nn), i = [];
			for (let t of $(e)) {
				let e = rn(t.url);
				e !== null && r.some((t) => t.test(e)) && i.push({
					blockId: t.blockId,
					params: { host: e }
				});
			}
			return i;
		}
	}
];
function on(e, t = {}) {
	return y(e, an, t, (e, t, n) => Bt(e, t, n));
}
//#endregion
//#region ../quality/src/index.ts
var sn = /* @__PURE__ */ e({
	lintAccessibility: () => mt,
	lintLinks: () => on,
	lintStructure: () => Pt
});
//#endregion
export { sn as t };

//# sourceMappingURL=quality-CHCEMG8e.js.map