131 lines
16 KiB
JavaScript
131 lines
16 KiB
JavaScript
/*
|
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
if you want to view the source, please visit the github repository of this plugin
|
|
*/
|
|
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// main.ts
|
|
var main_exports = {};
|
|
__export(main_exports, {
|
|
default: () => MenuPlugin
|
|
});
|
|
module.exports = __toCommonJS(main_exports);
|
|
var import_obsidian = require("obsidian");
|
|
var { shell } = require("electron");
|
|
var MenuPlugin = class extends import_obsidian.Plugin {
|
|
async onload() {
|
|
this.registerMarkdownCodeBlockProcessor("menu", (source, el, ctx) => {
|
|
const lines = source.trim().split("\n");
|
|
let layout = "";
|
|
let colors = {};
|
|
const links = [];
|
|
for (const line of lines) {
|
|
const trimmed = line.trim();
|
|
if (trimmed.startsWith("layout:") || trimmed.startsWith("class:")) {
|
|
const colonIndex = trimmed.indexOf(":");
|
|
layout = trimmed.substring(colonIndex + 1).trim();
|
|
} else if (trimmed.includes(":") && !trimmed.startsWith("[") && !trimmed.startsWith("[[")) {
|
|
const [key, ...valueParts] = trimmed.split(":");
|
|
const value = valueParts.join(":").trim();
|
|
if (key && value && !key.includes("//") && !key.includes("http")) {
|
|
colors[key.trim()] = value;
|
|
}
|
|
} else if (trimmed && !trimmed.includes(":")) {
|
|
links.push(trimmed);
|
|
} else if (trimmed.startsWith("[")) {
|
|
links.push(trimmed);
|
|
}
|
|
}
|
|
const finalLayout = layout || "default";
|
|
const container = el.createEl("div", { cls: `menu-container ${finalLayout}` });
|
|
if (Object.keys(colors).length > 0) {
|
|
for (const [key, value] of Object.entries(colors)) {
|
|
let cssKey = key.replace(/accent/g, "hover-text");
|
|
container.style.setProperty(`--${cssKey}`, value);
|
|
}
|
|
if (colors["hover-text"]) {
|
|
container.style.setProperty("--hover-text", colors["hover-text"]);
|
|
}
|
|
}
|
|
for (const link of links) {
|
|
if (link.startsWith("[[") && link.endsWith("]]")) {
|
|
const linkContent = link.slice(2, -2);
|
|
let href = linkContent;
|
|
let text = linkContent;
|
|
if (linkContent.includes("|")) {
|
|
[href, text] = linkContent.split("|");
|
|
}
|
|
const a = container.createEl("a", {
|
|
text,
|
|
attr: { "data-href": href }
|
|
});
|
|
a.addClass("menu-internal-link");
|
|
a.style.cursor = "pointer";
|
|
a.addEventListener("click", (e) => {
|
|
e.preventDefault();
|
|
const vaultName = this.app.vault.getName();
|
|
const encodedFile = encodeURIComponent(href);
|
|
const uri = `obsidian://open?vault=${encodeURIComponent(vaultName)}&file=${encodedFile}`;
|
|
window.open(uri);
|
|
});
|
|
} else if (link.match(/^\[.*\]\(.*\)$/)) {
|
|
const match = link.match(/^\[(.*)\]\((.*)\)$/);
|
|
if (match) {
|
|
const text = match[1];
|
|
const url = match[2];
|
|
const a = container.createEl("a", {
|
|
text,
|
|
attr: url.startsWith("file://") ? {} : { href: url, target: "_blank", rel: "noopener noreferrer" }
|
|
});
|
|
a.style.cursor = "pointer";
|
|
if (url.startsWith("file://")) {
|
|
a.addClass("menu-file-link");
|
|
} else {
|
|
a.addClass("menu-external-link");
|
|
}
|
|
a.addEventListener("click", (e) => {
|
|
e.preventDefault();
|
|
if (url.startsWith("file://")) {
|
|
try {
|
|
let filePath = decodeURIComponent(url.substring(7));
|
|
if (filePath.startsWith("/") && filePath.charAt(2) === ":") {
|
|
filePath = filePath.substring(1);
|
|
}
|
|
console.log("Opening file path:", filePath);
|
|
shell.openPath(filePath);
|
|
} catch (error) {
|
|
console.error("Failed to open file:", error);
|
|
}
|
|
} else {
|
|
window.open(url, "_blank", "noopener,noreferrer");
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
onunload() {
|
|
}
|
|
};
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {});
|
|
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAndXJsJztcclxuXHJcbmNvbnN0IHsgc2hlbGwgfSA9IHJlcXVpcmUoJ2VsZWN0cm9uJyk7XHJcblxyXG4vLyBTaW1wbGUgWUFNTCBwYXJzZXIgZm9yIGNvbG9yIHByb3BlcnRpZXNcclxuZnVuY3Rpb24gcGFyc2VZQU1MKHRleHQ6IHN0cmluZykge1xyXG5cdGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xyXG5cdGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XHJcblx0Zm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XHJcblx0XHRjb25zdCB0cmltbWVkID0gbGluZS50cmltKCk7XHJcblx0XHRpZiAodHJpbW1lZCAmJiB0cmltbWVkLmluY2x1ZGVzKCc6JykpIHtcclxuXHRcdFx0Y29uc3QgW2tleSwgLi4udmFsdWVQYXJ0c10gPSB0cmltbWVkLnNwbGl0KCc6Jyk7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gdmFsdWVQYXJ0cy5qb2luKCc6JykudHJpbSgpO1xyXG5cdFx0XHRpZiAoa2V5ICYmIHZhbHVlKSB7XHJcblx0XHRcdFx0cmVzdWx0W2tleS50cmltKCldID0gdmFsdWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVudVBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XHJcblx0YXN5bmMgb25sb2FkKCkge1xyXG5cdFx0dGhpcy5yZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yKCdtZW51JywgKHNvdXJjZSwgZWwsIGN0eCkgPT4ge1xyXG5cdFx0XHRjb25zdCBsaW5lcyA9IHNvdXJjZS50cmltKCkuc3BsaXQoJ1xcbicpO1xyXG5cdFx0XHRsZXQgbGF5b3V0ID0gJyc7XHJcblx0XHRcdGxldCBjb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcclxuXHRcdFx0Y29uc3QgbGlua3M6IHN0cmluZ1tdID0gW107XHJcblx0XHRcdFxyXG5cdFx0XHQvLyBQYXJzZSBZQU1MLWxpa2UgcHJvcGVydGllcyBhbmQgbGlua3NcclxuXHRcdFx0Zm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XHJcblx0XHRcdFx0Y29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpO1xyXG5cdFx0XHRcdGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ2xheW91dDonKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ2NsYXNzOicpKSB7XHJcblx0XHRcdFx0XHRjb25zdCBjb2xvbkluZGV4ID0gdHJpbW1lZC5pbmRleE9mKCc6Jyk7XHJcblx0XHRcdFx0XHRsYXlvdXQgPSB0cmltbWVkLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSkudHJpbSgpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAodHJpbW1lZC5pbmNsdWRlcygnOicpICYmICF0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSAmJiAhdHJpbW1lZC5zdGFydHNXaXRoKCdbWycpKSB7XHJcblx0XHRcdFx0XHQvLyBQYXJzZSBjb2xvciBwcm9wZXJ0aWVzXHJcblx0XHRcdFx0XHRjb25zdCBba2V5LCAuLi52YWx1ZVBhcnRzXSA9IHRyaW1tZWQuc3BsaXQoJzonKTtcclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlID0gdmFsdWVQYXJ0cy5qb2luKCc6JykudHJpbSgpO1xyXG5cdFx0XHRcdFx0aWYgKGtleSAmJiB2YWx1ZSAmJiAha2V5LmluY2x1ZGVzKCcvLycpICYmICFrZXkuaW5jbHVkZXMoJ2h0dHAnKSkge1xyXG5cdFx0XHRcdFx0XHRjb2xvcnNba2V5LnRyaW0oKV0gPSB2YWx1ZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2UgaWYgKHRyaW1tZWQgJiYgIXRyaW1tZWQuaW5jbHVkZXMoJzonKSkge1xyXG5cdFx0XHRcdFx0bGlua3MucHVzaCh0cmltbWVkKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKHRyaW1tZWQuc3RhcnRzV2l0aCgnWycpKSB7XHJcblx0XHRcdFx0XHRsaW5rcy5wdXNoKHRyaW1tZWQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRcclxuXHRcdFx0Y29uc3QgZmluYWxMYXlvdXQgPSBsYXlvdXQgfHwgJ2RlZmF1bHQnO1xyXG5cdFx0XHRjb25zdCBjb250YWluZXIgPSBlbC5jcmVhdGVFbCgnZGl2JywgeyBjbHM6IGBtZW51LWNvbnRhaW5lciAke2ZpbmFsTGF5b3V0fWAgfSk7XHJcblx0XHRcdFxyXG5cdFx0XHQvLyBBcHBseSBjdXN0b20gY29sb3JzIGFzIENTUyB2YXJpYWJsZXNcclxuXHRcdFx0aWYgKE9iamVjdC5rZXlzKGNvbG9ycykubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbG9ycykpIHtcclxuXHRcdFx0XHRcdC8vIFJlcGxhY2UgJ2FjY2VudCcgd2l0aCAnaG92ZXItdGV4dCcgZm9yIGNvbnNpc3RlbmN5XHJcblx0XHRcdFx0XHRsZXQgY3NzS2V5ID0ga2V5LnJlcGxhY2UoL2FjY2VudC9nLCAnaG92ZXItdGV4dCcpO1xyXG5cdFx0XHRcdFx0Y29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KGAtLSR7Y3NzS2V5fWAsIHZhbHVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gRXhhbXBsZTogZW5zdXJlIGhvdmVyLXRleHQgaXMgc2V0IGFuZCBhZGQgYSBjb21tZW50IGZvciB1c2FnZVxyXG5cdFx0XHRcdGlmIChjb2xvcnNbJ2hvdmVyLXRleHQnXSkge1xyXG5cdFx0XHRcdFx0Y29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KCctLWhvdmVyLXRleHQnLCBjb2xvcnNbJ2hvdmVyLXRleHQnXSk7XHJcblx0XHRcdFx0XHQvLyBUbyB1c2UgaW4gQ1NTOiBhOmhvdmVyIHsgY29sb3I6IHZhcigtLWhvdmVyLXRleHQpOyB9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcbiBcclxuXHRcdFx0Ly8gUHJvY2VzcyBlYWNoIGxpbmtcclxuXHRcdFx0Zm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XHJcblx0XHRcdFx0aWYgKGxpbmsuc3RhcnRzV2l0aCgnW1snKSAmJiBsaW5rLmVuZHNXaXRoKCddXScpKSB7XHJcblx0XHRcdFx0XHQvLyBJbnRlcm5hbCBsaW5rXHJcblx0XHRcdFx0XHRjb25zdCBsaW5rQ29udGVudCA9IGxpbmsuc2xpY2UoMiwgLTIpO1xyXG5cdFx0XHRcdFx0bGV0IGhyZWYgPSBsaW5rQ29udGVudDtcclxuXHRcdFx0XHRcdGxldCB0ZXh0ID0gbGlua0NvbnRlbnQ7XHJcblx0XHRcdFx0XHRpZiAobGlua0NvbnRlbnQuaW5jbHVkZXMoJ3wnKSkge1xyXG5cdFx0XHRcdFx0XHRbaHJlZiwgdGV4dF0gPSBsaW5rQ29udGVudC5zcGxpdCgnfCcpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Y29uc3QgYSA9IGNvbnRhaW5lci5jcmVhdGVFbCgnYScsIHtcclxuXHRcdFx0XHRcdFx0dGV4dDogdGV4dCxcclxuXHRcdFx0XHRcdFx0YXR0cjogeyAnZGF0YS1ocmVmJzogaHJlZiB9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdGEuYWRkQ2xhc3MoJ21lbnUtaW50ZXJuYWwtbGluaycpO1xyXG5cdFx0XHRcdFx0YS5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XHJcblx0XHRcdFx0XHRhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuXHRcdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCB2YXVsdE5hbWUgPSB0aGlzLmFwcC52YXVsdC5nZXROYW1lKCk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGVuY29kZWRGaWxlID0gZW5jb2RlVVJJQ29tcG9uZW50KGhyZWYpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCB1cmkgPSBgb2JzaWRpYW46Ly9vcGVuP3ZhdWx0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhdWx0TmFtZSl9JmZpbGU9JHtlbmNvZGVkRmlsZX1gO1xyXG5cdFx0XHRcdFx0XHR3aW5kb3cub3Blbih1cmkpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBlbHNlIGlmIChsaW5rLm1hdGNoKC9eXFxbLipcXF1cXCguKlxcKSQvKSkge1xyXG5cdFx0XHRcdFx0Ly8gRXh0ZXJuYWwgbGlua1xyXG5cdFx0XHRcdFx0Y29uc3QgbWF0Y2ggPSBsaW5rLm1hdGNoKC9eXFxbKC4qKVxcXVxcKCguKilcXCkkLyk7XHJcblx0XHRcdFx0XHRpZiAobWF0Y2gpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgdGV4dCA9IG1hdGNoWzFdO1xyXG5cdFx0XHRcdFx0XHRjb25zdCB1cmwgPSBtYXRjaFsyXTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgYSA9IGNvbnRhaW5lci5jcmVhdGVFbCgnYScsIHtcclxuXHRcdFx0XHRcdFx0XHR0ZXh0OiB0ZXh0LFxyXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHVybC5zdGFydHNXaXRoKCdmaWxlOi8vJykgPyB7fSA6IHsgaHJlZjogdXJsLCB0YXJnZXQ6ICdfYmxhbmsnLCByZWw6ICdub29wZW5lciBub3JlZmVycmVyJyB9XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRhLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdC8vIEFkZCBhcHByb3ByaWF0ZSBjbGFzcyBiYXNlZCBvbiBsaW5rIHR5cGVcclxuXHRcdFx0XHRcdFx0aWYgKHVybC5zdGFydHNXaXRoKCdmaWxlOi8vJykpIHtcclxuXHRcdFx0XHRcdFx0XHRhLmFkZENsYXNzKCdtZW51LWZpbGUtbGluaycpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGEuYWRkQ2xhc3MoJ21lbnUtZXh0ZXJuYWwtbGluaycpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0XHRcdFx0XHRpZiAodXJsLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gQ29udmVydCBmaWxlIFVSTCB0byBwYXRoIGFuZCBoYW5kbGUgV2luZG93cyBwYXRoc1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgZmlsZVBhdGggPSBkZWNvZGVVUklDb21wb25lbnQodXJsLnN1YnN0cmluZyg3KSk7IC8vIFJlbW92ZSAnZmlsZTovLydcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIFdpbmRvd3MgcGF0aHMgdGhhdCBzdGFydCB3aXRoIC9DOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZmlsZVBhdGguc3RhcnRzV2l0aCgnLycpICYmIGZpbGVQYXRoLmNoYXJBdCgyKSA9PT0gJzonKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoMSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ09wZW5pbmcgZmlsZSBwYXRoOicsIGZpbGVQYXRoKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0c2hlbGwub3BlblBhdGgoZmlsZVBhdGgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIG9wZW4gZmlsZTonLCBlcnJvcik7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0b251bmxvYWQoKSB7XHJcblx0XHQvLyBDbGVhbnVwIGlmIG5lZWRlZFxyXG5cdH1cclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQXVCO0FBR3ZCLElBQU0sRUFBRSxNQUFNLElBQUksUUFBUSxVQUFVO0FBbUJwQyxJQUFxQixhQUFyQixjQUF3Qyx1QkFBTztBQUFBLEVBQzlDLE1BQU0sU0FBUztBQUNkLFNBQUssbUNBQW1DLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUTtBQUNwRSxZQUFNLFFBQVEsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJO0FBQ3RDLFVBQUksU0FBUztBQUNiLFVBQUksU0FBaUMsQ0FBQztBQUN0QyxZQUFNLFFBQWtCLENBQUM7QUFHekIsaUJBQVcsUUFBUSxPQUFPO0FBQ3pCLGNBQU0sVUFBVSxLQUFLLEtBQUs7QUFDMUIsWUFBSSxRQUFRLFdBQVcsU0FBUyxLQUFLLFFBQVEsV0FBVyxRQUFRLEdBQUc7QUFDbEUsZ0JBQU0sYUFBYSxRQUFRLFFBQVEsR0FBRztBQUN0QyxtQkFBUyxRQUFRLFVBQVUsYUFBYSxDQUFDLEVBQUUsS0FBSztBQUFBLFFBQ2pELFdBQVcsUUFBUSxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsV0FBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLFdBQVcsSUFBSSxHQUFHO0FBRTFGLGdCQUFNLENBQUMsS0FBSyxHQUFHLFVBQVUsSUFBSSxRQUFRLE1BQU0sR0FBRztBQUM5QyxnQkFBTSxRQUFRLFdBQVcsS0FBSyxHQUFHLEVBQUUsS0FBSztBQUN4QyxjQUFJLE9BQU8sU0FBUyxDQUFDLElBQUksU0FBUyxJQUFJLEtB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
|