Splux Linux

source-based Linux using SPS

splux-site · log · files · refs · tags · releases · people · languages · GitHub · commit

9479c4b


Make Splux Git a live GitHub mirror with Linguist languages and account pages.

Date
Commit9479c4b25db4bacf7c05b8a353ee93ac41281464
GitHubmirror

Parents

Stat

 README.md                  |   20 +-
 site/404.html              |    5 +-
 site/assets/git.js         |  683 +++++++++-
 site/assets/live.js        |    2 +-
 site/assets/style.css      |   78 +-
 site/docs/sps/index.html   |    2 +-
 site/git/index.html        |    2 +-
 site/index.html            |    4 +-
 site/source/index.html     |    2 +-
 tools/build-git.sh         |  609 +++++++--
 tools/build-site.sh        |    4 +-
 tools/git-lang.awk         |  194 +++
 tools/git.awk              |   97 +-
 tools/linguist-extract.awk |   93 ++
 tools/linguist.map         | 3178 ++++++++++++++++++++++++++++++++++++++++++++
 tools/news.awk             |    7 +-
 16 files changed, 4801 insertions(+), 179 deletions(-)

Diff

diff --git a/README.md b/README.md
index 2d42303..82d327c 100644
--- a/README.md
+++ b/README.md
@@ -69,18 +69,20 @@ in-page GitHub refresh still pick releases up.
 
 ## GitHub Pages
 
-The workflow rebuilds the package index and news feed every five minutes
-and on push to `main`.
+The workflow rebuilds the package index, news feed, and git browser
+every fifteen minutes and on push to `main`.
 The custom domain is `https://splux.robertflexx.dev`. Point a DNS CNAME
 for `splux` at `robertflexx.github.io`, then GitHub Pages serves this
 repository there. `SITE_PREFIX` stays empty so links are rooted at `/`.
 
 ## Git
 
-`/git/` is a static browse of SPS, sps-core, sps-extra, and this
-repository. The Pages workflow clones those trees and writes commit,
-file, and language pages. There is no git server, no accounts, and no
-pull requests. Clone from GitHub:
+`/git/` is a live HTML mirror of SPS, sps-core, sps-extra, and this
+repository. Languages match GitHub Linguist. Commits show the GitHub
+account that uploaded them, with avatars, and `/git/users/` holds
+profiles. The Pages workflow rebuilds those pages; the browser also
+asks GitHub for anything newer. There is no git server and no pull
+requests. Clone from GitHub:
 
 ```sh
 git clone https://github.com/RobertFlexx/SPS.git
@@ -89,9 +91,9 @@ git clone https://github.com/RobertFlexx/sps-extra.git
 git clone https://github.com/RobertFlexx/splux-site.git
 ```
 
-News commit links point at `/git/<repo>/commit/<sha>/`. Recipe pages
-link into `/git/sps-core/` and `/git/sps-extra/`. Live ISO files stay
-on GitHub Releases.
+News commit links point at `/git/<repo>/commit/<sha>/`. Author names
+point at `/git/users/<login>/`. Recipe pages link into `/git/sps-core/`
+and `/git/sps-extra/`. Live ISO files stay on GitHub Releases.
 
 `git.splux.robertflexx.dev` is not a separate service. GitHub Pages
 allows one custom domain on this repository (`splux.robertflexx.dev`).
diff --git a/site/404.html b/site/404.html
index f237d31..dfaaef5 100644
--- a/site/404.html
+++ b/site/404.html
@@ -10,13 +10,14 @@
 <body>
 <div class="wrap">
 @@HEADER@@
-<main id="main">
+<main id="main" class="git-page">
 <h2>404</h2>
 <hr class="rule">
-<p>The requested page does not exist.</p>
+<p>The requested page does not exist. If this is a new git commit, file, or account, the page may fill in from GitHub.</p>
 <p><a href="../../../../">home</a> · <a href="../../../../docs/">handbook</a> · <a href="../../../../git/">git</a> · <a href="../../../../install/">install</a></p>
 </main>
 @@FOOTER@@
 </div>
+<script src="../../../../assets/git.js?v=4c4f12c-20261019130111" data-root="../../../../" data-git="https://splux.robertflexx.dev/git"></script>
 </body>
 </html>
diff --git a/site/assets/git.js b/site/assets/git.js
index 10b43b5..48b2dee 100644
--- a/site/assets/git.js
+++ b/site/assets/git.js
@@ -1,17 +1,322 @@
-// Filter the static git index. Pages are built with the handbook;
-// GitHub is only a clone mirror, not a runtime backend.
+// Live GitHub refresh for Splux Git. Baked HTML stays if this fails.
+// New commits, language bars, and account pages update in the browser.
 (function () {
-	function ready() {
-		var input = document.getElementById("git-filter");
-		var table = document.getElementById("git-repos");
-		if (input && table)
-			bindFilter(input, table);
-		var tree = document.querySelector("table.git-tree");
-		if (input && tree)
-			bindFilter(input, tree);
+	var API = "https://api.github.com";
+	var OWNER = "RobertFlexx";
+	var ACCEPT = { Accept: "application/vnd.github+json" };
+	var REPOS = ["SPS", "sps-core", "sps-extra", "splux-site"];
+	var TTL = 120000;
+	var COLORS = {};
+
+	var thisScript = document.currentScript ||
+		document.querySelector("script[src*=\"git.js\"]");
+	var dataRoot = (thisScript && thisScript.getAttribute("data-root")) || "./";
+	var gitHost = (thisScript && thisScript.getAttribute("data-git")) ||
+		"https://splux.robertflexx.dev/git";
+	gitHost = String(gitHost).replace(/\/+$/, "");
+	if (dataRoot === "/")
+		dataRoot = "/";
+
+	var main = document.getElementById("main");
+
+	function esc(s) {
+		return String(s == null ? "" : s)
+			.replace(/&/g, "&amp;")
+			.replace(/</g, "&lt;")
+			.replace(/>/g, "&gt;")
+			.replace(/"/g, "&quot;");
+	}
+
+	function validLogin(name) {
+		return /^[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$/.test(name) &&
+			name.length <= 39;
+	}
+
+	function formatLocal(iso) {
+		var d = new Date(iso);
+		if (isNaN(d.getTime()))
+			return iso;
+		try {
+			return d.toLocaleString(undefined, {
+				year: "numeric",
+				month: "short",
+				day: "numeric",
+				hour: "numeric",
+				minute: "2-digit",
+				timeZoneName: "short"
+			});
+		} catch (e) {
+			return d.toString();
+		}
+	}
+
+	function localizeTimes(root) {
+		var times = (root || document).querySelectorAll("time[datetime]");
+		for (var i = 0; i < times.length; i++) {
+			var iso = times[i].getAttribute("datetime");
+			if (iso)
+				times[i].textContent = formatLocal(iso);
+		}
+	}
+
+	function dayOf(iso) {
+		iso = String(iso || "");
+		var n = iso.indexOf("T");
+		return n === -1 ? iso : iso.slice(0, n);
+	}
+
+	function json(url) {
+		return fetch(url, { headers: ACCEPT, cache: "no-store" }).then(function (r) {
+			if (!r.ok)
+				throw new Error(String(r.status));
+			return r.json();
+		});
+	}
+
+	function cached(key, url) {
+		try {
+			var raw = sessionStorage.getItem(key);
+			if (raw) {
+				var o = JSON.parse(raw);
+				if (o && (Date.now() - o.t) < TTL)
+					return Promise.resolve(o.v);
+			}
+		} catch (e) {}
+		return json(url).then(function (v) {
+			try {
+				sessionStorage.setItem(key, JSON.stringify({ t: Date.now(), v: v }));
+			} catch (e2) {}
+			return v;
+		});
+	}
+
+	function colorsReady() {
+		if (Object.keys(COLORS).length)
+			return Promise.resolve(COLORS);
+		return fetch(dataRoot + "data/linguist-colors.json", { cache: "force-cache" })
+			.then(function (r) { return r.ok ? r.json() : {}; })
+			.then(function (c) {
+				COLORS = c || {};
+				return COLORS;
+			})
+			.catch(function () { return COLORS; });
+	}
+
+	function colorOf(name) {
+		return COLORS[name] || "#888888";
+	}
+
+	function parsePath() {
+		var p = location.pathname.replace(/\/index\.html$/, "").replace(/\/+$/, "");
+		var parts = p.split("/").filter(Boolean);
+		var out = { kind: "", repo: "", user: "", sha: "", path: "" };
+		if (parts[0] !== "git")
+			return out;
+		if (parts.length === 1) {
+			out.kind = "index";
+			return out;
+		}
+		if (parts[1] === "users") {
+			out.kind = parts.length === 2 ? "users" : "user";
+			out.user = parts[2] || "";
+			return out;
+		}
+		out.repo = parts[1];
+		if (parts.length === 2) {
+			out.kind = "repo";
+			return out;
+		}
+		out.kind = parts[2];
+		if (out.kind === "commit")
+			out.sha = parts[3] || "";
+		else if (out.kind === "tree" || out.kind === "blob")
+			out.path = parts.slice(3).join("/");
+		return out;
 	}
 
-	function bindFilter(input, table) {
+	function pageInfo() {
+		var info = {
+			kind: (main && main.getAttribute("data-kind")) || "",
+			repo: (main && main.getAttribute("data-repo")) || "",
+			user: (main && main.getAttribute("data-user")) || "",
+			sha: (main && main.getAttribute("data-sha")) || "",
+			path: (main && main.getAttribute("data-path")) || ""
+		};
+		var missing = document.title.indexOf("404") === 0 ||
+			(main && main.querySelector("h2") &&
+				main.querySelector("h2").textContent === "404");
+		if (!info.kind || missing) {
+			var parsed = parsePath();
+			if (parsed.kind) {
+				info = parsed;
+				info.hydrate = missing ? true : info.hydrate;
+				if (missing)
+					info.hydrate = true;
+			}
+		}
+		return info;
+	}
+
+	function showLive() {
+		var el = document.getElementById("git-live");
+		if (el)
+			el.hidden = false;
+	}
+
+	function userHref(login) {
+		return gitHost + "/users/" + encodeURIComponent(login) + "/";
+	}
+
+	function commitHref(repo, sha) {
+		return gitHost + "/" + encodeURIComponent(repo) + "/commit/" +
+			encodeURIComponent(sha) + "/";
+	}
+
+	function repoHref(repo) {
+		return gitHost + "/" + encodeURIComponent(repo) + "/";
+	}
+
+	function avatarOf(login, url) {
+		if (url && /^https:\/\/(avatars\.githubusercontent\.com\/|github\.com\/)/.test(url))
+			return url;
+		if (login && validLogin(login))
+			return "https://github.com/" + login + ".png?size=48";
+		return "";
+	}
+
+	function whoHtml(login, name, avatar) {
+		var label = login || name || "";
+		if (login && validLogin(login)) {
+			var av = avatarOf(login, avatar);
+			var html = "<a class=\"who\" href=\"" + esc(userHref(login)) + "\">";
+			if (av)
+				html += "<img class=\"avatar\" src=\"" + esc(av) +
+					"\" width=\"24\" height=\"24\" alt=\"\" loading=\"lazy\">";
+			html += esc(login) + "</a>";
+			return html;
+		}
+		return esc(label);
+	}
+
+	function firstLine(msg) {
+		msg = String(msg || "");
+		var n = msg.indexOf("\n");
+		return n === -1 ? msg : msg.slice(0, n);
+	}
+
+	function fromCommit(c, repo) {
+		var commit = (c && c.commit) || {};
+		var author = (c && c.author) || {};
+		var committer = (c && c.committer) || {};
+		var login = author.login || committer.login || "";
+		return {
+			sha: c.sha || "",
+			short: (c.sha || "").slice(0, 7),
+			iso: (commit.committer && commit.committer.date) ||
+				(commit.author && commit.author.date) || "",
+			subject: firstLine(commit.message),
+			author: (commit.author && commit.author.name) || login,
+			login: login,
+			avatar: author.avatar_url || committer.avatar_url || "",
+			verified: !!(commit.verification && commit.verification.verified),
+			repo: repo || ""
+		};
+	}
+
+	function commitRow(it, opts) {
+		opts = opts || {};
+		var href = commitHref(it.repo || opts.repo, it.sha);
+		var html = "<tr data-sha=\"" + esc(it.sha) + "\" data-login=\"" +
+			esc(it.login) + "\" data-repo=\"" + esc(it.repo || opts.repo || "") + "\">";
+		html += "<td><a href=\"" + esc(href) + "\"><code>" + esc(it.short) + "</code></a></td>";
+		if (opts.showRepo && it.repo)
+			html += "<td><a href=\"" + esc(repoHref(it.repo)) + "\">" +
+				esc(it.repo) + "</a></td>";
+		html += "<td><a href=\"" + esc(href) + "\">" + esc(it.subject) + "</a></td>";
+		html += "<td>" + whoHtml(it.login, it.author, it.avatar);
+		if (it.verified)
+			html += " <span class=\"verified\">verified</span>";
+		html += "</td>";
+		html += "<td><time datetime=\"" + esc(it.iso) + "\">" +
+			esc(dayOf(it.iso)) + "</time></td></tr>";
+		return html;
+	}
+
+	function paintLangs(root, langs) {
+		if (!root || !langs || !langs.length)
+			return;
+		var total = 0;
+		var i;
+		for (i = 0; i < langs.length; i++)
+			total += langs[i].bytes || 0;
+		if (total <= 0)
+			return;
+		var html = "<div class=\"lang-bar\" role=\"img\" aria-label=\"Languages\">";
+		for (i = 0; i < langs.length; i++) {
+			var w = Math.round((langs[i].bytes * 1000) / total) / 10;
+			if (w <= 0 && langs[i].bytes > 0)
+				w = 0.1;
+			html += "<span class=\"lang-seg\" style=\"width:" + w +
+				"%;background:" + esc(langs[i].color || colorOf(langs[i].name)) +
+				"\" title=\"" + esc(langs[i].name) + " " + w + "%\"></span>";
+		}
+		html += "</div><ul class=\"lang-list\">";
+		for (i = 0; i < langs.length; i++) {
+			var p = Math.round((langs[i].bytes * 1000) / total) / 10;
+			html += "<li><span class=\"lang-dot\" style=\"background:" +
+				esc(langs[i].color || colorOf(langs[i].name)) + "\"></span> " +
+				esc(langs[i].name) + " <span class=\"muted\">" + p +
+				"%</span></li>";
+		}
+		html += "</ul>";
+		root.innerHTML = html;
+	}
+
+	function langsFromApi(obj) {
+		var rows = [];
+		var name;
+		for (name in obj) {
+			if (Object.prototype.hasOwnProperty.call(obj, name))
+				rows.push({ name: name, bytes: obj[name], color: colorOf(name) });
+		}
+		rows.sort(function (a, b) { return b.bytes - a.bytes; });
+		return rows;
+	}
+
+	function mergeCommitRows(table, items, repo, showRepo) {
+		if (!table || !items || !items.length)
+			return 0;
+		var body = table.tBodies[0] || table;
+		var seen = {};
+		var existing = body.querySelectorAll("tr[data-sha]");
+		var i;
+		for (i = 0; i < existing.length; i++)
+			seen[existing[i].getAttribute("data-sha")] = true;
+		var added = 0;
+		var html = "";
+		for (i = 0; i < items.length; i++) {
+			if (!items[i].sha || seen[items[i].sha])
+				continue;
+			seen[items[i].sha] = true;
+			html += commitRow(items[i], { repo: repo || items[i].repo, showRepo: showRepo });
+			added++;
+		}
+		if (html) {
+			body.insertAdjacentHTML("afterbegin", html);
+			localizeTimes(body);
+		}
+		return added;
+	}
+
+	function bindFilter() {
+		var input = document.getElementById("git-filter");
+		if (!input)
+			return;
+		var table = document.getElementById("git-repos") ||
+			document.querySelector("table.git-tree") ||
+			document.querySelector("table.git-log");
+		if (!table)
+			return;
 		function apply() {
 			var q = (input.value || "").toLowerCase();
 			var rows = table.querySelectorAll("tbody tr");
@@ -25,6 +330,362 @@
 		input.addEventListener("input", apply);
 	}
 
+	function fetchCommits(repo, n) {
+		n = n || 30;
+		return cached("git-commits-" + repo, API + "/repos/" + OWNER + "/" +
+			repo + "/commits?per_page=" + n).then(function (list) {
+			var out = [];
+			for (var i = 0; i < list.length; i++)
+				out.push(fromCommit(list[i], repo));
+			return out;
+		});
+	}
+
+	function fetchLangs(repo) {
+		return cached("git-langs-" + repo, API + "/repos/" + OWNER + "/" +
+			repo + "/languages").then(langsFromApi);
+	}
+
+	function fetchRepo(repo) {
+		return cached("git-repo-" + repo, API + "/repos/" + OWNER + "/" + repo);
+	}
+
+	function fetchUser(login) {
+		return cached("git-user-" + login, API + "/users/" + login);
+	}
+
+	function fetchContents(repo, path) {
+		var url = API + "/repos/" + OWNER + "/" + repo + "/contents";
+		if (path)
+			url += "/" + path.split("/").map(encodeURIComponent).join("/");
+		return json(url);
+	}
+
+	function decodeContent(item) {
+		if (!item || item.encoding !== "base64" || !item.content)
+			return "";
+		try {
+			return decodeURIComponent(escape(atob(item.content.replace(/\s/g, ""))));
+		} catch (e) {
+			try {
+				return atob(item.content.replace(/\s/g, ""));
+			} catch (e2) {
+				return "";
+			}
+		}
+	}
+
+	function paintCommit(info, c) {
+		if (!main || !c)
+			return;
+		var it = fromCommit(c, info.repo);
+		var parents = c.parents || [];
+		var files = c.files || [];
+		var html = "<p class=\"git-nav\"><a href=\"" + esc(repoHref(info.repo)) +
+			"\">" + esc(info.repo) + "</a> · <a href=\"" +
+			esc(repoHref(info.repo) + "log/") + "\">log</a> · commit</p>";
+		html += "<h2><code>" + esc(it.short) + "</code></h2><hr class=\"rule\">";
+		html += "<p>" + esc(it.subject) + "</p>";
+		html += "<div class=\"info\">";
+		html += "<div class=\"dl-row\"><span class=\"muted\">Author</span><span>" +
+			whoHtml(it.login, it.author, it.avatar) +
+			(it.verified ? " <span class=\"verified\">verified</span>" : "") +
+			"</span></div>";
+		html += "<div class=\"dl-row\"><span class=\"muted\">Date</span><span><time datetime=\"" +
+			esc(it.iso) + "\">" + esc(formatLocal(it.iso)) + "</time></span></div>";
+		html += "<div class=\"dl-row\"><span class=\"muted\">Commit</span><span><code>" +
+			esc(it.sha) + "</code></span></div>";
+		html += "<div class=\"dl-row\"><span class=\"muted\">GitHub</span><span><a href=\"" +
+			esc(c.html_url || "") + "\">mirror</a></span></div></div>";
+		html += "<h3>Parents</h3><ul class=\"plain\">";
+		for (var i = 0; i < parents.length; i++) {
+			html += "<li><a href=\"" + esc(commitHref(info.repo, parents[i].sha)) +
+				"\"><code>" + esc((parents[i].sha || "").slice(0, 7)) +
+				"</code></a></li>";
+		}
+		html += "</ul><h3>Files</h3><ul class=\"plain\">";
+		for (var j = 0; j < files.length && j < 80; j++) {
+			html += "<li>" + esc(files[j].filename || "") +
+				" <span class=\"muted\">" + esc(files[j].status || "") +
+				"</span></li>";
+		}
+		html += "</ul>";
+		if (c.stats)
+			html += "<p class=\"muted\">+" + esc(String(c.stats.additions || 0)) +
+				" / -" + esc(String(c.stats.deletions || 0)) + "</p>";
+		main.innerHTML = html;
+		document.title = it.short + " - " + info.repo + " - Splux Git";
+	}
+
+	function paintBlob(info, item) {
+		if (!main || !item)
+			return;
+		var html = "<p class=\"git-nav\"><a href=\"" + esc(repoHref(info.repo)) +
+			"\">" + esc(info.repo) + "</a> · file</p>";
+		html += "<h2>" + esc(info.path) + "</h2><hr class=\"rule\">";
+		if (item.html_url)
+			html += "<p class=\"muted\"><a href=\"" + esc(item.html_url) +
+				"\">GitHub</a></p>";
+		if (item.type === "file") {
+			var text = decodeContent(item);
+			if (text)
+				html += "<pre class=\"block git-blob\">" + esc(text) + "</pre>";
+			else
+				html += "<p>Open the GitHub mirror for this file.</p>";
+		} else {
+			html += "<p>Not a file.</p>";
+		}
+		main.innerHTML = html;
+		document.title = info.path + " - " + info.repo + " - Splux Git";
+	}
+
+	function paintTree(info, list) {
+		if (!main || !list)
+			return;
+		if (!Array.isArray(list)) {
+			paintBlob(info, list);
+			return;
+		}
+		var html = "<p class=\"git-nav\"><a href=\"" + esc(repoHref(info.repo)) +
+			"\">" + esc(info.repo) + "</a> · files</p>";
+		html += "<h2>" + esc(info.path || "Files") + "</h2><hr class=\"rule\">";
+		html += "<table class=\"pkgs git-tree\"><thead><tr><th></th><th>Name</th><th>Size</th></tr></thead><tbody>";
+		for (var i = 0; i < list.length; i++) {
+			var it = list[i];
+			var kind = it.type === "dir" ? "dir" : "file";
+			var href = gitHost + "/" + encodeURIComponent(info.repo) + "/" +
+				(kind === "dir" ? "tree/" : "blob/") +
+				(it.path || it.name || "") + "/";
+			html += "<tr data-search=\"" + esc((it.name || "").toLowerCase()) + "\">";
+			html += "<td class=\"muted\">" + kind + "</td>";
+			html += "<td><a href=\"" + esc(href) + "\">" + esc(it.name || "") +
+				(kind === "dir" ? "/" : "") + "</a></td>";
+			html += "<td class=\"muted\">" + esc(it.size ? String(it.size) : "") +
+				"</td></tr>";
+		}
+		html += "</tbody></table>";
+		main.innerHTML = html;
+		document.title = (info.path || "Files") + " - " + info.repo + " - Splux Git";
+	}
+
+	function paintUser(u, commitsHtml) {
+		if (!main || !u)
+			return;
+		var login = u.login || "";
+		var html = "<p class=\"git-nav\"><a href=\"" + esc(gitHost + "/") +
+			"\">git</a> · <a href=\"" + esc(gitHost + "/users/") +
+			"\">people</a></p>";
+		html += "<div class=\"profile\" id=\"git-profile\">";
+		if (u.avatar_url)
+			html += "<img class=\"avatar profile-avatar\" src=\"" +
+				esc(u.avatar_url) + "\" width=\"80\" height=\"80\" alt=\"\">";
+		html += "<div class=\"profile-body\"><h2>" + esc(login) + "</h2>";
+		if (u.name && u.name !== login)
+			html += "<p class=\"profile-name\">" + esc(u.name) + "</p>";
+		if (u.bio)
+			html += "<p>" + esc(u.bio) + "</p>";
+		html += "<div class=\"info\">";
+		if (u.html_url)
+			html += "<div class=\"dl-row\"><span class=\"muted\">GitHub</span><span><a href=\"" +
+				esc(u.html_url) + "\">" + esc(login) + "</a></span></div>";
+		if (u.company)
+			html += "<div class=\"dl-row\"><span class=\"muted\">Company</span><span>" +
+				esc(u.company) + "</span></div>";
+		if (u.location)
+			html += "<div class=\"dl-row\"><span class=\"muted\">Location</span><span>" +
+				esc(u.location) + "</span></div>";
+		if (u.blog)
+			html += "<div class=\"dl-row\"><span class=\"muted\">URL</span><span><a href=\"" +
+				esc(u.blog) + "\">" + esc(u.blog) + "</a></span></div>";
+		html += "<div class=\"dl-row\"><span class=\"muted\">Public repos</span><span>" +
+			esc(String(u.public_repos || 0)) + "</span></div>";
+		html += "<div class=\"dl-row\"><span class=\"muted\">Followers</span><span>" +
+			esc(String(u.followers || 0)) + "</span></div>";
+		html += "</div></div></div>";
+		html += "<h3>Commits in Splux trees</h3><div id=\"git-user-log\">" +
+			(commitsHtml || "<p class=\"muted\">None in the baked trees yet.</p>") +
+			"</div>";
+		main.innerHTML = html;
+		document.title = login + " - Splux Git";
+	}
+
+	function knownRepo(name) {
+		for (var i = 0; i < REPOS.length; i++) {
+			if (REPOS[i] === name)
+				return true;
+		}
+		return false;
+	}
+
+	function refreshRepo(info) {
+		var repo = info.repo;
+		if (!knownRepo(repo))
+			return;
+		return colorsReady().then(function () {
+			return Promise.all([
+				fetchLangs(repo).catch(function () { return null; }),
+				fetchCommits(repo, info.kind === "log" ? 100 : 20).catch(function () { return null; }),
+				fetchRepo(repo).catch(function () { return null; })
+			]);
+		}).then(function (rows) {
+			var langs = rows[0];
+			var commits = rows[1];
+			var meta = rows[2];
+			var changed = 0;
+			if (langs && langs.length) {
+				var box = document.getElementById("git-langs");
+				if (box) {
+					paintLangs(box, langs);
+					changed++;
+				}
+			}
+			if (commits && commits.length) {
+				var wrap = document.getElementById("git-recent") ||
+					document.getElementById("git-log");
+				var table = wrap ? wrap.querySelector("table.git-log") : null;
+				if (table && mergeCommitRows(table, commits, repo, false))
+					changed++;
+				if (meta && document.getElementById("git-head")) {
+					var sha = commits[0].sha;
+					document.getElementById("git-head").innerHTML =
+						"<a href=\"" + esc(commitHref(repo, sha)) + "\"><code>" +
+						esc(commits[0].short) + "</code></a>";
+				}
+			}
+			if (meta && document.getElementById("git-ncommits") &&
+				typeof meta.size === "number") {
+				/* keep baked commit count unless GitHub reports more via commits list */
+			}
+			if (changed)
+				showLive();
+		});
+	}
+
+	function refreshIndex() {
+		return Promise.all(REPOS.map(function (repo) {
+			return fetchRepo(repo).then(function (meta) {
+				return fetchCommits(repo, 1).then(function (c) {
+					return { repo: repo, meta: meta, commits: c };
+				});
+			}).catch(function () { return null; });
+		})).then(function (rows) {
+			var table = document.getElementById("git-repos");
+			if (!table)
+				return;
+			var changed = 0;
+			for (var i = 0; i < rows.length; i++) {
+				if (!rows[i] || !rows[i].commits || !rows[i].commits.length)
+					continue;
+				var tr = table.querySelector("tr[data-repo=\"" + rows[i].repo + "\"]");
+				if (!tr)
+					continue;
+				var sha = rows[i].commits[0].sha;
+				var short = rows[i].commits[0].short;
+				var cells = tr.querySelectorAll("td");
+				if (cells[2]) {
+					var cur = cells[2].textContent.replace(/\s/g, "");
+					if (cur !== short) {
+						cells[2].innerHTML = "<a href=\"" +
+							esc(commitHref(rows[i].repo, sha)) + "\"><code>" +
+							esc(short) + "</code></a>";
+						changed++;
+					}
+				}
+				if (cells[4] && rows[i].commits[0].iso)
+					cells[4].textContent = dayOf(rows[i].commits[0].iso);
+			}
+			if (changed)
+				showLive();
+		});
+	}
+
+	function refreshUser(info) {
+		if (!info.user || !validLogin(info.user))
+			return;
+		return fetchUser(info.user).then(function (u) {
+			var nameEl = document.querySelector(".profile-name");
+			var bio = document.querySelector(".profile-body p:not(.profile-name)");
+			if (u.name && nameEl)
+				nameEl.textContent = u.name;
+			if (u.bio && bio)
+				bio.textContent = u.bio;
+			showLive();
+		}).catch(function () {});
+	}
+
+	function hydrate(info) {
+		if (!info.hydrate || !main)
+			return Promise.resolve();
+		if (info.kind === "commit" && knownRepo(info.repo) && info.sha) {
+			return json(API + "/repos/" + OWNER + "/" + info.repo +
+				"/commits/" + info.sha).then(function (c) {
+				paintCommit(info, c);
+			});
+		}
+		if (info.kind === "blob" && knownRepo(info.repo) && info.path) {
+			return fetchContents(info.repo, info.path).then(function (item) {
+				paintBlob(info, item);
+			});
+		}
+		if (info.kind === "tree" && knownRepo(info.repo)) {
+			return fetchContents(info.repo, info.path).then(function (item) {
+				paintTree(info, item);
+			});
+		}
+		if (info.kind === "user" && validLogin(info.user)) {
+			return fetchUser(info.user).then(function (u) {
+				return Promise.all(REPOS.map(function (repo) {
+					return cached("git-author-" + repo + "-" + info.user,
+						API + "/repos/" + OWNER + "/" + repo +
+						"/commits?author=" + encodeURIComponent(info.user) +
+						"&per_page=20").catch(function () { return []; });
+				})).then(function (lists) {
+					var items = [];
+					for (var i = 0; i < lists.length; i++) {
+						for (var j = 0; j < lists[i].length; j++)
+							items.push(fromCommit(lists[i][j], REPOS[i]));
+					}
+					items.sort(function (a, b) {
+						if (a.iso < b.iso) return 1;
+						if (a.iso > b.iso) return -1;
+						return 0;
+					});
+					var table = "";
+					if (items.length) {
+						table = "<table class=\"pkgs git-log\"><thead><tr><th>Commit</th><th>Repository</th><th>Subject</th><th>Author</th><th>When</th></tr></thead><tbody>";
+						for (var k = 0; k < items.length; k++)
+							table += commitRow(items[k], { showRepo: true });
+						table += "</tbody></table>";
+					}
+					paintUser(u, table);
+					localizeTimes(main);
+				});
+			});
+		}
+		return Promise.resolve();
+	}
+
+	function ready() {
+		bindFilter();
+		localizeTimes(document);
+		var info = pageInfo();
+		var work = colorsReady();
+		if (info.hydrate) {
+			work = work.then(function () { return hydrate(info); })
+				.catch(function () {});
+			return work;
+		}
+		if (info.kind === "index" || info.kind === "users")
+			work = work.then(refreshIndex).catch(function () {});
+		if (info.kind === "repo" || info.kind === "log")
+			work = work.then(function () { return refreshRepo(info); })
+				.catch(function () {});
+		if (info.kind === "user")
+			work = work.then(function () { return refreshUser(info); })
+				.catch(function () {});
+		return work;
+	}
+
 	if (document.readyState === "loading")
 		document.addEventListener("DOMContentLoaded", ready);
 	else
diff --git a/site/assets/live.js b/site/assets/live.js
index a1af22b..54e271d 100644
--- a/site/assets/live.js
+++ b/site/assets/live.js
@@ -165,7 +165,7 @@
 	function profileOf(it) {
 		var name = it && it.author ? String(it.author) : "";
 		if (/^[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$/.test(name) && name.length <= 39)
-			return "https://github.com/" + name;
+			return gitHost + "/users/" + name + "/";
 		return "";
 	}
 
diff --git a/site/assets/style.css b/site/assets/style.css
index 228449f..e454089 100644
--- a/site/assets/style.css
+++ b/site/assets/style.css
@@ -279,22 +279,22 @@ footer p {
 	font-size: 0.9rem;
 }
 
-.feed .who {
+.who {
 	display: inline-flex;
 	align-items: center;
 	gap: 0.35rem;
 	color: var(--fg);
 }
 
-.feed a.who {
+a.who {
 	color: var(--accent);
 }
 
-.feed a.who:hover .avatar {
+a.who:hover .avatar {
 	border-color: var(--accent);
 }
 
-.feed .avatar {
+.avatar {
 	display: block;
 	width: 24px;
 	height: 24px;
@@ -303,7 +303,7 @@ footer p {
 	flex-shrink: 0;
 }
 
-.feed .verified {
+.verified {
 	display: inline-block;
 	color: var(--accent);
 	border: 1px solid var(--accent);
@@ -651,14 +651,9 @@ pre.block.git-blob {
 	display: block;
 	height: 100%;
 	background: var(--accent);
-	opacity: 0.95;
 	min-width: 1px;
 }
 
-.lang-seg:nth-child(2) { opacity: 0.7; }
-.lang-seg:nth-child(3) { opacity: 0.5; }
-.lang-seg:nth-child(n+4) { opacity: 0.35; background: #888; }
-
 .lang-list {
 	list-style: none;
 	padding: 0;
@@ -672,6 +667,69 @@ pre.block.git-blob {
 	margin-right: 1rem;
 }
 
+.lang-dot {
+	display: inline-block;
+	width: 0.65rem;
+	height: 0.65rem;
+	border: 1px solid var(--rule);
+	vertical-align: middle;
+	margin-right: 0.2rem;
+}
+
+.lang-badge {
+	margin: 0 0 0.5rem;
+}
+
+.people {
+	display: flex;
+	flex-wrap: wrap;
+	gap: 0.75rem 1.25rem;
+	margin: 0.75rem 0 1.25rem;
+	align-items: center;
+}
+
+.person {
+	display: inline-flex;
+	align-items: center;
+	gap: 0.35rem;
+}
+
+.profile {
+	display: flex;
+	gap: 1rem;
+	align-items: flex-start;
+	margin: 0 0 1.25rem;
+}
+
+.profile-avatar {
+	width: 80px;
+	height: 80px;
+}
+
+.profile-body {
+	min-width: 0;
+	flex: 1;
+}
+
+.profile-body h2 {
+	margin-top: 0;
+}
+
+.profile-name {
+	margin: 0.15rem 0 0.5rem;
+	color: var(--muted);
+}
+
+.live-note {
+	color: var(--accent);
+	margin: 0.35rem 0 0.75rem;
+}
+
+table.git-log .who,
+table.git-log td {
+	vertical-align: middle;
+}
+
 #git-filter {
 	background: #111;
 	color: var(--fg);
diff --git a/site/docs/sps/index.html b/site/docs/sps/index.html
index 3e2eea2..d3c12dd 100644
--- a/site/docs/sps/index.html
+++ b/site/docs/sps/index.html
@@ -56,7 +56,7 @@ unset SPS_DB SPS_CACHE SPS_BUILD SPS_CONFIG SPS_REPOS_CONFIG SPS_REPO_ROOT</pre>
 <p>Leaving those unset is required so they resolve under the target, not under the live root.</p>
 
 <h3>Repositories</h3>
-<p><code>/etc/sps/repos.conf</code> lists trees. Higher priority wins. Clone from GitHub. The handbook git pages are a static browse of the same trees, not a clone URL.</p>
+<p><code>/etc/sps/repos.conf</code> lists trees. Higher priority wins. Clone from GitHub. The handbook git pages are an HTML mirror of the same trees, not a clone URL.</p>
 <pre class="block">dir core /usr/src/sps/core 100
 dir extra /usr/src/sps/extra 80
 
diff --git a/site/git/index.html b/site/git/index.html
index 6fcfa3c..2827b91 100644
--- a/site/git/index.html
+++ b/site/git/index.html
@@ -15,7 +15,7 @@
 <main id="main">
 <h2>Git</h2>
 <hr class="rule">
-<p>This page is generated at site build from the official clones. If you are reading it in the source tree, run <code>tools/build-site.sh</code>.</p>
+<p>This page is generated at site build from the official clones. Languages follow GitHub Linguist. Commits link to the GitHub accounts that uploaded them. If you are reading it in the source tree, run <code>tools/build-site.sh</code>.</p>
 </main>
 @@FOOTER@@
 </div>
diff --git a/site/index.html b/site/index.html
index f2af9ae..a87cfb7 100644
--- a/site/index.html
+++ b/site/index.html
@@ -87,7 +87,7 @@ Desktop software, graphics, multimedia, development tools, and other packages. @
 <hr class="rule">
 <p>
 <a href="../../../../git/">Splux Git</a>
-static browse of the official trees<br>
+live mirror of the official trees<br>
 <a href="../../../../git/SPS/">SPS</a>
 the package system<br>
 <a href="../../../../git/sps-core/">sps-core</a>
@@ -97,7 +97,7 @@ official extra recipes<br>
 <a href="../../../../git/splux-site/">splux-site</a>
 this website
 </p>
-<p class="note">GitHub holds the clone URLs and live ISO files. This site rebuilds HTML from those trees; it does not run a git server.</p>
+<p class="note">GitHub holds the clone URLs and live ISO files. Splux Git is an HTML mirror of those trees, including accounts. It does not run a git server.</p>
 
 <h2 id="status"><span class="num">[007]</span> Project status</h2>
 <hr class="rule">
diff --git a/site/source/index.html b/site/source/index.html
index 553c77a..eacfd1c 100644
--- a/site/source/index.html
+++ b/site/source/index.html
@@ -15,7 +15,7 @@
 <main id="main">
 <h2>Source</h2>
 <hr class="rule">
-<p>Canonical trees are browsed on <a href="../../../../git/">Splux Git</a>, a static HTML view rebuilt with this site. Clone from GitHub. License for SPS and the package collections is ISC. See each repository.</p>
+<p>Canonical trees are browsed on <a href="../../../../git/">Splux Git</a>, a live HTML mirror of the official clones, including GitHub accounts. Clone from GitHub. License for SPS and the package collections is ISC. See each repository.</p>
 <p><a href="../../../../git/SPS/">SPS</a><br>
 Source Package System. POSIX shell and AWK. Installer and live ISO builder live here too. Clone: <a href="https://github.com/RobertFlexx/SPS.git">github.com/RobertFlexx/SPS.git</a>.</p>
 <p><a href="../../../../git/sps-core/">sps-core</a><br>
diff --git a/tools/build-git.sh b/tools/build-git.sh
index cd6a9d8..ad97c80 100755
--- a/tools/build-git.sh
+++ b/tools/build-git.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 # Build a static git browser under $OUT/git from local clones.
-# No forge and no git-http-backend. Clone URLs are GitHub.
+# Languages follow GitHub Linguist. Authors are GitHub accounts when known.
 # Env: OUT CORE EXTRA SPS SITE GIT_HOST SITE_URL
 
 set -eu
@@ -16,56 +16,29 @@ SITE_URL=${SITE_URL:-https://splux.robertflexx.dev}
 GIT_HOST=${GIT_HOST:-$SITE_URL/git}
 GIT_HOST=${GIT_HOST%/}
 AWK=tools/git.awk
+LANGAWK=tools/git-lang.awk
+MAPFILE=${MAPFILE:-tools/linguist.map}
 MAXBLOB=262144
+OWNER=RobertFlexx
+tab=$(printf '\t')
+
+GIT_KIND=
+GIT_REPO=
+GIT_USER=
+GIT_SHA=
+GIT_PATH=
 
 esc() {
 	awk -f "$AWK" -v mode=one -v text="$1"
 }
 
-is_git() {
-	git -C "$1" rev-parse --is-inside-work-tree >/dev/null 2>&1
+# cut -f keeps empty TSV columns. IFS=tab read does not.
+tsv_cut() {
+	printf '%s\n' "$1" | cut -f "$2"
 }
 
-lang_of() {
-	path=$1
-	base=${path##*/}
-	case $path in
-		lib/setup/sv/*)
-			printf '%s\n' Shell
-			return
-			;;
-	esac
-	case $base in
-		recipe) printf '%s\n' Recipe; return ;;
-		run) printf '%s\n' Shell; return ;;
-		Makefile|makefile|GNUmakefile) printf '%s\n' Make; return ;;
-		LICENSE|COPYING|COPYRIGHT) printf '%s\n' Text; return ;;
-		.gitignore|.gitattributes|.gitmodules) printf '%s\n' Git; return ;;
-		CNAME) printf '%s\n' Text; return ;;
-	esac
-	case $path in
-		*.sh) printf '%s\n' Shell ;;
-		*.awk) printf '%s\n' AWK ;;
-		*.c|*.h|*.in) printf '%s\n' C ;;
-		*.md) printf '%s\n' Markdown ;;
-		*.html) printf '%s\n' HTML ;;
-		*.css) printf '%s\n' CSS ;;
-		*.js) printf '%s\n' JavaScript ;;
-		*.json) printf '%s\n' JSON ;;
-		*.yml|*.yaml) printf '%s\n' YAML ;;
-		*.py) printf '%s\n' Python ;;
-		*.scm) printf '%s\n' Scheme ;;
-		*.service) printf '%s\n' systemd ;;
-		*.1|*.5|*.8) printf '%s\n' Manual ;;
-		*.svg) printf '%s\n' SVG ;;
-		*.xml) printf '%s\n' XML ;;
-		*.txt|*.conf|*.ini|*.cfg) printf '%s\n' Text ;;
-		*.png|*.jpg|*.jpeg|*.gif|*.webp|*.ico|*.woff|*.woff2|*.ttf)
-			printf '%s\n' Binary ;;
-		*.gz|*.xz|*.zst|*.bz2|*.zip|*.tar)
-			printf '%s\n' Binary ;;
-		*) printf '%s\n' Other ;;
-	esac
+is_git() {
+	git -C "$1" rev-parse --is-inside-work-tree >/dev/null 2>&1
 }
 
 is_binary_name() {
@@ -77,6 +50,37 @@ is_binary_name() {
 	return 1
 }
 
+have_gh() {
+	command -v gh >/dev/null 2>&1
+}
+
+github_of() {
+	case $1 in
+		SPS) printf '%s\n' https://github.com/RobertFlexx/SPS ;;
+		sps-core) printf '%s\n' https://github.com/RobertFlexx/sps-core ;;
+		sps-extra) printf '%s\n' https://github.com/RobertFlexx/sps-extra ;;
+		splux-site) printf '%s\n' https://github.com/RobertFlexx/splux-site ;;
+		*) printf '%s\n' "https://github.com/RobertFlexx/$1" ;;
+	esac
+}
+
+desc_of() {
+	case $1 in
+		SPS) printf '%s\n' 'Source Package System. Installer and live ISO builder.' ;;
+		sps-core) printf '%s\n' 'Official base recipe collection.' ;;
+		sps-extra) printf '%s\n' 'Official extra recipe collection.' ;;
+		splux-site) printf '%s\n' 'This website. Static HTML from the recipe trees.' ;;
+		*) printf '%s\n' "$1" ;;
+	esac
+}
+
+valid_login() {
+	case $1 in
+		""|-*|*-|*[^A-Za-z0-9-]*) return 1 ;;
+	esac
+	[ "${#1}" -ge 1 ] && [ "${#1}" -le 39 ]
+}
+
 page_begin() {
 	_dest=$1
 	_title=$2
@@ -97,7 +101,13 @@ page_begin() {
 		printf '%s\n' '<a class="skip" href="#main">Skip to content</a>'
 		printf '%s\n' '<div class="wrap">'
 		printf '%s\n' '@@HEADER@@'
-		printf '%s\n' '<main id="main">'
+		printf '<main id="main" class="git-page"'
+		[ -n "${GIT_KIND-}" ] && printf ' data-kind="%s"' "$(esc "$GIT_KIND")"
+		[ -n "${GIT_REPO-}" ] && printf ' data-repo="%s"' "$(esc "$GIT_REPO")"
+		[ -n "${GIT_USER-}" ] && printf ' data-user="%s"' "$(esc "$GIT_USER")"
+		[ -n "${GIT_SHA-}" ] && printf ' data-sha="%s"' "$(esc "$GIT_SHA")"
+		[ -n "${GIT_PATH-}" ] && printf ' data-path="%s"' "$(esc "$GIT_PATH")"
+		printf '>\n'
 	} >"$_dest"
 }
 
@@ -107,9 +117,7 @@ page_end() {
 		printf '%s\n' '</main>'
 		printf '%s\n' '@@FOOTER@@'
 		printf '%s\n' '</div>'
-		if [ "${2-}" = "gitjs" ]; then
-			printf '%s\n' '<script src="../../../../assets/git.js?v=4c4f12c-20261019130111"></script>'
-		fi
+		printf '%s\n' '<script src="../../../../assets/git.js?v=4c4f12c-20261019130111" data-root="../../../../" data-git="https://splux.robertflexx.dev/git"></script>'
 		printf '%s\n' '</body></html>'
 	} >>"$_dest"
 }
@@ -130,30 +138,148 @@ write_redirect() {
 	} >"$dest"
 }
 
-github_of() {
-	case $1 in
-		SPS) printf '%s\n' https://github.com/RobertFlexx/SPS ;;
-		sps-core) printf '%s\n' https://github.com/RobertFlexx/sps-core ;;
-		sps-extra) printf '%s\n' https://github.com/RobertFlexx/sps-extra ;;
-		splux-site) printf '%s\n' https://github.com/RobertFlexx/splux-site ;;
-		*) printf '%s\n' "https://github.com/RobertFlexx/$1" ;;
-	esac
+lookup_lang() {
+	_path=$1
+	_file=$2
+	[ -s "$_file" ] || return 0
+	awk -F '\t' -v p="$_path" '$1 == p { print $2 "\t" $4; exit }' "$_file"
 }
 
-desc_of() {
-	case $1 in
-		SPS) printf '%s\n' 'Source Package System. Installer and live ISO builder.' ;;
-		sps-core) printf '%s\n' 'Official base recipe collection.' ;;
-		sps-extra) printf '%s\n' 'Official extra recipe collection.' ;;
-		splux-site) printf '%s\n' 'This website. Static HTML from the recipe trees.' ;;
-		*) printf '%s\n' "$1" ;;
-	esac
+colorize_langs() {
+	awk -F '\t' -v OFS='\t' '
+		FNR == NR {
+			if ($1 == "lang" && $3 != "")
+				c[$3] = $5
+			next
+		}
+		{
+			col = ($3 != "") ? $3 : c[$1]
+			print $1, $2, col
+		}
+	' "$MAPFILE" "$1"
+}
+
+local_lang_scan() {
+	_dir=$1
+	_dest=$2
+	git -C "$_dir" ls-tree -r -l HEAD | while IFS= read -r line
+	do
+		set -- $line
+		[ "${2-}" = blob ] || continue
+		_sz=$4
+		_obj=$3
+		shift 4
+		_path=$*
+		[ -n "$_path" ] || continue
+		_base=${_path##*/}
+		_shebang=
+		case $_base in
+			*.*|recipe) ;;
+			*)
+				if ! is_binary_name "$_base"; then
+					_shebang=$(git -C "$_dir" cat-file blob "$_obj" | awk 'NR==1 { print; exit }' | tr '\t\r' '  ')
+					case $_shebang in
+						'#!'*) ;;
+						*) _shebang= ;;
+					esac
+				fi
+				;;
+		esac
+		printf '%s\t%s\t%s\n' "$_sz" "$_path" "$_shebang"
+	done >"$_dest"
+}
+
+fetch_github_langs() {
+	_repo=$1
+	_dest=$2
+	have_gh || return 1
+	gh api "repos/$OWNER/$_repo/languages" --jq \
+		'to_entries | sort_by(-.value) | .[] | [.key, (.value|tostring)] | @tsv' \
+		>"$_dest" 2>/dev/null && [ -s "$_dest" ]
 }
 
-mkdir -p "$OUT/git" "$OUT/data"
+fetch_github_commits() {
+	_repo=$1
+	_dest=$2
+	have_gh || return 1
+	gh api --paginate "repos/$OWNER/$_repo/commits?per_page=100" --jq \
+		'.[] | [
+			.sha,
+			(.author.login // .committer.login // ""),
+			((.author.avatar_url // .committer.avatar_url // "") | gsub("[\r\t]"; " ")),
+			(if .commit.verification.verified == true then "yes" else "no" end)
+		] | @tsv' >"$_dest" 2>/dev/null && [ -s "$_dest" ]
+}
+
+fetch_github_user() {
+	_login=$1
+	_dest=$2
+	have_gh || return 1
+	valid_login "$_login" || return 1
+	gh api "users/$_login" --jq \
+		'[
+			.login,
+			((.name // "") | gsub("[\r\t\n]"; " ")),
+			((.bio // "") | gsub("[\r\t\n]"; " ")),
+			(.avatar_url // ""),
+			(.html_url // ""),
+			(.public_repos | tostring),
+			(.followers | tostring),
+			((.company // "") | gsub("[\r\t\n]"; " ")),
+			((.location // "") | gsub("[\r\t\n]"; " ")),
+			((.blog // "") | gsub("[\r\t\n]"; " "))
+		] | @tsv' >"$_dest" 2>/dev/null && [ -s "$_dest" ]
+}
+
+who_cell() {
+	awk -f "$AWK" -v mode=who \
+		-v userpfx="$1" -v login="$2" -v name="$3" \
+		-v avatar="$4" -v verified="$5"
+}
+
+mkdir -p "$OUT/git" "$OUT/data" "$OUT/git/users"
+
+# Refresh Linguist map when the network allows; keep the committed map otherwise.
+if command -v curl >/dev/null 2>&1; then
+	yml=$OUT/data/.languages.yml
+	if curl -fsSL --max-time 20 \
+		-o "$yml" \
+		https://raw.githubusercontent.com/github-linguist/linguist/master/lib/linguist/languages.yml
+	then
+		if awk -f tools/linguist-extract.awk "$yml" >"$OUT/data/.linguist.map" &&
+			[ -s "$OUT/data/.linguist.map" ]
+		then
+			MAPFILE=$OUT/data/.linguist.map
+		fi
+	fi
+	rm -f "$yml"
+fi
+
+if [ ! -s "$MAPFILE" ]; then
+	printf '%s\n' "git: missing $MAPFILE" >&2
+	exit 1
+fi
+
+awk -F '\t' '
+function jesc(s) {
+	gsub(/\\/, "\\\\", s)
+	gsub(/"/, "\\\"", s)
+	return s
+}
+BEGIN { printf "{" }
+$1 == "lang" && $3 != "" && $5 != "" {
+	if (n++) printf ","
+	printf "\"%s\":\"%s\"", jesc($3), jesc($5)
+}
+END { print "}" }
+' "$MAPFILE" >"$OUT/data/linguist-colors.json"
 
 index_rows=$OUT/data/git-index.tsv
+all_commits=$OUT/data/git-commits.tsv
+all_people=$OUT/data/git-people.tsv
 : >"$index_rows"
+: >"$all_commits"
+: >"$all_people"
 
 build_repo() {
 	name=$1
@@ -173,32 +299,23 @@ build_repo() {
 	base=$OUT/git/$name
 	mkdir -p "$base/log" "$base/refs" "$base/tree" "$base/commit" "$base/blob"
 
-	# Language counts by blob size at HEAD.
+	scan=$base/.scan.tsv
+	filelang=$base/.filelang.tsv
 	langtmp=$base/.langs.tsv
-	: >"$langtmp"
-	git -C "$dir" ls-tree -r -l HEAD | while IFS= read -r line
-	do
-		# 100644 blob HASH SIZE PATH
-		set -- $line
-		mode=$1
-		kind=$2
-		obj=$3
-		sz=$4
-		shift 4
-		path=$*
-		[ "$kind" = blob ] || continue
-		[ -n "$path" ] || continue
-		lang=$(lang_of "$path")
-		printf '%s\t%s\n' "$lang" "$sz"
-	done | awk -F '\t' '
-		{ b[$1] += $2 + 0 }
-		END {
-			for (k in b)
-				print k "\t" b[k]
-		}
-	' | LC_ALL=C sort -t "$(printf '\t')" -k2,2nr >"$langtmp"
+	local_lang_scan "$dir" "$scan"
+	awk -f "$LANGAWK" -v mode=count -v mapfile="$MAPFILE" -v filelang="$filelang" \
+		"$scan" >"$base/.langs-local.tsv"
+	rm -f "$scan"
+
+	ghl=$base/.langs-gh.tsv
+	if fetch_github_langs "$name" "$ghl"; then
+		colorize_langs "$ghl" | LC_ALL=C sort -t "$(printf '\t')" -k2,2nr >"$langtmp"
+	else
+		LC_ALL=C sort -t "$(printf '\t')" -k2,2nr "$base/.langs-local.tsv" >"$langtmp"
+	fi
+	rm -f "$ghl" "$base/.langs-local.tsv"
+	cp "$langtmp" "$OUT/data/git-langs-$name.tsv"
 
-	# Commits
 	clog=$base/.commits.tsv
 	git -C "$dir" log --format='%H%x09%h%x09%ct%x09%cI%x09%an%x09%s' |
 		awk -F '\t' 'BEGIN { OFS="\t" } {
@@ -206,9 +323,45 @@ build_repo() {
 			for (i = 7; i <= NF; i++) subj = subj " " $i
 			gsub(/\t/, " ", subj)
 			print $1, $2, $3, $4, subj, $5
-		}' >"$clog"
+		}' >"$base/.commits-local.tsv"
+	ghc=$base/.commits-gh.tsv
+	if fetch_github_commits "$name" "$ghc"; then
+		awk -F '\t' -v OFS='\t' '
+			FNR == NR { login[$1]=$2; av[$1]=$3; ver[$1]=$4; next }
+			{ print $1, $2, $3, $4, $5, $6, login[$1], av[$1], ver[$1] }
+		' "$ghc" "$base/.commits-local.tsv" >"$clog"
+	else
+		awk -F '\t' -v OFS='\t' '{ print $0, "", "", "" }' \
+			"$base/.commits-local.tsv" >"$clog"
+	fi
+	rm -f "$ghc" "$base/.commits-local.tsv"
+
+	awk -F '\t' -v OFS='\t' -v repo="$name" '{
+		print repo, $1, $2, $3, $4, $5, $6, $7, $8, $9
+	}' "$clog" >>"$all_commits"
+
+	awk -F '\t' -v OFS='\t' '{
+		if ($7 == "") next
+		login=$7
+		av=$8
+		c[login]++
+		if (av != "" && !(login in avatar))
+			avatar[login]=av
+	}
+	END {
+		for (l in c)
+			print l, avatar[l], c[l]
+	}' "$clog" | LC_ALL=C sort -t "$(printf '\t')" -k3,3nr >"$base/.people.tsv"
+	if [ -s "$base/.people.tsv" ]; then
+		cat "$base/.people.tsv" >>"$all_people"
+	fi
+
+	GIT_KIND=repo
+	GIT_REPO=$name
+	GIT_USER=
+	GIT_SHA=
+	GIT_PATH=
 
-	# Repo home
 	page_begin "$base/index.html" "$name - Splux Git" "$repo_desc"
 	{
 		printf '<h2>%s</h2>\n' "$(esc "$name")"
@@ -216,12 +369,14 @@ build_repo() {
 		printf '<p>%s</p>\n' "$(esc "$repo_desc")"
 		printf '%s\n' '<p class="git-nav">'
 		printf '<a href="log/">log</a> · <a href="tree/">files</a> · <a href="refs/">refs</a> · '
-		printf '<a href="%s">GitHub mirror</a>\n' "$(esc "$gh")"
+		printf '<a href="../users/">people</a> · '
+		printf '<a href="%s">GitHub</a>\n' "$(esc "$gh")"
 		printf '%s\n' '</p>'
-		printf '%s\n' '<div class="info">'
-		printf '<div class="dl-row"><span class="muted">HEAD</span><span><a href="commit/%s/"><code>%s</code></a> (%s)</span></div>\n' \
+		printf '%s\n' '<p class="live-note" id="git-live" hidden>Showing newer commits from GitHub.</p>'
+		printf '%s\n' '<div class="info" id="git-info">'
+		printf '<div class="dl-row"><span class="muted">HEAD</span><span id="git-head"><a href="commit/%s/"><code>%s</code></a> (%s)</span></div>\n' \
 			"$(esc "$head")" "$(esc "$short")" "$(esc "$branch")"
-		printf '<div class="dl-row"><span class="muted">Commits</span><span>%s</span></div>\n' \
+		printf '<div class="dl-row"><span class="muted">Commits</span><span id="git-ncommits">%s</span></div>\n' \
 			"$(esc "$ncommits")"
 		printf '<div class="dl-row"><span class="muted">Files</span><span>%s</span></div>\n' \
 			"$(esc "$nfiles")"
@@ -230,10 +385,21 @@ build_repo() {
 		printf '%s\n' '</div>'
 		if [ -s "$langtmp" ]; then
 			printf '%s\n' '<h3>Languages</h3>'
+			printf '%s\n' '<div id="git-langs">'
 			awk -f "$AWK" -v mode=langs "$langtmp"
+			printf '%s\n' '</div>'
+		else
+			printf '%s\n' '<div id="git-langs"></div>'
+		fi
+		if [ -s "$base/.people.tsv" ]; then
+			printf '%s\n' '<h3>People</h3>'
+			awk -f "$AWK" -v mode=people -v userpfx="../users/" "$base/.people.tsv"
 		fi
 		printf '%s\n' '<h3>Recent commits</h3>'
-		awk -f "$AWK" -v mode=commits -v commitpfx="commit/" -v limit=20 "$clog"
+		printf '%s\n' '<div id="git-recent">'
+		awk -f "$AWK" -v mode=commits -v commitpfx="commit/" \
+			-v userpfx="../users/" -v limit=20 "$clog"
+		printf '%s\n' '</div>'
 		printf '%s\n' '<p><a href="log/">Full log</a></p>'
 		if git -C "$dir" cat-file -e HEAD:README.md 2>/dev/null; then
 			printf '%s\n' '<h3>README.md</h3>'
@@ -245,17 +411,22 @@ build_repo() {
 	} >>"$base/index.html"
 	page_end "$base/index.html"
 
-	# Full log
+	GIT_KIND=log
 	page_begin "$base/log/index.html" "Log - $name - Splux Git" "Commit log for $name"
 	{
-		printf '<p class="git-nav"><a href="../">%s</a> · log</p>\n' "$(esc "$name")"
+		printf '<p class="git-nav"><a href="../">%s</a> · log · <a href="../../users/">people</a></p>\n' \
+			"$(esc "$name")"
 		printf '<h2>Log</h2>\n'
 		printf '%s\n' '<hr class="rule">'
-		awk -f "$AWK" -v mode=commits -v commitpfx="../commit/" "$clog"
+		printf '%s\n' '<p class="live-note" id="git-live" hidden>Showing newer commits from GitHub.</p>'
+		printf '%s\n' '<div id="git-log">'
+		awk -f "$AWK" -v mode=commits -v commitpfx="../commit/" \
+			-v userpfx="../../users/" "$clog"
+		printf '%s\n' '</div>'
 	} >>"$base/log/index.html"
 	page_end "$base/log/index.html"
 
-	# Refs
+	GIT_KIND=refs
 	page_begin "$base/refs/index.html" "Refs - $name - Splux Git" "Branches and tags for $name"
 	{
 		printf '<p class="git-nav"><a href="../">%s</a> · refs</p>\n' "$(esc "$name")"
@@ -275,32 +446,37 @@ build_repo() {
 		printf '%s\n' '</ul>'
 		printf '%s\n' '<h3>Tags</h3>'
 		printf '%s\n' '<ul class="plain">'
-		ntags=0
 		git -C "$dir" for-each-ref --format='%(objectname) %(refname:short)' refs/tags |
 		while IFS= read -r line
 		do
 			[ -n "$line" ] || continue
 			h=${line%% *}
 			r=${line#* }
-			# Peel annotated tags to the commit when possible.
 			c=$(git -C "$dir" rev-parse "$r^{commit}" 2>/dev/null || printf '%s\n' "$h")
 			printf '<li><a href="../commit/%s/">%s</a></li>\n' \
 				"$(esc "$c")" "$(esc "$r")"
-			ntags=1
 		done
-		if [ "$ntags" = 0 ]; then
-			:
-		fi
 		printf '%s\n' '</ul>'
 	} >>"$base/refs/index.html"
 	page_end "$base/refs/index.html"
 
-	# Commits
-	while IFS="$(printf '\t')" read -r hash shortc epoch iso subject author || [ -n "${hash-}" ]
+	while IFS= read -r _line || [ -n "${_line-}" ]
 	do
-		[ -n "${hash-}" ] || continue
+		[ -n "${_line-}" ] || continue
+		hash=$(tsv_cut "$_line" 1)
+		shortc=$(tsv_cut "$_line" 2)
+		iso=$(tsv_cut "$_line" 4)
+		subject=$(tsv_cut "$_line" 5)
+		author=$(tsv_cut "$_line" 6)
+		login=$(tsv_cut "$_line" 7)
+		avatar=$(tsv_cut "$_line" 8)
+		verified=$(tsv_cut "$_line" 9)
+		[ -n "$hash" ] || continue
 		cdir=$base/commit/$hash
 		mkdir -p "$cdir"
+		GIT_KIND=commit
+		GIT_SHA=$hash
+		GIT_PATH=
 		page_begin "$cdir/index.html" "$shortc - $name - Splux Git" "$subject"
 		{
 			printf '<p class="git-nav"><a href="../../">%s</a> · <a href="../../log/">log</a> · commit</p>\n' \
@@ -310,7 +486,7 @@ build_repo() {
 			printf '<p>%s</p>\n' "$(esc "$subject")"
 			printf '%s\n' '<div class="info">'
 			printf '<div class="dl-row"><span class="muted">Author</span><span>%s</span></div>\n' \
-				"$(esc "$author")"
+				"$(who_cell "../../../users/" "$login" "$author" "$avatar" "$verified")"
 			printf '<div class="dl-row"><span class="muted">Date</span><span><time datetime="%s">%s</time></span></div>\n' \
 				"$(esc "$iso")" "$(esc "$iso")"
 			printf '<div class="dl-row"><span class="muted">Commit</span><span><code>%s</code></span></div>\n' \
@@ -333,7 +509,6 @@ build_repo() {
 			printf '%s\n' '<h3>Stat</h3>'
 			git -C "$dir" show --stat --format= "$hash" | awk -f "$AWK" -v mode=pre
 			printf '%s\n' '<h3>Diff</h3>'
-			# Truncate huge diffs so the Pages artifact stays small.
 			git -C "$dir" show --format= --color=never "$hash" |
 				dd bs=1024 count=300 2>/dev/null |
 				awk -f "$AWK" -v mode=pre
@@ -344,9 +519,11 @@ build_repo() {
 		fi
 	done <"$clog"
 
-	# Trees and blobs at HEAD
 	write_tree() {
 		treepath=${1-}
+		GIT_KIND=tree
+		GIT_SHA=
+		GIT_PATH=$treepath
 		if [ -n "$treepath" ]; then
 			tdest=$base/tree/$treepath/index.html
 			title="$treepath - $name - Splux Git"
@@ -408,14 +585,16 @@ build_repo() {
 				basepath=${path##*/}
 				[ -n "$basepath" ] || continue
 				if [ "$kind" = tree ]; then
-					printf 'dir\t\t%s\t%s\n' "$basepath/" "$treepfx$basepath/"
+					printf 'dir\t\t%s\t%s\t\n' "$basepath/" "$treepfx$basepath/"
 				elif [ "$kind" = blob ]; then
 					if [ -n "$treepath" ]; then
 						fullpath=$treepath/$basepath
 					else
 						fullpath=$basepath
 					fi
-					printf 'file\t%s\t%s\t%s\n' "$sz" "$basepath" "$blobpfx$fullpath/"
+					fl=$(lookup_lang "$fullpath" "$filelang")
+					flang=${fl%%$tab*}
+					printf 'file\t%s\t%s\t%s\t%s\n' "$sz" "$basepath" "$blobpfx$fullpath/" "$flang"
 				fi
 			done >"$ent"
 			if [ -s "$ent" ]; then
@@ -424,11 +603,10 @@ build_repo() {
 				printf '%s\n' '<p class="muted">empty directory</p>'
 			fi
 		} >>"$tdest"
-		page_end "$tdest" gitjs
+		page_end "$tdest"
 	}
 
 	write_tree ""
-	# Every directory that contains a blob.
 	git -C "$dir" ls-tree -r -d --name-only HEAD | while IFS= read -r d
 	do
 		[ -n "$d" ] || continue
@@ -445,9 +623,11 @@ build_repo() {
 		path=$*
 		[ -n "$path" ] || continue
 		bdest=$base/blob/$path/index.html
+		GIT_KIND=blob
+		GIT_SHA=
+		GIT_PATH=$path
 		page_begin "$bdest" "$path - $name - Splux Git" "$path at HEAD"
 		parent=${path%/*}
-		# depth of blob/path/... 
 		depth=1
 		rest=$path
 		while [ "$rest" != "${rest#*/}" ]
@@ -462,7 +642,10 @@ build_repo() {
 			up="../$up"
 			j=$((j + 1))
 		done
-		# blob/a/b -> up is ../../../ (blob + a + b) = depth+1, plus we started le depth so depth+1. Good.
+		fl=$(lookup_lang "$path" "$filelang")
+		flang=${fl%%$tab*}
+		fcolor=${fl#*$tab}
+		[ "$fcolor" = "$fl" ] && fcolor=
 		{
 			if [ "$parent" = "$path" ]; then
 				dirhref="${up}tree/"
@@ -473,6 +656,10 @@ build_repo() {
 				"$(esc "$up")" "$(esc "$name")" "$(esc "$dirhref")"
 			printf '<h2>%s</h2>\n' "$(esc "$path")"
 			printf '%s\n' '<hr class="rule">'
+			if [ -n "$flang" ]; then
+				printf '<p class="lang-badge"><span class="lang-dot" style="background:%s"></span> %s</p>\n' \
+					"$(esc "${fcolor:-#888888}")" "$(esc "$flang")"
+			fi
 			printf '<p class="muted">%s bytes at <a href="%scommit/%s/">%s</a> · <a href="%s/blob/main/%s">GitHub</a></p>\n' \
 				"$(esc "$sz")" "$(esc "$up")" "$(esc "$head")" "$(esc "$short")" \
 				"$(esc "$gh")" "$(esc "$path")"
@@ -496,7 +683,7 @@ build_repo() {
 		"$name" "$repo_desc" "$short" "$head" "$ncommits" "$nfiles" "$day" "$gh" \
 		>>"$index_rows"
 
-	rm -f "$langtmp" "$clog" "$base/.entries.tsv"
+	rm -f "$langtmp" "$clog" "$base/.entries.tsv" "$base/.people.tsv" "$filelang"
 	printf '%s\n' "git: $name ($ncommits commits, $nfiles files)" >&2
 }
 
@@ -505,18 +692,167 @@ build_repo sps-core "$CORE"
 build_repo sps-extra "$EXTRA"
 build_repo splux-site "$SITE"
 
-# Index
-page_begin "$OUT/git/index.html" "Git - Splux Linux" "Static browse of the official Splux git trees."
+# People across trees
+users_raw=$OUT/data/.users-raw.tsv
+awk -F '\t' -v OFS='\t' '
+	$1 == "" { next }
+	{
+		login=$1
+		av=$2
+		c[login] += $3 + 0
+		if (av != "" && !(login in avatar))
+			avatar[login]=av
+	}
+	END {
+		for (l in c)
+			print l, avatar[l], c[l]
+	}
+' "$all_people" | LC_ALL=C sort -t "$(printf '\t')" -k3,3nr >"$users_raw"
+
+users_full=$OUT/data/git-users.tsv
+: >"$users_full"
+if [ -s "$users_raw" ]; then
+	while IFS="$(printf '\t')" read -r login avatar n || [ -n "${login-}" ]
+	do
+		[ -n "${login-}" ] || continue
+		valid_login "$login" || continue
+		uf=$OUT/data/.user-$login.tsv
+		if fetch_github_user "$login" "$uf"; then
+			awk -F '\t' -v OFS='\t' -v n="$n" -v av="$avatar" '{
+				if ($4 == "" && av != "") $4 = av
+				print $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, n
+			}' "$uf" >>"$users_full"
+		else
+			printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n' \
+				"$login" "" "" "$avatar" "https://github.com/$login" \
+				"" "" "" "" "" "$n" >>"$users_full"
+		fi
+		rm -f "$uf"
+	done <"$users_raw"
+fi
+rm -f "$users_raw"
+
+GIT_KIND=users
+GIT_REPO=
+GIT_USER=
+GIT_SHA=
+GIT_PATH=
+page_begin "$OUT/git/users/index.html" "People - Splux Git" "GitHub accounts that pushed to the official Splux trees."
+{
+	printf '%s\n' '<p class="git-nav"><a href="../">git</a> · people</p>'
+	printf '%s\n' '<h2>People</h2>'
+	printf '%s\n' '<hr class="rule">'
+	printf '%s\n' '<p>Accounts that authored commits in SPS, sps-core, sps-extra, and this site. Avatars and names come from GitHub. Open someone to see their profile and their commits here.</p>'
+	printf '%s\n' '<p class="live-note" id="git-live" hidden>Updated from GitHub.</p>'
+	if [ -s "$users_full" ]; then
+		awk -F '\t' -v OFS='\t' '{ print $1, $4, $11 }' "$users_full" |
+			awk -f "$AWK" -v mode=people -v userpfx="./"
+	else
+		printf '%s\n' '<p class="muted">No GitHub accounts recorded for these commits.</p>'
+	fi
+} >>"$OUT/git/users/index.html"
+page_end "$OUT/git/users/index.html"
+
+tab=$(printf '\t')
+if [ -s "$users_full" ]; then
+	while IFS= read -r _line || [ -n "${_line-}" ]
+	do
+		[ -n "${_line-}" ] || continue
+		login=$(tsv_cut "$_line" 1)
+		name=$(tsv_cut "$_line" 2)
+		bio=$(tsv_cut "$_line" 3)
+		avatar=$(tsv_cut "$_line" 4)
+		htmlurl=$(tsv_cut "$_line" 5)
+		prepos=$(tsv_cut "$_line" 6)
+		followers=$(tsv_cut "$_line" 7)
+		company=$(tsv_cut "$_line" 8)
+		location=$(tsv_cut "$_line" 9)
+		blog=$(tsv_cut "$_line" 10)
+		n=$(tsv_cut "$_line" 11)
+		[ -n "$login" ] || continue
+		udest=$OUT/git/users/$login/index.html
+		GIT_KIND=user
+		GIT_USER=$login
+		page_begin "$udest" "$login - Splux Git" "GitHub account $login"
+		{
+			printf '%s\n' '<p class="git-nav"><a href="../../">git</a> · <a href="../">people</a></p>'
+			printf '%s\n' '<div class="profile" id="git-profile">'
+			if [ -n "$avatar" ]; then
+				printf '<img class="avatar profile-avatar" src="%s" width="80" height="80" alt="">\n' \
+					"$(esc "$avatar")"
+			fi
+			printf '%s\n' '<div class="profile-body">'
+			printf '<h2>%s</h2>\n' "$(esc "$login")"
+			if [ -n "$name" ] && [ "$name" != "$login" ]; then
+				printf '<p class="profile-name">%s</p>\n' "$(esc "$name")"
+			fi
+			if [ -n "$bio" ]; then
+				printf '<p>%s</p>\n' "$(esc "$bio")"
+			fi
+			printf '%s\n' '<div class="info">'
+			if [ -n "$htmlurl" ]; then
+				printf '<div class="dl-row"><span class="muted">GitHub</span><span><a href="%s">%s</a></span></div>\n' \
+					"$(esc "$htmlurl")" "$(esc "$login")"
+			fi
+			if [ -n "$company" ]; then
+				printf '<div class="dl-row"><span class="muted">Company</span><span>%s</span></div>\n' \
+					"$(esc "$company")"
+			fi
+			if [ -n "$location" ]; then
+				printf '<div class="dl-row"><span class="muted">Location</span><span>%s</span></div>\n' \
+					"$(esc "$location")"
+			fi
+			if [ -n "$blog" ]; then
+				printf '<div class="dl-row"><span class="muted">URL</span><span><a href="%s">%s</a></span></div>\n' \
+					"$(esc "$blog")" "$(esc "$blog")"
+			fi
+			if [ -n "$prepos" ]; then
+				printf '<div class="dl-row"><span class="muted">Public repos</span><span>%s</span></div>\n' \
+					"$(esc "$prepos")"
+			fi
+			if [ -n "$followers" ]; then
+				printf '<div class="dl-row"><span class="muted">Followers</span><span>%s</span></div>\n' \
+					"$(esc "$followers")"
+			fi
+			if [ -n "$n" ]; then
+				printf '<div class="dl-row"><span class="muted">Commits here</span><span>%s</span></div>\n' \
+					"$(esc "$n")"
+			fi
+			printf '%s\n' '</div>'
+			printf '%s\n' '</div></div>'
+			printf '%s\n' '<h3>Commits in Splux trees</h3>'
+			printf '%s\n' '<div id="git-user-log">'
+			awk -F '\t' -v OFS='\t' -v login="$login" '
+				$8 == login {
+					print $2, $3, $4, $5, $6, $7, $8, $9, $10, $1
+				}
+			' "$all_commits" |
+				awk -f "$AWK" -v mode=commits -v repopfx="../../" \
+					-v userpfx="../"
+			printf '%s\n' '</div>'
+		} >>"$udest"
+		page_end "$udest"
+	done <"$users_full"
+fi
+
+GIT_KIND=index
+GIT_REPO=
+GIT_USER=
+GIT_SHA=
+GIT_PATH=
+page_begin "$OUT/git/index.html" "Git - Splux Linux" "Always-updating browse of the official Splux git trees."
 {
 	printf '%s\n' '<h2>Git</h2>'
 	printf '%s\n' '<hr class="rule">'
-	printf '%s\n' '<p>This is a static browse of the official trees, rebuilt with the handbook. There is no git server here: no accounts, no pull requests, and no <code>git clone</code> from this host. Clone the GitHub mirrors. The commits, files, and language counts on these pages are the same history.</p>'
+	printf '%s\n' '<p>This is a live HTML mirror of the official trees. Languages match GitHub Linguist. Each commit shows the GitHub account that uploaded it, with their avatar. Open <a href="users/">people</a> for profiles. Pages rebuild with the handbook; the browser also asks GitHub for anything newer. There is no git server here. Clone the GitHub URLs.</p>'
+	printf '%s\n' '<p class="git-nav"><a href="users/">people</a></p>'
+	printf '%s\n' '<p class="live-note" id="git-live" hidden>Updated from GitHub.</p>'
 	printf '%s\n' '<p><label for="git-filter">Filter</label> <input id="git-filter" type="search" placeholder="repository"></p>'
 	printf '%s\n' '<table class="pkgs" id="git-repos">'
 	printf '%s\n' '<thead><tr><th>Repository</th><th>Description</th><th>HEAD</th><th>Commits</th><th>Updated</th></tr></thead>'
 	printf '%s\n' '<tbody>'
 	if [ -s "$index_rows" ]; then
-		while IFS="$(printf '\t')" read -r name desc short head ncommits nfiles day gh || [ -n "${name-}" ]
+		while IFS="$tab" read -r name desc short head ncommits nfiles day gh || [ -n "${name-}" ]
 		do
 			[ -n "${name-}" ] || continue
 			printf '<tr data-repo="%s" data-search="%s %s">' \
@@ -531,6 +867,11 @@ page_begin "$OUT/git/index.html" "Git - Splux Linux" "Static browse of the offic
 		done <"$index_rows"
 	fi
 	printf '%s\n' '</tbody></table>'
+	if [ -s "$users_full" ]; then
+		printf '%s\n' '<h3>People</h3>'
+		awk -F '\t' -v OFS='\t' '{ print $1, $4, $11 }' "$users_full" |
+			awk -f "$AWK" -v mode=people -v userpfx="users/"
+	fi
 	printf '%s\n' '<h3>Clone</h3>'
 	printf '%s\n' '<pre class="block">git clone https://github.com/RobertFlexx/SPS.git'
 	printf '%s\n' 'git clone https://github.com/RobertFlexx/sps-core.git'
@@ -538,9 +879,9 @@ page_begin "$OUT/git/index.html" "Git - Splux Linux" "Static browse of the offic
 	printf '%s\n' 'git clone https://github.com/RobertFlexx/splux-site.git</pre>'
 	printf '%s\n' '<p class="note">Live ISO files stay on GitHub Releases. Recipe browse also lives under <a href="../../../../packages/">packages</a>.</p>'
 } >>"$OUT/git/index.html"
-page_end "$OUT/git/index.html" gitjs
+page_end "$OUT/git/index.html"
 
-# JSON summary
+# JSON summaries
 awk -F '\t' '
 function jesc(s) {
 	gsub(/\\/, "\\\\", s)
@@ -556,4 +897,24 @@ BEGIN { print "[" }
 END { print "\n]" }
 ' "$index_rows" >"$OUT/data/git.json"
 
+awk -F '\t' '
+function jesc(s) {
+	gsub(/\\/, "\\\\", s)
+	gsub(/"/, "\\\"", s)
+	return s
+}
+BEGIN { print "[" }
+{
+	if (NR > 1) print ","
+	printf "{\"login\":\"%s\",\"name\":\"%s\",\"bio\":\"%s\",\"avatar\":\"%s\",\"github\":\"%s\",\"public_repos\":%s,\"followers\":%s,\"company\":\"%s\",\"location\":\"%s\",\"blog\":\"%s\",\"commits\":%s}", \
+		jesc($1), jesc($2), jesc($3), jesc($4), jesc($5), $6 + 0, $7 + 0, jesc($8), jesc($9), jesc($10), $11 + 0
+}
+END { print "\n]" }
+' "$users_full" >"$OUT/data/git-users.json"
+
+rm -f "$OUT/data/.linguist.map" "$all_people"
+# Keep git-commits.tsv and git-langs-*.tsv for the live script if needed;
+# commits TSV can be large. Drop it from the Pages artifact.
+rm -f "$all_commits"
+
 printf '%s\n' "git: wrote $OUT/git" >&2
diff --git a/tools/build-site.sh b/tools/build-site.sh
index 2cb7de2..ac3ff64 100755
--- a/tools/build-site.sh
+++ b/tools/build-site.sh
@@ -254,7 +254,7 @@ then
 	printf '%s\n' "warning: news collection failed" >&2
 	: >"$tmp/news.tsv"
 fi
-awk -f tools/news.awk -v mode=brief "$tmp/news.tsv" >"$tmp/news-brief.html"
+awk -f tools/news.awk -v mode=brief -v gitusers="$GIT_HOST/users" "$tmp/news.tsv" >"$tmp/news-brief.html"
 generated_iso=$(date -u '+%Y-%m-%dT%H:%M:%SZ' 2>/dev/null || date -u '+%Y-%m-%dT00:00:00Z')
 awk -f tools/news.awk -v mode=atom -v siteurl="$SITE_URL" \
 	-v feedupdated="$generated_iso" \
@@ -378,6 +378,7 @@ do
 done <"$tmp/gitpages"
 
 awk -f tools/news.awk -v mode=html -v page=1 -v per="$news_per" \
+	-v gitusers="$GIT_HOST/users" \
 	"$tmp/news.tsv" >"$tmp/news.html"
 awk -f tools/news.awk -v mode=pager -v page=1 -v pages="$news_pages" \
 	-v per="$news_per" -v nest=0 "$tmp/news.tsv" >"$tmp/pager.html"
@@ -387,6 +388,7 @@ news_p=2
 while [ "$news_p" -le "$news_pages" ]
 do
 	awk -f tools/news.awk -v mode=html -v page="$news_p" -v per="$news_per" \
+		-v gitusers="$GIT_HOST/users" \
 		"$tmp/news.tsv" >"$tmp/news.html"
 	awk -f tools/news.awk -v mode=pager -v page="$news_p" -v pages="$news_pages" \
 		-v per="$news_per" -v nest=1 "$tmp/news.tsv" >"$tmp/pager.html"
diff --git a/tools/git-lang.awk b/tools/git-lang.awk
new file mode 100644
index 0000000..5ba028a
--- /dev/null
+++ b/tools/git-lang.awk
@@ -0,0 +1,194 @@
+# Detect a file's GitHub Linguist language from tools/linguist.map.
+# mode=detect  -v path= -v shebang=   print name, type, color, group
+# mode=count   stdin: size TAB path TAB shebang
+#              print group TAB bytes TAB color  (programming+markup only)
+# map file: kind key name type color group
+
+function loadmap(    line, f, k) {
+	while ((getline line < mapfile) > 0) {
+		split(line, f, "\t")
+		if (f[1] == "ext") {
+			k = tolower(f[2])
+			if (!(k in extname)) {
+				extname[k] = f[3]
+				exttype[k] = f[4]
+				extcolor[k] = f[5]
+				extgroup[k] = f[6]
+			}
+		} else if (f[1] == "filename") {
+			if (!(f[2] in fnname)) {
+				fnname[f[2]] = f[3]
+				fntype[f[2]] = f[4]
+				fncolor[f[2]] = f[5]
+				fngroup[f[2]] = f[6]
+			}
+		} else if (f[1] == "interpreter") {
+			if (!(f[2] in intname)) {
+				intname[f[2]] = f[3]
+				inttype[f[2]] = f[4]
+				intcolor[f[2]] = f[5]
+				intgroup[f[2]] = f[6]
+			}
+		} else if (f[1] == "lang") {
+			langtype[f[3]] = f[4]
+			langcolor[f[3]] = f[5]
+			langgroup[f[3]] = f[6]
+		}
+	}
+	close(mapfile)
+	# Linguist heuristics default these ambiguous extensions.
+	prefer(".md", "Markdown")
+	prefer(".markdown", "Markdown")
+	prefer(".scm", "Scheme")
+}
+
+function prefer(ext, lang) {
+	ext = tolower(ext)
+	if (!(lang in langtype))
+		return
+	extname[ext] = lang
+	exttype[ext] = langtype[lang]
+	extcolor[ext] = langcolor[lang]
+	extgroup[ext] = (langgroup[lang] != "") ? langgroup[lang] : lang
+}
+
+function skip_stats(p) {
+	return p ~ /(^|\/)(vendor|third_party|node_modules|dist|docs|doc|man|manpages|documentation)\//
+}
+
+function interpreter_of(line,    s, n, a, i, cmd) {
+	s = line
+	sub(/\r$/, "", s)
+	if (s !~ /^#!/)
+		return ""
+	sub(/^#![ \t]*/, "", s)
+	n = split(s, a, /[ \t]+/)
+	if (n < 1)
+		return ""
+	cmd = a[1]
+	sub(/^.*\//, "", cmd)
+	if (cmd == "env" && n >= 2) {
+		i = 2
+		while (i <= n && a[i] ~ /^-/)
+			i++
+		if (i <= n)
+			cmd = a[i]
+		sub(/^.*\//, "", cmd)
+	}
+	sub(/[0-9]+$/, "", cmd)
+	return cmd
+}
+
+function detect(path, shebang,    base, interp, p, ext, i, n, parts) {
+	d_name = ""
+	d_type = ""
+	d_color = ""
+	d_group = ""
+	base = path
+	sub(/^.*\//, "", base)
+
+	if (base != "" && (base in fnname)) {
+		d_name = fnname[base]
+		d_type = fntype[base]
+		d_color = fncolor[base]
+		d_group = fngroup[base]
+		return
+	}
+
+	interp = interpreter_of(shebang)
+	if (interp != "" && (interp in intname)) {
+		d_name = intname[interp]
+		d_type = inttype[interp]
+		d_color = intcolor[interp]
+		d_group = intgroup[interp]
+		return
+	}
+
+	p = tolower(base)
+	n = split(p, parts, /\./)
+	if (n >= 2) {
+		ext = ""
+		for (i = 2; i <= n; i++) {
+			if (ext != "")
+				ext = ext "."
+			ext = ext parts[i]
+			key = "." ext
+			if (key in extname) {
+				d_name = extname[key]
+				d_type = exttype[key]
+				d_color = extcolor[key]
+				d_group = extgroup[key]
+			}
+		}
+		if (d_name != "")
+			return
+	}
+
+	p = tolower(path)
+	n = split(p, parts, /\./)
+	if (n >= 2) {
+		ext = "." parts[n]
+		if (ext in extname) {
+			d_name = extname[ext]
+			d_type = exttype[ext]
+			d_color = extcolor[ext]
+			d_group = extgroup[ext]
+		}
+	}
+}
+
+BEGIN {
+	FS = "\t"
+	OFS = "\t"
+	if (mapfile == "")
+		mapfile = "tools/linguist.map"
+	loadmap()
+	if (mode == "count" && filelang != "") {
+		printf "" > filelang
+		close(filelang)
+	}
+	if (mode == "detect") {
+		detect(path, shebang)
+		if (d_name != "")
+			print d_name, d_type, d_color, d_group
+		exit
+	}
+}
+
+mode == "count" {
+	detect($2, $3)
+	if (filelang != "")
+		print $2 "\t" d_name "\t" d_type "\t" d_color >> filelang
+	if (skip_stats($2))
+		next
+	if (d_type != "programming" && d_type != "markup")
+		next
+	g = (d_group != "") ? d_group : d_name
+	if (g == "")
+		next
+	bytes[g] += $1 + 0
+	if (!(g in color) && d_color != "")
+		color[g] = d_color
+}
+
+END {
+	if (mode != "count")
+		exit
+	n = 0
+	for (g in bytes) {
+		n++
+		names[n] = g
+		vals[n] = bytes[g]
+	}
+	# sort by bytes descending
+	for (i = 1; i <= n; i++) {
+		for (j = i + 1; j <= n; j++) {
+			if (vals[j] > vals[i]) {
+				t = vals[i]; vals[i] = vals[j]; vals[j] = t
+				t = names[i]; names[i] = names[j]; names[j] = t
+			}
+		}
+	}
+	for (i = 1; i <= n; i++)
+		print names[i], vals[i], color[names[i]]
+}
diff --git a/tools/git.awk b/tools/git.awk
index 388597e..df59e48 100644
--- a/tools/git.awk
+++ b/tools/git.awk
@@ -1,10 +1,13 @@
 # HTML fragments for the static Splux Git browser.
 # mode=one       escape $0 (or -v text=) as one HTML string
+# mode=who       -v login= -v name= -v avatar= -v verified= -v userpfx=
 # mode=pre       escape stdin as a <pre class="block git-blob">
-# mode=langs     TSV lang<TAB>bytes -> bar plus list
-# mode=commits   TSV hash short epoch iso subject author
-#                -v commitpfx= relative prefix ending in commit/
-# mode=entries   TSV kind size name href  (kind=dir|file)
+# mode=langs     TSV lang<TAB>bytes<TAB>color
+# mode=commits   TSV hash short epoch iso subject author login avatar verified [repo]
+#                -v commitpfx=  -v userpfx=  -v repopfx=
+# mode=people    TSV login avatar count
+#                -v userpfx=
+# mode=entries   TSV kind size name href [lang]
 
 function esc(s) {
 	gsub(/&/, "\\&amp;", s)
@@ -17,12 +20,29 @@ function esc(s) {
 function pct(n, d) {
 	if (d <= 0)
 		return 0
-	return int((n * 1000) / d) / 10
+	return int((n * 1000 + d / 2) / d) / 10
+}
+
+function who(login, name, avatar,    html, av, label) {
+	label = login != "" ? login : name
+	if (login != "") {
+		av = avatar
+		if (av == "")
+			av = "https://github.com/" login ".png?size=48"
+		html = "<a class=\"who\" href=\"" userpfx esc(login) "/\">"
+		html = html "<img class=\"avatar\" src=\"" esc(av) \
+			"\" width=\"24\" height=\"24\" alt=\"\" loading=\"lazy\">"
+		html = html esc(login) "</a>"
+		return html
+	}
+	return esc(name)
 }
 
 BEGIN {
 	FS = "\t"
 	limit = limit + 0
+	if (userpfx == "")
+		userpfx = "../users/"
 	if (mode == "one") {
 		if (text != "")
 			printf "%s", esc(text)
@@ -32,6 +52,12 @@ BEGIN {
 		}
 		exit
 	}
+	if (mode == "who") {
+		printf "%s", who(login, name, avatar)
+		if (verified == "yes")
+			printf " <span class=\"verified\">verified</span>"
+		exit
+	}
 }
 
 mode == "pre" {
@@ -46,6 +72,7 @@ mode == "langs" {
 	n++
 	lang[n] = $1
 	bytes[n] = $2 + 0
+	col[n] = $3
 	total += bytes[n]
 }
 
@@ -58,6 +85,17 @@ mode == "commits" {
 	iso[n] = $4
 	subject[n] = $5
 	author[n] = $6
+	login[n] = $7
+	avatar[n] = $8
+	verified[n] = $9
+	repo[n] = $10
+}
+
+mode == "people" {
+	n++
+	login[n] = $1
+	avatar[n] = $2
+	count[n] = $3
 }
 
 mode == "entries" {
@@ -66,6 +104,7 @@ mode == "entries" {
 	size[n] = $2
 	name[n] = $3
 	href[n] = $4
+	elang[n] = $5
 }
 
 END {
@@ -84,45 +123,73 @@ END {
 			w = pct(bytes[i], total)
 			if (w <= 0 && bytes[i] > 0)
 				w = 0.1
-			printf "<span class=\"lang-seg\" style=\"width:%s%%\" title=\"%s %s%%\"></span>\n", \
-				w, esc(lang[i]), w
+			style = "width:" w "%"
+			if (col[i] != "")
+				style = style ";background:" col[i]
+			printf "<span class=\"lang-seg\" style=\"%s\" title=\"%s %s%%\"></span>\n", \
+				style, esc(lang[i]), w
 		}
 		print "</div>"
 		print "<ul class=\"lang-list\">"
 		for (i = 1; i <= n; i++)
-			printf "<li>%s <span class=\"muted\">%s%%</span></li>\n", \
-				esc(lang[i]), pct(bytes[i], total)
+			printf "<li><span class=\"lang-dot\" style=\"background:%s\"></span> %s <span class=\"muted\">%s%%</span></li>\n", \
+				esc(col[i] != "" ? col[i] : "#888888"), esc(lang[i]), pct(bytes[i], total)
 		print "</ul>"
 		exit
 	}
 	if (mode == "commits") {
 		print "<table class=\"pkgs git-log\">"
-		print "<thead><tr><th>Commit</th><th>Subject</th><th>Author</th><th>When</th></tr></thead>"
+		if (repopfx != "")
+			print "<thead><tr><th>Commit</th><th>Repository</th><th>Subject</th><th>Author</th><th>When</th></tr></thead>"
+		else
+			print "<thead><tr><th>Commit</th><th>Subject</th><th>Author</th><th>When</th></tr></thead>"
 		print "<tbody>"
 		for (i = 1; i <= n; i++) {
-			href = commitpfx esc(hash[i]) "/"
 			day = iso[i]
 			sub(/T.*/, "", day)
-			printf "<tr>"
+			if (repopfx != "" && repo[i] != "")
+				href = repopfx esc(repo[i]) "/commit/" esc(hash[i]) "/"
+			else
+				href = commitpfx esc(hash[i]) "/"
+			printf "<tr data-sha=\"%s\" data-login=\"%s\" data-repo=\"%s\">", \
+				esc(hash[i]), esc(login[i]), esc(repo[i])
 			printf "<td><a href=\"%s\"><code>%s</code></a></td>", href, esc(short[i])
+			if (repopfx != "")
+				printf "<td><a href=\"%s%s/\">%s</a></td>", \
+					repopfx, esc(repo[i]), esc(repo[i])
 			printf "<td><a href=\"%s\">%s</a></td>", href, esc(subject[i])
-			printf "<td>%s</td>", esc(author[i])
+			printf "<td>%s", who(login[i], author[i], avatar[i])
+			if (verified[i] == "yes")
+				printf " <span class=\"verified\">verified</span>"
+			printf "</td>"
 			printf "<td><time datetime=\"%s\">%s</time></td>", esc(iso[i]), esc(day)
 			print "</tr>"
 		}
 		print "</tbody></table>"
 		exit
 	}
+	if (mode == "people") {
+		print "<div class=\"people\" id=\"git-people\">"
+		for (i = 1; i <= n; i++) {
+			printf "<span class=\"person\">%s", who(login[i], login[i], avatar[i])
+			if (count[i] != "")
+				printf " <span class=\"muted\">%s</span>", esc(count[i])
+			print "</span>"
+		}
+		print "</div>"
+		exit
+	}
 	if (mode == "entries") {
 		print "<table class=\"pkgs git-tree\">"
-		print "<thead><tr><th></th><th>Name</th><th>Size</th></tr></thead>"
+		print "<thead><tr><th></th><th>Name</th><th>Language</th><th>Size</th></tr></thead>"
 		print "<tbody>"
 		for (i = 1; i <= n; i++) {
 			label = kind[i] == "dir" ? "dir" : "file"
 			sz = kind[i] == "dir" ? "" : size[i]
-			printf "<tr data-search=\"%s\">", esc(tolower(name[i]))
+			printf "<tr data-search=\"%s %s\">", esc(tolower(name[i])), esc(tolower(elang[i]))
 			printf "<td class=\"muted\">%s</td>", label
 			printf "<td><a href=\"%s\">%s</a></td>", esc(href[i]), esc(name[i])
+			printf "<td class=\"muted\">%s</td>", esc(elang[i])
 			printf "<td class=\"muted\">%s</td>", esc(sz)
 			print "</tr>"
 		}
diff --git a/tools/linguist-extract.awk b/tools/linguist-extract.awk
new file mode 100644
index 0000000..ac7d647
--- /dev/null
+++ b/tools/linguist-extract.awk
@@ -0,0 +1,93 @@
+# Flatten github-linguist languages.yml into TSV.
+# kind key name type color group
+# kind is ext, filename, interpreter, or lang.
+
+BEGIN {
+	OFS = "\t"
+}
+
+function trim(s) {
+	sub(/^[ \t]+/, "", s)
+	sub(/[ \t]+$/, "", s)
+	return s
+}
+
+function unquote(s) {
+	s = trim(s)
+	if (s ~ /^".*"$/) {
+		s = substr(s, 2, length(s) - 2)
+		gsub(/\\"/, "\"", s)
+	}
+	return s
+}
+
+function emit_lang() {
+	if (name == "")
+		return
+	g = (group != "") ? group : name
+	c = (color != "") ? color : ""
+	t = (typ != "") ? typ : "data"
+	print "lang", name, name, t, c, g
+}
+
+function emit(kind, key) {
+	if (name == "" || key == "")
+		return
+	g = (group != "") ? group : name
+	c = (color != "") ? color : ""
+	t = (typ != "") ? typ : "data"
+	print kind, key, name, t, c, g
+}
+
+/^---$/ { next }
+/^#/ { next }
+/^$/ { next }
+
+/^[^ \t]/ {
+	if ($0 ~ /:$/) {
+		emit_lang()
+		name = $0
+		sub(/:$/, "", name)
+		typ = ""
+		color = ""
+		group = ""
+		section = ""
+	}
+	next
+}
+
+/^[ \t]+[a-z_]+:/ {
+	key = trim($1)
+	sub(/:$/, "", key)
+	rest = $0
+	sub(/^[ \t]+[a-z_]+:[ \t]*/, "", rest)
+	rest = trim(rest)
+	if (key == "type")
+		typ = unquote(rest)
+	else if (key == "color")
+		color = unquote(rest)
+	else if (key == "group")
+		group = unquote(rest)
+	if (key == "extensions")
+		section = "ext"
+	else if (key == "filenames")
+		section = "filename"
+	else if (key == "interpreters")
+		section = "interpreter"
+	else
+		section = ""
+	next
+}
+
+/^[ \t]+- / {
+	item = $0
+	sub(/^[ \t]+- [ \t]*/, "", item)
+	item = unquote(item)
+	if (section != "" && item != "")
+		emit(section, item)
+	next
+}
+
+END {
+	emit_lang()
+}
diff --git a/tools/linguist.map b/tools/linguist.map
new file mode 100644
index 0000000..bcca9d3
--- /dev/null
+++ b/tools/linguist.map
@@ -0,0 +1,3178 @@
+ext	.bsl	1C Enterprise	programming	#814CCC	1C Enterprise
+ext	.os	1C Enterprise	programming	#814CCC	1C Enterprise
+lang	1C Enterprise	1C Enterprise	programming	#814CCC	1C Enterprise
+ext	.2da	2-Dimensional Array	data	#38761D	2-Dimensional Array
+lang	2-Dimensional Array	2-Dimensional Array	data	#38761D	2-Dimensional Array
+ext	.4dm	4D	programming	#004289	4D
+lang	4D	4D	programming	#004289	4D
+ext	.abap	ABAP	programming	#E8274B	ABAP
+lang	ABAP	ABAP	programming	#E8274B	ABAP
+ext	.asddls	ABAP CDS	programming	#555e25	ABAP CDS
+lang	ABAP CDS	ABAP CDS	programming	#555e25	ABAP CDS
+ext	.abnf	ABNF	data		ABNF
+lang	ABNF	ABNF	data		ABNF
+ext	.asc	AGS Script	programming	#B9D9FF	AGS Script
+ext	.ash	AGS Script	programming	#B9D9FF	AGS Script
+lang	AGS Script	AGS Script	programming	#B9D9FF	AGS Script
+ext	.aidl	AIDL	programming	#34EB6B	AIDL
+interpreter	aidl	AIDL	programming	#34EB6B	AIDL
+lang	AIDL	AIDL	programming	#34EB6B	AIDL
+ext	.al	AL	programming	#3AA2B5	AL
+lang	AL	AL	programming	#3AA2B5	AL
+ext	.alg	ALGOL	programming	#D1E0DB	ALGOL
+lang	ALGOL	ALGOL	programming	#D1E0DB	ALGOL
+ext	.ampl	AMPL	programming	#E6EFBB	AMPL
+ext	.mod	AMPL	programming	#E6EFBB	AMPL
+lang	AMPL	AMPL	programming	#E6EFBB	AMPL
+ext	.g4	ANTLR	programming	#9DC3FF	ANTLR
+lang	ANTLR	ANTLR	programming	#9DC3FF	ANTLR
+ext	.apib	API Blueprint	markup	#2ACCA8	API Blueprint
+lang	API Blueprint	API Blueprint	markup	#2ACCA8	API Blueprint
+ext	.apl	APL	programming	#5A8164	APL
+ext	.dyalog	APL	programming	#5A8164	APL
+interpreter	apl	APL	programming	#5A8164	APL
+interpreter	aplx	APL	programming	#5A8164	APL
+interpreter	dyalog	APL	programming	#5A8164	APL
+lang	APL	APL	programming	#5A8164	APL
+ext	.asl	ASL	programming		ASL
+ext	.dsl	ASL	programming		ASL
+lang	ASL	ASL	programming		ASL
+ext	.asn	ASN.1	data		ASN.1
+ext	.asn1	ASN.1	data		ASN.1
+lang	ASN.1	ASN.1	data		ASN.1
+ext	.asax	ASP.NET	programming	#9400ff	ASP.NET
+ext	.ascx	ASP.NET	programming	#9400ff	ASP.NET
+ext	.ashx	ASP.NET	programming	#9400ff	ASP.NET
+ext	.asmx	ASP.NET	programming	#9400ff	ASP.NET
+ext	.aspx	ASP.NET	programming	#9400ff	ASP.NET
+ext	.axd	ASP.NET	programming	#9400ff	ASP.NET
+lang	ASP.NET	ASP.NET	programming	#9400ff	ASP.NET
+ext	.dats	ATS	programming	#1ac620	ATS
+ext	.hats	ATS	programming	#1ac620	ATS
+ext	.sats	ATS	programming	#1ac620	ATS
+lang	ATS	ATS	programming	#1ac620	ATS
+ext	.as	ActionScript	programming	#882B0F	ActionScript
+lang	ActionScript	ActionScript	programming	#882B0F	ActionScript
+ext	.adb	Ada	programming	#02f88c	Ada
+ext	.ada	Ada	programming	#02f88c	Ada
+ext	.ads	Ada	programming	#02f88c	Ada
+lang	Ada	Ada	programming	#02f88c	Ada
+ext	.txt	Adblock Filter List	data	#800000	Adblock Filter List
+lang	Adblock Filter List	Adblock Filter List	data	#800000	Adblock Filter List
+ext	.afm	Adobe Font Metrics	data	#fa0f00	Adobe Font Metrics
+lang	Adobe Font Metrics	Adobe Font Metrics	data	#fa0f00	Adobe Font Metrics
+ext	.agda	Agda	programming	#315665	Agda
+lang	Agda	Agda	programming	#315665	Agda
+ext	.ak	Aiken	programming	#640ff8	Aiken
+lang	Aiken	Aiken	programming	#640ff8	Aiken
+ext	.aleo	Aleo	programming	#154BF9	Aleo
+lang	Aleo	Aleo	programming	#154BF9	Aleo
+ext	.als	Alloy	programming	#64C800	Alloy
+lang	Alloy	Alloy	programming	#64C800	Alloy
+filename	APKBUILD	Alpine Abuild	programming	#0D597F	Shell
+lang	Alpine Abuild	Alpine Abuild	programming	#0D597F	Shell
+ext	.OutJob	Altium Designer	data	#A89663	Altium Designer
+ext	.PcbDoc	Altium Designer	data	#A89663	Altium Designer
+ext	.PrjPCB	Altium Designer	data	#A89663	Altium Designer
+ext	.SchDoc	Altium Designer	data	#A89663	Altium Designer
+lang	Altium Designer	Altium Designer	data	#A89663	Altium Designer
+ext	.as	AngelScript	programming	#C7D7DC	AngelScript
+ext	.angelscript	AngelScript	programming	#C7D7DC	AngelScript
+lang	AngelScript	AngelScript	programming	#C7D7DC	AngelScript
+ext	.lp	Answer Set Programming	programming	#A9CC29	Answer Set Programming
+interpreter	clingo	Answer Set Programming	programming	#A9CC29	Answer Set Programming
+lang	Answer Set Programming	Answer Set Programming	programming	#A9CC29	Answer Set Programming
+filename	ant.xml	Ant Build System	data	#A9157E	Ant Build System
+filename	build.xml	Ant Build System	data	#A9157E	Ant Build System
+lang	Ant Build System	Ant Build System	data	#A9157E	Ant Build System
+ext	.antlers.html	Antlers	markup	#ff269e	Antlers
+ext	.antlers.php	Antlers	markup	#ff269e	Antlers
+ext	.antlers.xml	Antlers	markup	#ff269e	Antlers
+lang	Antlers	Antlers	markup	#ff269e	Antlers
+ext	.apacheconf	ApacheConf	data	#d12127	ApacheConf
+ext	.vhost	ApacheConf	data	#d12127	ApacheConf
+filename	.htaccess	ApacheConf	data	#d12127	ApacheConf
+filename	apache2.conf	ApacheConf	data	#d12127	ApacheConf
+filename	httpd.conf	ApacheConf	data	#d12127	ApacheConf
+lang	ApacheConf	ApacheConf	data	#d12127	ApacheConf
+ext	.cls	Apex	programming	#1797c0	Apex
+ext	.apex	Apex	programming	#1797c0	Apex
+ext	.trigger	Apex	programming	#1797c0	Apex
+lang	Apex	Apex	programming	#1797c0	Apex
+ext	.agc	Apollo Guidance Computer	programming	#0B3D91	Assembly
+lang	Apollo Guidance Computer	Apollo Guidance Computer	programming	#0B3D91	Assembly
+ext	.applescript	AppleScript	programming		AppleScript
+ext	.scpt	AppleScript	programming		AppleScript
+interpreter	osascript	AppleScript	programming		AppleScript
+lang	AppleScript	AppleScript	programming	#101F1F	AppleScript
+ext	.arc	Arc	programming	#aa2afe	Arc
+lang	Arc	Arc	programming	#aa2afe	Arc
+ext	.asciidoc	AsciiDoc	prose	#73a0c5	AsciiDoc
+ext	.adoc	AsciiDoc	prose	#73a0c5	AsciiDoc
+ext	.asc	AsciiDoc	prose	#73a0c5	AsciiDoc
+lang	AsciiDoc	AsciiDoc	prose	#73a0c5	AsciiDoc
+ext	.aj	AspectJ	programming	#a957b0	AspectJ
+lang	AspectJ	AspectJ	programming	#a957b0	AspectJ
+ext	.asm	Assembly	programming	#6E4C13	Assembly
+ext	.a51	Assembly	programming	#6E4C13	Assembly
+ext	.i	Assembly	programming	#6E4C13	Assembly
+ext	.inc	Assembly	programming	#6E4C13	Assembly
+ext	.nas	Assembly	programming	#6E4C13	Assembly
+ext	.nasm	Assembly	programming	#6E4C13	Assembly
+ext	.s	Assembly	programming	#6E4C13	Assembly
+lang	Assembly	Assembly	programming	#6E4C13	Assembly
+ext	.astro	Astro	markup	#ff5a03	Astro
+lang	Astro	Astro	markup	#ff5a03	Astro
+ext	.asy	Asymptote	programming	#ff0000	Asymptote
+interpreter	asy	Asymptote	programming	#ff0000	Asymptote
+lang	Asymptote	Asymptote	programming	#ff0000	Asymptote
+ext	.aug	Augeas	programming	#9CC134	Augeas
+lang	Augeas	Augeas	programming	#9CC134	Augeas
+ext	.ahk	AutoHotkey	programming	#6594b9	AutoHotkey
+ext	.ah1	AutoHotkey	programming	#6594b9	AutoHotkey
+ext	.ah2	AutoHotkey	programming	#6594b9	AutoHotkey
+ext	.ahkl	AutoHotkey	programming	#6594b9	AutoHotkey
+lang	AutoHotkey	AutoHotkey	programming	#6594b9	AutoHotkey
+ext	.au3	AutoIt	programming	#1C3552	AutoIt
+lang	AutoIt	AutoIt	programming	#1C3552	AutoIt
+ext	.avdl	Avro IDL	data	#0040FF	Avro IDL
+lang	Avro IDL	Avro IDL	data	#0040FF	Avro IDL
+ext	.awk	Awk	programming	#c30e9b	Awk
+ext	.auk	Awk	programming	#c30e9b	Awk
+ext	.gawk	Awk	programming	#c30e9b	Awk
+ext	.mawk	Awk	programming	#c30e9b	Awk
+ext	.nawk	Awk	programming	#c30e9b	Awk
+interpreter	awk	Awk	programming	#c30e9b	Awk
+interpreter	gawk	Awk	programming	#c30e9b	Awk
+interpreter	mawk	Awk	programming	#c30e9b	Awk
+interpreter	nawk	Awk	programming	#c30e9b	Awk
+lang	Awk	Awk	programming	#c30e9b	Awk
+ext	.b	B	programming	#da7666	B
+lang	B	B	programming	#da7666	B
+ext	.mch	B (Formal Method)	programming	#8aa8c5	B (Formal Method)
+lang	B (Formal Method)	B (Formal Method)	programming	#8aa8c5	B (Formal Method)
+ext	.bas	B4X	programming	#00e4ff	B4X
+lang	B4X	B4X	programming	#00e4ff	B4X
+ext	.baml	BAML	programming	#a855f7	BAML
+lang	BAML	BAML	programming	#a855f7	BAML
+ext	.bas	BASIC	programming		BASIC
+lang	BASIC	BASIC	programming	#ff0000	BASIC
+ext	.bbcode	BBCode	markup		BBCode
+lang	BBCode	BBCode	markup	#CAFF42	BBCode
+filename	bird.conf	BIRD2	data	#b6d7e4	BIRD2
+lang	BIRD2	BIRD2	data	#b6d7e4	BIRD2
+ext	.bqn	BQN	programming	#2b7067	BQN
+lang	BQN	BQN	programming	#2b7067	BQN
+ext	.bal	Ballerina	programming		Ballerina
+lang	Ballerina	Ballerina	programming	#FF5000	Ballerina
+ext	.bat	Batchfile	programming		Batchfile
+ext	.cmd	Batchfile	programming		Batchfile
+filename	gradlew.bat	Batchfile	programming		Batchfile
+filename	mvnw.cmd	Batchfile	programming		Batchfile
+lang	Batchfile	Batchfile	programming	#C1F12E	Batchfile
+ext	.bf	Beef	programming	#a52f4e	Beef
+lang	Beef	Beef	programming	#a52f4e	Beef
+ext	.befunge	Befunge	programming		Befunge
+ext	.bf	Befunge	programming		Befunge
+lang	Befunge	Befunge	programming		Befunge
+ext	.be	Berry	programming		Berry
+lang	Berry	Berry	programming	#15A13C	Berry
+ext	.bib	BibTeX	markup	#778899	TeX
+ext	.bibtex	BibTeX	markup	#778899	TeX
+lang	BibTeX	BibTeX	markup	#778899	TeX
+ext	.bst	BibTeX Style	programming		BibTeX Style
+lang	BibTeX Style	BibTeX Style	programming		BibTeX Style
+ext	.bicep	Bicep	programming	#519aba	Bicep
+ext	.bicepparam	Bicep	programming	#519aba	Bicep
+lang	Bicep	Bicep	programming	#519aba	Bicep
+ext	.bs	Bikeshed	markup	#5562ac	Bikeshed
+lang	Bikeshed	Bikeshed	markup	#5562ac	Bikeshed
+ext	.bison	Bison	programming	#6A463F	Yacc
+lang	Bison	Bison	programming	#6A463F	Yacc
+ext	.bb	BitBake	programming	#00bce4	BitBake
+ext	.bbappend	BitBake	programming	#00bce4	BitBake
+ext	.bbclass	BitBake	programming	#00bce4	BitBake
+ext	.inc	BitBake	programming	#00bce4	BitBake
+lang	BitBake	BitBake	programming	#00bce4	BitBake
+ext	.blade	Blade	markup	#f7523f	Blade
+ext	.blade.php	Blade	markup	#f7523f	Blade
+lang	Blade	Blade	markup	#f7523f	Blade
+ext	.bb	BlitzBasic	programming	#00FFAE	BlitzBasic
+ext	.decls	BlitzBasic	programming	#00FFAE	BlitzBasic
+lang	BlitzBasic	BlitzBasic	programming	#00FFAE	BlitzBasic
+ext	.bmx	BlitzMax	programming	#cd6400	BlitzMax
+lang	BlitzMax	BlitzMax	programming	#cd6400	BlitzMax
+ext	.blp	Blueprint	markup	#3584E4	Blueprint
+lang	Blueprint	Blueprint	markup	#3584E4	Blueprint
+ext	.bsv	Bluespec	programming	#12223c	Bluespec
+lang	Bluespec	Bluespec	programming	#12223c	Bluespec
+ext	.bs	Bluespec BH	programming	#12223c	Bluespec
+lang	Bluespec BH	Bluespec BH	programming	#12223c	Bluespec
+ext	.boo	Boo	programming	#d4bec1	Boo
+lang	Boo	Boo	programming	#d4bec1	Boo
+ext	.bpl	Boogie	programming	#c80fa0	Boogie
+interpreter	boogie	Boogie	programming	#c80fa0	Boogie
+lang	Boogie	Boogie	programming	#c80fa0	Boogie
+ext	.b	Brainfuck	programming	#2F2530	Brainfuck
+ext	.bf	Brainfuck	programming	#2F2530	Brainfuck
+lang	Brainfuck	Brainfuck	programming	#2F2530	Brainfuck
+ext	.bs	BrighterScript	programming	#66AABB	BrighterScript
+lang	BrighterScript	BrighterScript	programming	#66AABB	BrighterScript
+ext	.brs	Brightscript	programming	#662D91	Brightscript
+lang	Brightscript	Brightscript	programming	#662D91	Brightscript
+filename	.browserslistrc	Browserslist	data	#ffd539	Browserslist
+filename	browserslist	Browserslist	data	#ffd539	Browserslist
+lang	Browserslist	Browserslist	data	#ffd539	Browserslist
+ext	.bru	Bru	markup	#F4AA41	Bru
+lang	Bru	Bru	markup	#F4AA41	Bru
+ext	.bst	BuildStream	data	#006bff	BuildStream
+lang	BuildStream	BuildStream	data	#006bff	BuildStream
+ext	.c	C	programming	#555555	C
+ext	.cats	C	programming	#555555	C
+ext	.h	C	programming	#555555	C
+ext	.h.in	C	programming	#555555	C
+ext	.idc	C	programming	#555555	C
+interpreter	tcc	C	programming	#555555	C
+lang	C	C	programming	#555555	C
+ext	.cs	C#	programming	#7355dd	C#
+ext	.cake	C#	programming	#7355dd	C#
+ext	.cs.pp	C#	programming	#7355dd	C#
+ext	.csx	C#	programming	#7355dd	C#
+ext	.linq	C#	programming	#7355dd	C#
+lang	C#	C#	programming	#7355dd	C#
+ext	.cpp	C++	programming	#f34b7d	C++
+ext	.c++	C++	programming	#f34b7d	C++
+ext	.cc	C++	programming	#f34b7d	C++
+ext	.cp	C++	programming	#f34b7d	C++
+ext	.cppm	C++	programming	#f34b7d	C++
+ext	.cxx	C++	programming	#f34b7d	C++
+ext	.h	C++	programming	#f34b7d	C++
+ext	.h++	C++	programming	#f34b7d	C++
+ext	.hh	C++	programming	#f34b7d	C++
+ext	.hpp	C++	programming	#f34b7d	C++
+ext	.hxx	C++	programming	#f34b7d	C++
+ext	.inc	C++	programming	#f34b7d	C++
+ext	.inl	C++	programming	#f34b7d	C++
+ext	.ino	C++	programming	#f34b7d	C++
+ext	.ipp	C++	programming	#f34b7d	C++
+ext	.ixx	C++	programming	#f34b7d	C++
+ext	.re	C++	programming	#f34b7d	C++
+ext	.tcc	C++	programming	#f34b7d	C++
+ext	.tpp	C++	programming	#f34b7d	C++
+ext	.txx	C++	programming	#f34b7d	C++
+lang	C++	C++	programming	#f34b7d	C++
+ext	.c-objdump	C-ObjDump	data		C-ObjDump
+lang	C-ObjDump	C-ObjDump	data		C-ObjDump
+ext	.chs	C2hs Haskell	programming		Haskell
+lang	C2hs Haskell	C2hs Haskell	programming		Haskell
+ext	.c3	C3	programming	#2563eb	C3
+lang	C3	C3	programming	#2563eb	C3
+ext	.cds	CAP CDS	programming	#0092d1	CAP CDS
+lang	CAP CDS	CAP CDS	programming	#0092d1	CAP CDS
+ext	.cil	CIL	data		CIL
+lang	CIL	CIL	data		CIL
+ext	.clp	CLIPS	programming	#00A300	CLIPS
+lang	CLIPS	CLIPS	programming	#00A300	CLIPS
+ext	.cmake	CMake	programming	#DA3434	CMake
+ext	.cmake.in	CMake	programming	#DA3434	CMake
+filename	CMakeLists.txt	CMake	programming	#DA3434	CMake
+lang	CMake	CMake	programming	#DA3434	CMake
+ext	.cob	COBOL	programming		COBOL
+ext	.cbl	COBOL	programming		COBOL
+ext	.ccp	COBOL	programming		COBOL
+ext	.cobol	COBOL	programming		COBOL
+ext	.cpy	COBOL	programming		COBOL
+lang	COBOL	COBOL	programming		COBOL
+filename	CODEOWNERS	CODEOWNERS	data		CODEOWNERS
+lang	CODEOWNERS	CODEOWNERS	data		CODEOWNERS
+ext	.dae	COLLADA	data	#F1A42B	COLLADA
+lang	COLLADA	COLLADA	data	#F1A42B	COLLADA
+ext	.cql	CQL	programming	#006091	CQL
+lang	CQL	CQL	programming	#006091	CQL
+ext	.cson	CSON	data	#244776	CSON
+lang	CSON	CSON	data	#244776	CSON
+ext	.css	CSS	markup	#663399	CSS
+lang	CSS	CSS	markup	#663399	CSS
+ext	.csv	CSV	data	#237346	CSV
+lang	CSV	CSV	data	#237346	CSV
+ext	.cue	CUE	programming		CUE
+lang	CUE	CUE	programming	#5886E1	CUE
+ext	.w	CWeb	programming	#00007a	CWeb
+lang	CWeb	CWeb	programming	#00007a	CWeb
+ext	.cabal	Cabal Config	data	#483465	Cabal Config
+filename	cabal.config	Cabal Config	data	#483465	Cabal Config
+filename	cabal.project	Cabal Config	data	#483465	Cabal Config
+lang	Cabal Config	Cabal Config	data	#483465	Cabal Config
+ext	.caddyfile	Caddyfile	data	#22b638	Caddyfile
+filename	Caddyfile	Caddyfile	data	#22b638	Caddyfile
+lang	Caddyfile	Caddyfile	data	#22b638	Caddyfile
+ext	.cdc	Cadence	programming	#00ef8b	Cadence
+lang	Cadence	Cadence	programming	#00ef8b	Cadence
+ext	.cairo	Cairo	programming	#ff4a48	Cairo
+lang	Cairo	Cairo	programming	#ff4a48	Cairo
+ext	.cairo	Cairo Zero	programming	#ff4a48	Cairo Zero
+lang	Cairo Zero	Cairo Zero	programming	#ff4a48	Cairo
+ext	.mligo	CameLIGO	programming	#3be133	CameLIGO
+lang	CameLIGO	CameLIGO	programming	#3be133	LigoLANG
+ext	.cj	Cangjie	programming		Cangjie
+lang	Cangjie	Cangjie	programming	#00868B	Cangjie
+ext	.capnp	Cap'n Proto	programming	#c42727	Cap'n Proto
+lang	Cap'n Proto	Cap'n Proto	programming	#c42727	Cap'n Proto
+ext	.carbon	Carbon	programming	#222222	Carbon
+lang	Carbon	Carbon	programming	#222222	Carbon
+ext	.mss	CartoCSS	programming		CartoCSS
+lang	CartoCSS	CartoCSS	programming		CartoCSS
+ext	.ceylon	Ceylon	programming	#dfa535	Ceylon
+lang	Ceylon	Ceylon	programming	#dfa535	Ceylon
+ext	.chpl	Chapel	programming	#8dc63f	Chapel
+lang	Chapel	Chapel	programming	#8dc63f	Chapel
+ext	.ch	Charity	programming		Charity
+lang	Charity	Charity	programming		Charity
+filename	MD5SUMS	Checksums	data		Checksums
+filename	SHA1SUMS	Checksums	data		Checksums
+filename	SHA256SUMS	Checksums	data		Checksums
+filename	SHA256SUMS.txt	Checksums	data		Checksums
+filename	SHA512SUMS	Checksums	data		Checksums
+filename	checksums.txt	Checksums	data		Checksums
+filename	cksums	Checksums	data		Checksums
+filename	md5sum.txt	Checksums	data		Checksums
+ext	.crc32	Checksums	data		Checksums
+ext	.md2	Checksums	data		Checksums
+ext	.md4	Checksums	data		Checksums
+ext	.md5	Checksums	data		Checksums
+ext	.sha1	Checksums	data		Checksums
+ext	.sha2	Checksums	data		Checksums
+ext	.sha224	Checksums	data		Checksums
+ext	.sha256	Checksums	data		Checksums
+ext	.sha256sum	Checksums	data		Checksums
+ext	.sha3	Checksums	data		Checksums
+ext	.sha384	Checksums	data		Checksums
+ext	.sha512	Checksums	data		Checksums
+lang	Checksums	Checksums	data		Checksums
+ext	.ck	ChucK	programming	#3f8000	ChucK
+lang	ChucK	ChucK	programming	#3f8000	ChucK
+ext	.circom	Circom	programming		Circom
+lang	Circom	Circom	programming	#707575	Circom
+ext	.cirru	Cirru	programming	#ccccff	Cirru
+lang	Cirru	Cirru	programming	#ccccff	Cirru
+ext	.clw	Clarion	programming	#db901e	Clarion
+lang	Clarion	Clarion	programming	#db901e	Clarion
+ext	.clar	Clarity	programming	#5546ff	Clarity
+lang	Clarity	Clarity	programming	#5546ff	Clarity
+ext	.asp	Classic ASP	programming	#6a40fd	Classic ASP
+lang	Classic ASP	Classic ASP	programming	#6a40fd	Classic ASP
+ext	.icl	Clean	programming	#3F85AF	Clean
+ext	.dcl	Clean	programming	#3F85AF	Clean
+lang	Clean	Clean	programming	#3F85AF	Clean
+ext	.click	Click	programming	#E4E6F3	Click
+lang	Click	Click	programming	#E4E6F3	Click
+ext	.clj	Clojure	programming	#db5855	Clojure
+ext	.bb	Clojure	programming	#db5855	Clojure
+ext	.boot	Clojure	programming	#db5855	Clojure
+ext	.cl2	Clojure	programming	#db5855	Clojure
+ext	.cljc	Clojure	programming	#db5855	Clojure
+ext	.cljs	Clojure	programming	#db5855	Clojure
+ext	.cljs.hl	Clojure	programming	#db5855	Clojure
+ext	.cljscm	Clojure	programming	#db5855	Clojure
+ext	.cljx	Clojure	programming	#db5855	Clojure
+ext	.hic	Clojure	programming	#db5855	Clojure
+filename	riemann.config	Clojure	programming	#db5855	Clojure
+interpreter	bb	Clojure	programming	#db5855	Clojure
+lang	Clojure	Clojure	programming	#db5855	Clojure
+ext	.soy	Closure Templates	markup	#0d948f	Closure Templates
+lang	Closure Templates	Closure Templates	markup	#0d948f	Closure Templates
+filename	firestore.rules	Cloud Firestore Security Rules	data	#FFA000	Cloud Firestore Security Rules
+lang	Cloud Firestore Security Rules	Cloud Firestore Security Rules	data	#FFA000	Cloud Firestore Security Rules
+ext	.clue	Clue	programming	#0009b5	Clue
+lang	Clue	Clue	programming	#0009b5	Clue
+ext	.conllu	CoNLL-U	data		CoNLL-U
+ext	.conll	CoNLL-U	data		CoNLL-U
+lang	CoNLL-U	CoNLL-U	data		CoNLL-U
+ext	.ql	CodeQL	programming	#140f46	CodeQL
+ext	.qll	CodeQL	programming	#140f46	CodeQL
+lang	CodeQL	CodeQL	programming	#140f46	CodeQL
+ext	.coffee	CoffeeScript	programming	#244776	CoffeeScript
+ext	._coffee	CoffeeScript	programming	#244776	CoffeeScript
+ext	.cake	CoffeeScript	programming	#244776	CoffeeScript
+ext	.cjsx	CoffeeScript	programming	#244776	CoffeeScript
+ext	.coffee.erb	CoffeeScript	programming	#244776	CoffeeScript
+ext	.iced	CoffeeScript	programming	#244776	CoffeeScript
+filename	Cakefile	CoffeeScript	programming	#244776	CoffeeScript
+interpreter	coffee	CoffeeScript	programming	#244776	CoffeeScript
+lang	CoffeeScript	CoffeeScript	programming	#244776	CoffeeScript
+ext	.cfm	ColdFusion	programming	#ed2cd6	ColdFusion
+ext	.cfml	ColdFusion	programming	#ed2cd6	ColdFusion
+lang	ColdFusion	ColdFusion	programming	#ed2cd6	ColdFusion
+ext	.cfc	ColdFusion CFC	programming	#ed2cd6	ColdFusion
+lang	ColdFusion CFC	ColdFusion CFC	programming	#ed2cd6	ColdFusion
+ext	.lisp	Common Lisp	programming	#3fb68b	Common Lisp
+ext	.asd	Common Lisp	programming	#3fb68b	Common Lisp
+ext	.cl	Common Lisp	programming	#3fb68b	Common Lisp
+ext	.l	Common Lisp	programming	#3fb68b	Common Lisp
+ext	.lsp	Common Lisp	programming	#3fb68b	Common Lisp
+ext	.ny	Common Lisp	programming	#3fb68b	Common Lisp
+ext	.podsl	Common Lisp	programming	#3fb68b	Common Lisp
+ext	.sexp	Common Lisp	programming	#3fb68b	Common Lisp
+interpreter	lisp	Common Lisp	programming	#3fb68b	Common Lisp
+interpreter	sbcl	Common Lisp	programming	#3fb68b	Common Lisp
+interpreter	ccl	Common Lisp	programming	#3fb68b	Common Lisp
+interpreter	clisp	Common Lisp	programming	#3fb68b	Common Lisp
+interpreter	ecl	Common Lisp	programming	#3fb68b	Common Lisp
+lang	Common Lisp	Common Lisp	programming	#3fb68b	Common Lisp
+ext	.cwl	Common Workflow Language	programming		Common Workflow Language
+interpreter	cwl-runner	Common Workflow Language	programming		Common Workflow Language
+lang	Common Workflow Language	Common Workflow Language	programming	#B5314C	Common Workflow Language
+ext	.cp	Component Pascal	programming	#B0CE4E	Component Pascal
+ext	.cps	Component Pascal	programming	#B0CE4E	Component Pascal
+lang	Component Pascal	Component Pascal	programming	#B0CE4E	Component Pascal
+ext	.cook	Cooklang	markup	#E15A29	Cooklang
+lang	Cooklang	Cooklang	markup	#E15A29	Cooklang
+ext	.cl	Cool	programming		Cool
+lang	Cool	Cool	programming		Cool
+ext	.cppobjdump	Cpp-ObjDump	data		Cpp-ObjDump
+ext	.c++-objdump	Cpp-ObjDump	data		Cpp-ObjDump
+ext	.c++objdump	Cpp-ObjDump	data		Cpp-ObjDump
+ext	.cpp-objdump	Cpp-ObjDump	data		Cpp-ObjDump
+ext	.cxx-objdump	Cpp-ObjDump	data		Cpp-ObjDump
+lang	Cpp-ObjDump	Cpp-ObjDump	data		Cpp-ObjDump
+ext	.creole	Creole	prose		Creole
+lang	Creole	Creole	prose		Creole
+ext	.cr	Crystal	programming	#000100	Crystal
+interpreter	crystal	Crystal	programming	#000100	Crystal
+lang	Crystal	Crystal	programming	#000100	Crystal
+ext	.orc	Csound	programming	#1a1a1a	Csound
+ext	.udo	Csound	programming	#1a1a1a	Csound
+lang	Csound	Csound	programming	#1a1a1a	Csound
+ext	.csd	Csound Document	programming	#1a1a1a	Csound Document
+lang	Csound Document	Csound Document	programming	#1a1a1a	Csound Document
+ext	.sco	Csound Score	programming	#1a1a1a	Csound Score
+lang	Csound Score	Csound Score	programming	#1a1a1a	Csound Score
+ext	.cu	Cuda	programming		Cuda
+ext	.cuh	Cuda	programming		Cuda
+lang	Cuda	Cuda	programming	#3A4E3A	Cuda
+ext	.cue	Cue Sheet	data		Cue Sheet
+lang	Cue Sheet	Cue Sheet	data		Cue Sheet
+ext	.curry	Curry	programming	#531242	Curry
+lang	Curry	Curry	programming	#531242	Curry
+ext	.cy	Cycript	programming		Cycript
+lang	Cycript	Cycript	programming		Cycript
+ext	.cylc	Cylc	data	#00b3fd	Cylc
+filename	suite.rc	Cylc	data	#00b3fd	Cylc
+lang	Cylc	Cylc	data	#00b3fd	INI
+ext	.cyp	Cypher	programming	#34c0eb	Cypher
+ext	.cypher	Cypher	programming	#34c0eb	Cypher
+lang	Cypher	Cypher	programming	#34c0eb	Cypher
+ext	.pyx	Cython	programming	#fedf5b	Cython
+ext	.pxd	Cython	programming	#fedf5b	Cython
+ext	.pxi	Cython	programming	#fedf5b	Cython
+lang	Cython	Cython	programming	#fedf5b	Cython
+ext	.d	D	programming	#ba595e	D
+ext	.di	D	programming	#ba595e	D
+lang	D	D	programming	#ba595e	D
+ext	.d-objdump	D-ObjDump	data		D-ObjDump
+lang	D-ObjDump	D-ObjDump	data		D-ObjDump
+ext	.d2	D2	markup	#526ee8	D2
+lang	D2	D2	markup	#526ee8	D2
+ext	.com	DIGITAL Command Language	programming		DIGITAL Command Language
+lang	DIGITAL Command Language	DIGITAL Command Language	programming		DIGITAL Command Language
+ext	.dm	DM	programming	#447265	DM
+lang	DM	DM	programming	#447265	DM
+ext	.zone	DNS Zone	data		DNS Zone
+ext	.arpa	DNS Zone	data		DNS Zone
+lang	DNS Zone	DNS Zone	data		DNS Zone
+ext	.d	DTrace	programming		DTrace
+interpreter	dtrace	DTrace	programming		DTrace
+lang	DTrace	DTrace	programming		DTrace
+ext	.dfy	Dafny	programming	#FFEC25	Dafny
+interpreter	dafny	Dafny	programming	#FFEC25	Dafny
+lang	Dafny	Dafny	programming	#FFEC25	Dafny
+ext	.darcspatch	Darcs Patch	data	#8eff23	Darcs Patch
+ext	.dpatch	Darcs Patch	data	#8eff23	Darcs Patch
+lang	Darcs Patch	Darcs Patch	data	#8eff23	Darcs Patch
+ext	.dart	Dart	programming	#00B4AB	Dart
+interpreter	dart	Dart	programming	#00B4AB	Dart
+lang	Dart	Dart	programming	#00B4AB	Dart
+ext	.das	Daslang	programming	#d3d3d3	Daslang
+lang	Daslang	Daslang	programming	#d3d3d3	Daslang
+ext	.dwl	DataWeave	programming	#003a52	DataWeave
+lang	DataWeave	DataWeave	programming	#003a52	DataWeave
+ext	.dsc	Debian Package Control File	data	#D70751	Debian Package Control File
+lang	Debian Package Control File	Debian Package Control File	data	#D70751	Debian Package Control File
+ext	.dsc	DenizenScript	programming	#FBEE96	DenizenScript
+lang	DenizenScript	DenizenScript	programming	#FBEE96	DenizenScript
+ext	.dhall	Dhall	programming	#dfafff	Dhall
+lang	Dhall	Dhall	programming	#dfafff	Dhall
+ext	.diff	Diff	data		Diff
+ext	.patch	Diff	data		Diff
+lang	Diff	Diff	data		Diff
+ext	.x	DirectX 3D File	data	#aace60	DirectX 3D File
+lang	DirectX 3D File	DirectX 3D File	data	#aace60	DirectX 3D File
+ext	.dockerfile	Dockerfile	programming	#384d54	Dockerfile
+ext	.containerfile	Dockerfile	programming	#384d54	Dockerfile
+filename	Containerfile	Dockerfile	programming	#384d54	Dockerfile
+filename	Dockerfile	Dockerfile	programming	#384d54	Dockerfile
+lang	Dockerfile	Dockerfile	programming	#384d54	Dockerfile
+ext	.djs	Dogescript	programming	#cca760	Dogescript
+lang	Dogescript	Dogescript	programming	#cca760	Dogescript
+ext	.env	Dotenv	data	#e5d559	Dotenv
+filename	.env	Dotenv	data	#e5d559	Dotenv
+filename	.env.ci	Dotenv	data	#e5d559	Dotenv
+filename	.env.dev	Dotenv	data	#e5d559	Dotenv
+filename	.env.development	Dotenv	data	#e5d559	Dotenv
+filename	.env.development.local	Dotenv	data	#e5d559	Dotenv
+filename	.env.example	Dotenv	data	#e5d559	Dotenv
+filename	.env.local	Dotenv	data	#e5d559	Dotenv
+filename	.env.prod	Dotenv	data	#e5d559	Dotenv
+filename	.env.production	Dotenv	data	#e5d559	Dotenv
+filename	.env.sample	Dotenv	data	#e5d559	Dotenv
+filename	.env.staging	Dotenv	data	#e5d559	Dotenv
+filename	.env.template	Dotenv	data	#e5d559	Dotenv
+filename	.env.test	Dotenv	data	#e5d559	Dotenv
+filename	.env.testing	Dotenv	data	#e5d559	Dotenv
+lang	Dotenv	Dotenv	data	#e5d559	Dotenv
+filename	dune-project	Dune	programming		Dune
+lang	Dune	Dune	programming	#89421e	Dune
+ext	.dylan	Dylan	programming	#6c616e	Dylan
+ext	.dyl	Dylan	programming	#6c616e	Dylan
+ext	.intr	Dylan	programming	#6c616e	Dylan
+ext	.lid	Dylan	programming	#6c616e	Dylan
+lang	Dylan	Dylan	programming	#6c616e	Dylan
+ext	.e	E	programming	#ccce35	E
+interpreter	rune	E	programming	#ccce35	E
+lang	E	E	programming	#ccce35	E
+ext	.eml	E-mail	data		E-mail
+ext	.mbox	E-mail	data		E-mail
+lang	E-mail	E-mail	data		E-mail
+ext	.ebnf	EBNF	data		EBNF
+lang	EBNF	EBNF	data		EBNF
+ext	.ecl	ECL	programming	#8a1267	ECL
+ext	.eclxml	ECL	programming	#8a1267	ECL
+lang	ECL	ECL	programming	#8a1267	ECL
+ext	.ecl	ECLiPSe	programming	#001d9d	Prolog
+lang	ECLiPSe	ECLiPSe	programming	#001d9d	Prolog
+ext	.ejs	EJS	markup	#a91e50	EJS
+ext	.ect	EJS	markup	#a91e50	EJS
+ext	.ejs.t	EJS	markup	#a91e50	EJS
+ext	.jst	EJS	markup	#a91e50	EJS
+lang	EJS	EJS	markup	#a91e50	EJS
+ext	.eq	EQ	programming	#a78649	EQ
+lang	EQ	EQ	programming	#a78649	EQ
+ext	.sch	Eagle	data		Eagle
+ext	.brd	Eagle	data		Eagle
+lang	Eagle	Eagle	data		Eagle
+filename	Earthfile	Earthly	programming	#2af0ff	Earthly
+lang	Earthly	Earthly	programming	#2af0ff	Earthly
+ext	.eb	Easybuild	data	#069406	Python
+lang	Easybuild	Easybuild	data	#069406	Python
+ext	.epj	Ecere Projects	data	#913960	JavaScript
+lang	Ecere Projects	Ecere Projects	data	#913960	JavaScript
+ext	.html	Ecmarkup	markup	#eb8131	HTML
+lang	Ecmarkup	Ecmarkup	markup	#eb8131	HTML
+ext	.edge	Edge	markup	#0dffe0	Edge
+lang	Edge	Edge	markup	#0dffe0	Edge
+ext	.edgeql	EdgeQL	programming	#31A7FF	EdgeQL
+ext	.esdl	EdgeQL	programming	#31A7FF	EdgeQL
+lang	EdgeQL	EdgeQL	programming	#31A7FF	EdgeQL
+ext	.editorconfig	EditorConfig	data	#fff1f2	INI
+filename	.editorconfig	EditorConfig	data	#fff1f2	INI
+lang	EditorConfig	EditorConfig	data	#fff1f2	INI
+ext	.edc	Edje Data Collection	data		Edje Data Collection
+lang	Edje Data Collection	Edje Data Collection	data		Edje Data Collection
+ext	.e	Eiffel	programming	#4d6977	Eiffel
+lang	Eiffel	Eiffel	programming	#4d6977	Eiffel
+ext	.ex	Elixir	programming	#6e4a7e	Elixir
+ext	.exs	Elixir	programming	#6e4a7e	Elixir
+filename	mix.lock	Elixir	programming	#6e4a7e	Elixir
+interpreter	elixir	Elixir	programming	#6e4a7e	Elixir
+lang	Elixir	Elixir	programming	#6e4a7e	Elixir
+ext	.elm	Elm	programming	#60B5CC	Elm
+lang	Elm	Elm	programming	#60B5CC	Elm
+ext	.elv	Elvish	programming		Elvish
+interpreter	elvish	Elvish	programming		Elvish
+lang	Elvish	Elvish	programming	#55BB55	Elvish
+lang	Elvish Transcript	Elvish Transcript	programming	#55BB55	Elvish
+filename	.abbrev_defs	Emacs Lisp	programming	#c065db	Emacs Lisp
+filename	.emacs	Emacs Lisp	programming	#c065db	Emacs Lisp
+filename	.emacs.desktop	Emacs Lisp	programming	#c065db	Emacs Lisp
+filename	.gnus	Emacs Lisp	programming	#c065db	Emacs Lisp
+filename	.spacemacs	Emacs Lisp	programming	#c065db	Emacs Lisp
+filename	.viper	Emacs Lisp	programming	#c065db	Emacs Lisp
+filename	Cask	Emacs Lisp	programming	#c065db	Emacs Lisp
+filename	Eask	Emacs Lisp	programming	#c065db	Emacs Lisp
+filename	Project.ede	Emacs Lisp	programming	#c065db	Emacs Lisp
+filename	_emacs	Emacs Lisp	programming	#c065db	Emacs Lisp
+filename	abbrev_defs	Emacs Lisp	programming	#c065db	Emacs Lisp
+ext	.el	Emacs Lisp	programming	#c065db	Emacs Lisp
+ext	.emacs	Emacs Lisp	programming	#c065db	Emacs Lisp
+ext	.emacs.desktop	Emacs Lisp	programming	#c065db	Emacs Lisp
+lang	Emacs Lisp	Emacs Lisp	programming	#c065db	Emacs Lisp
+ext	.em	EmberScript	programming	#FFF4F3	EmberScript
+ext	.emberscript	EmberScript	programming	#FFF4F3	EmberScript
+lang	EmberScript	EmberScript	programming	#FFF4F3	EmberScript
+ext	.erl	Erlang	programming	#B83998	Erlang
+ext	.app	Erlang	programming	#B83998	Erlang
+ext	.app.src	Erlang	programming	#B83998	Erlang
+ext	.es	Erlang	programming	#B83998	Erlang
+ext	.escript	Erlang	programming	#B83998	Erlang
+ext	.hrl	Erlang	programming	#B83998	Erlang
+ext	.xrl	Erlang	programming	#B83998	Erlang
+ext	.yrl	Erlang	programming	#B83998	Erlang
+filename	Emakefile	Erlang	programming	#B83998	Erlang
+filename	rebar.config	Erlang	programming	#B83998	Erlang
+filename	rebar.config.lock	Erlang	programming	#B83998	Erlang
+filename	rebar.lock	Erlang	programming	#B83998	Erlang
+interpreter	escript	Erlang	programming	#B83998	Erlang
+lang	Erlang	Erlang	programming	#B83998	Erlang
+ext	.e	Euphoria	programming	#FF790B	Euphoria
+ext	.ex	Euphoria	programming	#FF790B	Euphoria
+interpreter	eui	Euphoria	programming	#FF790B	Euphoria
+interpreter	euiw	Euphoria	programming	#FF790B	Euphoria
+lang	Euphoria	Euphoria	programming	#FF790B	Euphoria
+ext	.fs	F#	programming	#b845fc	F#
+ext	.fsi	F#	programming	#b845fc	F#
+ext	.fsx	F#	programming	#b845fc	F#
+lang	F#	F#	programming	#b845fc	F#
+ext	.fst	F*	programming	#572e30	F*
+ext	.fsti	F*	programming	#572e30	F*
+lang	F*	F*	programming	#572e30	F*
+ext	.flf	FIGlet Font	data	#FFDDBB	FIGlet Font
+lang	FIGlet Font	FIGlet Font	data	#FFDDBB	FIGlet Font
+ext	.fir	FIRRTL	programming	#2f632f	FIRRTL
+lang	FIRRTL	FIRRTL	programming	#2f632f	FIRRTL
+ext	.fx	FLUX	programming	#88ccff	FLUX
+ext	.flux	FLUX	programming	#88ccff	FLUX
+lang	FLUX	FLUX	programming	#88ccff	FLUX
+ext	.fpp	FPP	programming	#d37327	FPP
+ext	.fppi	FPP	programming	#d37327	FPP
+lang	FPP	FPP	programming	#d37327	FPP
+ext	.factor	Factor	programming	#636746	Factor
+filename	.factor-boot-rc	Factor	programming	#636746	Factor
+filename	.factor-rc	Factor	programming	#636746	Factor
+lang	Factor	Factor	programming	#636746	Factor
+ext	.fy	Fancy	programming	#7b9db4	Fancy
+ext	.fancypack	Fancy	programming	#7b9db4	Fancy
+filename	Fakefile	Fancy	programming	#7b9db4	Fancy
+lang	Fancy	Fancy	programming	#7b9db4	Fancy
+ext	.fan	Fantom	programming	#14253c	Fantom
+lang	Fantom	Fantom	programming	#14253c	Fantom
+ext	.dsp	Faust	programming	#c37240	Faust
+lang	Faust	Faust	programming	#c37240	Faust
+interpreter	fennel	Fennel	programming	#fff3d7	Fennel
+ext	.fnl	Fennel	programming	#fff3d7	Fennel
+lang	Fennel	Fennel	programming	#fff3d7	Fennel
+ext	.f	Filebench WML	programming	#F6B900	Filebench WML
+lang	Filebench WML	Filebench WML	programming	#F6B900	Filebench WML
+ext	.fs	Filterscript	programming		RenderScript
+lang	Filterscript	Filterscript	programming		RenderScript
+ext	.fbs	FlatBuffers	data	#ed284a	FlatBuffers
+lang	FlatBuffers	FlatBuffers	data	#ed284a	FlatBuffers
+ext	.flix	Flix	programming	#d44a45	Flix
+lang	Flix	Flix	programming	#d44a45	Flix
+ext	.ftl	Fluent	programming	#ffcc33	Fluent
+lang	Fluent	Fluent	programming	#ffcc33	Fluent
+ext	.for	Formatted	data		Formatted
+ext	.eam.fs	Formatted	data		Formatted
+lang	Formatted	Formatted	data		Formatted
+ext	.fth	Forth	programming	#341708	Forth
+ext	.4th	Forth	programming	#341708	Forth
+ext	.f	Forth	programming	#341708	Forth
+ext	.for	Forth	programming	#341708	Forth
+ext	.forth	Forth	programming	#341708	Forth
+ext	.fr	Forth	programming	#341708	Forth
+ext	.frt	Forth	programming	#341708	Forth
+ext	.fs	Forth	programming	#341708	Forth
+lang	Forth	Forth	programming	#341708	Forth
+ext	.f	Fortran	programming	#4d41b1	Fortran
+ext	.f77	Fortran	programming	#4d41b1	Fortran
+ext	.for	Fortran	programming	#4d41b1	Fortran
+ext	.fpp	Fortran	programming	#4d41b1	Fortran
+lang	Fortran	Fortran	programming	#4d41b1	Fortran
+ext	.f90	Fortran Free Form	programming	#4d41b1	Fortran
+ext	.f03	Fortran Free Form	programming	#4d41b1	Fortran
+ext	.f08	Fortran Free Form	programming	#4d41b1	Fortran
+ext	.f95	Fortran Free Form	programming	#4d41b1	Fortran
+lang	Fortran Free Form	Fortran Free Form	programming	#4d41b1	Fortran
+ext	.bi	FreeBASIC	programming	#141AC9	FreeBASIC
+ext	.bas	FreeBASIC	programming	#141AC9	FreeBASIC
+lang	FreeBASIC	FreeBASIC	programming	#141AC9	FreeBASIC
+ext	.ftl	FreeMarker	programming	#0050b2	FreeMarker
+ext	.ftlh	FreeMarker	programming	#0050b2	FreeMarker
+lang	FreeMarker	FreeMarker	programming	#0050b2	FreeMarker
+ext	.fr	Frege	programming	#00cafe	Frege
+lang	Frege	Frege	programming	#00cafe	Frege
+ext	.fut	Futhark	programming	#5f021f	Futhark
+lang	Futhark	Futhark	programming	#5f021f	Futhark
+ext	.g	G-code	programming	#D08CF2	G-code
+ext	.cnc	G-code	programming	#D08CF2	G-code
+ext	.gco	G-code	programming	#D08CF2	G-code
+ext	.gcode	G-code	programming	#D08CF2	G-code
+lang	G-code	G-code	programming	#D08CF2	G-code
+ext	.gaml	GAML	programming	#FFC766	GAML
+lang	GAML	GAML	programming	#FFC766	GAML
+ext	.gms	GAMS	programming	#f49a22	GAMS
+lang	GAMS	GAMS	programming	#f49a22	GAMS
+ext	.g	GAP	programming	#0000cc	GAP
+ext	.gap	GAP	programming	#0000cc	GAP
+ext	.gd	GAP	programming	#0000cc	GAP
+ext	.gi	GAP	programming	#0000cc	GAP
+ext	.tst	GAP	programming	#0000cc	GAP
+lang	GAP	GAP	programming	#0000cc	GAP
+ext	.md	GCC Machine Description	programming	#FFCFAB	GCC Machine Description
+lang	GCC Machine Description	GCC Machine Description	programming	#FFCFAB	GCC Machine Description
+ext	.gdb	GDB	programming		GDB
+ext	.gdbinit	GDB	programming		GDB
+lang	GDB	GDB	programming		GDB
+ext	.gd	GDScript	programming	#355570	GDScript
+lang	GDScript	GDScript	programming	#355570	GDScript
+ext	.gdshader	GDShader	programming	#478CBF	GDShader
+ext	.gdshaderinc	GDShader	programming	#478CBF	GDShader
+lang	GDShader	GDShader	programming	#478CBF	GDShader
+ext	.ged	GEDCOM	data	#003058	GEDCOM
+lang	GEDCOM	GEDCOM	data	#003058	GEDCOM
+ext	.glsl	GLSL	programming	#5686a5	GLSL
+ext	.fp	GLSL	programming	#5686a5	GLSL
+ext	.frag	GLSL	programming	#5686a5	GLSL
+ext	.frg	GLSL	programming	#5686a5	GLSL
+ext	.fs	GLSL	programming	#5686a5	GLSL
+ext	.fsh	GLSL	programming	#5686a5	GLSL
+ext	.fshader	GLSL	programming	#5686a5	GLSL
+ext	.geo	GLSL	programming	#5686a5	GLSL
+ext	.geom	GLSL	programming	#5686a5	GLSL
+ext	.glslf	GLSL	programming	#5686a5	GLSL
+ext	.glslv	GLSL	programming	#5686a5	GLSL
+ext	.gs	GLSL	programming	#5686a5	GLSL
+ext	.gshader	GLSL	programming	#5686a5	GLSL
+ext	.rchit	GLSL	programming	#5686a5	GLSL
+ext	.rmiss	GLSL	programming	#5686a5	GLSL
+ext	.shader	GLSL	programming	#5686a5	GLSL
+ext	.tesc	GLSL	programming	#5686a5	GLSL
+ext	.tese	GLSL	programming	#5686a5	GLSL
+ext	.vert	GLSL	programming	#5686a5	GLSL
+ext	.vrx	GLSL	programming	#5686a5	GLSL
+ext	.vs	GLSL	programming	#5686a5	GLSL
+ext	.vsh	GLSL	programming	#5686a5	GLSL
+ext	.vshader	GLSL	programming	#5686a5	GLSL
+lang	GLSL	GLSL	programming	#5686a5	GLSL
+ext	.gn	GN	data		GN
+ext	.gni	GN	data		GN
+interpreter	gn	GN	data		GN
+filename	.gn	GN	data		GN
+lang	GN	GN	data		GN
+ext	.gsc	GSC	programming	#FF6800	GSC
+ext	.csc	GSC	programming	#FF6800	GSC
+ext	.gsh	GSC	programming	#FF6800	GSC
+lang	GSC	GSC	programming	#FF6800	GSC
+ext	.gml	Game Maker Language	programming	#71b417	Game Maker Language
+lang	Game Maker Language	Game Maker Language	programming	#71b417	Game Maker Language
+filename	Gemfile.lock	Gemfile.lock	data	#701516	Gemfile.lock
+lang	Gemfile.lock	Gemfile.lock	data	#701516	Gemfile.lock
+ext	.gmi	Gemini	prose	#ff6900	Gemini
+lang	Gemini	Gemini	prose	#ff6900	Gemini
+ext	.4gl	Genero 4gl	programming	#63408e	Genero 4gl
+lang	Genero 4gl	Genero 4gl	programming	#63408e	Genero 4gl
+ext	.per	Genero per	markup	#d8df39	Genero per
+lang	Genero per	Genero per	markup	#d8df39	Genero per
+ext	.gs	Genie	programming		Genie
+lang	Genie	Genie	programming	#fb855d	Genie
+ext	.kid	Genshi	programming	#951531	Genshi
+lang	Genshi	Genshi	programming	#951531	Genshi
+ext	.ebuild	Gentoo Ebuild	programming	#9400ff	Shell
+lang	Gentoo Ebuild	Gentoo Ebuild	programming	#9400ff	Shell
+ext	.eclass	Gentoo Eclass	programming	#9400ff	Shell
+lang	Gentoo Eclass	Gentoo Eclass	programming	#9400ff	Shell
+ext	.gbr	Gerber Image	data	#d20b00	Gerber Image
+ext	.cmp	Gerber Image	data	#d20b00	Gerber Image
+ext	.gbl	Gerber Image	data	#d20b00	Gerber Image
+ext	.gbo	Gerber Image	data	#d20b00	Gerber Image
+ext	.gbp	Gerber Image	data	#d20b00	Gerber Image
+ext	.gbs	Gerber Image	data	#d20b00	Gerber Image
+ext	.gko	Gerber Image	data	#d20b00	Gerber Image
+ext	.gml	Gerber Image	data	#d20b00	Gerber Image
+ext	.gpb	Gerber Image	data	#d20b00	Gerber Image
+ext	.gpt	Gerber Image	data	#d20b00	Gerber Image
+ext	.gtl	Gerber Image	data	#d20b00	Gerber Image
+ext	.gto	Gerber Image	data	#d20b00	Gerber Image
+ext	.gtp	Gerber Image	data	#d20b00	Gerber Image
+ext	.gts	Gerber Image	data	#d20b00	Gerber Image
+ext	.ncl	Gerber Image	data	#d20b00	Gerber Image
+ext	.sol	Gerber Image	data	#d20b00	Gerber Image
+interpreter	gerbv	Gerber Image	data	#d20b00	Gerber Image
+interpreter	gerbview	Gerber Image	data	#d20b00	Gerber Image
+lang	Gerber Image	Gerber Image	data	#d20b00	Gerber Image
+ext	.po	Gettext Catalog	prose		Gettext Catalog
+ext	.pot	Gettext Catalog	prose		Gettext Catalog
+lang	Gettext Catalog	Gettext Catalog	prose		Gettext Catalog
+ext	.feature	Gherkin	programming		Gherkin
+ext	.story	Gherkin	programming		Gherkin
+lang	Gherkin	Gherkin	programming	#5B2063	Gherkin
+filename	.gitattributes	Git Attributes	data	#F44D27	Git Attributes
+lang	Git Attributes	Git Attributes	data	#F44D27	Git Attributes
+filename	.gitmessage	Git Commit	data	#F44D27	Git Commit
+filename	COMMIT_EDITMSG	Git Commit	data	#F44D27	Git Commit
+lang	Git Commit	Git Commit	data	#F44D27	Git Commit
+ext	.gitconfig	Git Config	data	#F44D27	INI
+filename	.gitconfig	Git Config	data	#F44D27	INI
+filename	.gitmodules	Git Config	data	#F44D27	INI
+filename	.tgitconfig	Git Config	data	#F44D27	INI
+filename	config.worktree	Git Config	data	#F44D27	INI
+lang	Git Config	Git Config	data	#F44D27	INI
+filename	.git-blame-ignore-revs	Git Revision List	data	#F44D27	Git Revision List
+lang	Git Revision List	Git Revision List	data	#F44D27	Git Revision List
+ext	.gleam	Gleam	programming	#ffaff3	Gleam
+lang	Gleam	Gleam	programming	#ffaff3	Gleam
+ext	.gjs	Glimmer JS	programming		Glimmer JS
+lang	Glimmer JS	Glimmer JS	programming	#F5835F	JavaScript
+ext	.gts	Glimmer TS	programming		Glimmer TS
+lang	Glimmer TS	Glimmer TS	programming	#3178c6	TypeScript
+ext	.glf	Glyph	programming	#c1ac7f	Glyph
+lang	Glyph	Glyph	programming	#c1ac7f	Glyph
+ext	.bdf	Glyph Bitmap Distribution Format	data		Glyph Bitmap Distribution Format
+lang	Glyph Bitmap Distribution Format	Glyph Bitmap Distribution Format	data		Glyph Bitmap Distribution Format
+ext	.gno	Gno	programming	#226c57	Gno
+lang	Gno	Gno	programming	#226c57	Gno
+ext	.gp	Gnuplot	programming	#f0a9f0	Gnuplot
+ext	.gnu	Gnuplot	programming	#f0a9f0	Gnuplot
+ext	.gnuplot	Gnuplot	programming	#f0a9f0	Gnuplot
+ext	.p	Gnuplot	programming	#f0a9f0	Gnuplot
+ext	.plot	Gnuplot	programming	#f0a9f0	Gnuplot
+ext	.plt	Gnuplot	programming	#f0a9f0	Gnuplot
+interpreter	gnuplot	Gnuplot	programming	#f0a9f0	Gnuplot
+lang	Gnuplot	Gnuplot	programming	#f0a9f0	Gnuplot
+ext	.go	Go	programming	#00ADD8	Go
+lang	Go	Go	programming	#00ADD8	Go
+filename	go.sum	Go Checksums	data	#00ADD8	Go Checksums
+filename	go.work.sum	Go Checksums	data	#00ADD8	Go Checksums
+lang	Go Checksums	Go Checksums	data	#00ADD8	Go Checksums
+filename	go.mod	Go Module	data	#00ADD8	Go Module
+lang	Go Module	Go Module	data	#00ADD8	Go Module
+ext	.gohtml	Go Template	markup	#00ADD8	Go Template
+ext	.gotmpl	Go Template	markup	#00ADD8	Go Template
+ext	.html.tmpl	Go Template	markup	#00ADD8	Go Template
+ext	.tmpl	Go Template	markup	#00ADD8	Go Template
+ext	.tpl	Go Template	markup	#00ADD8	Go Template
+filename	_helpers.tpl	Go Template	markup	#00ADD8	Go Template
+lang	Go Template	Go Template	markup	#00ADD8	Go Template
+filename	go.work	Go Workspace	data	#00ADD8	Go Workspace
+lang	Go Workspace	Go Workspace	data	#00ADD8	Go Workspace
+ext	.gdnlib	Godot Resource	data	#355570	Godot Resource
+ext	.gdns	Godot Resource	data	#355570	Godot Resource
+ext	.tres	Godot Resource	data	#355570	Godot Resource
+ext	.tscn	Godot Resource	data	#355570	Godot Resource
+filename	project.godot	Godot Resource	data	#355570	Godot Resource
+lang	Godot Resource	Godot Resource	data	#355570	Godot Resource
+ext	.golo	Golo	programming	#88562A	Golo
+lang	Golo	Golo	programming	#88562A	Golo
+ext	.gs	Gosu	programming	#82937f	Gosu
+ext	.gst	Gosu	programming	#82937f	Gosu
+ext	.gsx	Gosu	programming	#82937f	Gosu
+ext	.vark	Gosu	programming	#82937f	Gosu
+lang	Gosu	Gosu	programming	#82937f	Gosu
+ext	.grace	Grace	programming	#615f8b	Grace
+lang	Grace	Grace	programming	#615f8b	Grace
+ext	.gradle	Gradle	data	#02303a	Gradle
+lang	Gradle	Gradle	data	#02303a	Gradle
+ext	.gradle.kts	Gradle Kotlin DSL	data	#02303a	Gradle
+lang	Gradle Kotlin DSL	Gradle Kotlin DSL	data	#02303a	Gradle
+ext	.gf	Grammatical Framework	programming		Grammatical Framework
+lang	Grammatical Framework	Grammatical Framework	programming	#ff0000	Grammatical Framework
+ext	.gml	Graph Modeling Language	data		Graph Modeling Language
+lang	Graph Modeling Language	Graph Modeling Language	data		Graph Modeling Language
+ext	.graphql	GraphQL	data	#e10098	GraphQL
+ext	.gql	GraphQL	data	#e10098	GraphQL
+ext	.graphqls	GraphQL	data	#e10098	GraphQL
+lang	GraphQL	GraphQL	data	#e10098	GraphQL
+ext	.dot	Graphviz (DOT)	data	#2596be	Graphviz (DOT)
+ext	.gv	Graphviz (DOT)	data	#2596be	Graphviz (DOT)
+lang	Graphviz (DOT)	Graphviz (DOT)	data	#2596be	Graphviz (DOT)
+ext	.groovy	Groovy	programming	#4298b8	Groovy
+ext	.grt	Groovy	programming	#4298b8	Groovy
+ext	.gtpl	Groovy	programming	#4298b8	Groovy
+ext	.gvy	Groovy	programming	#4298b8	Groovy
+interpreter	groovy	Groovy	programming	#4298b8	Groovy
+filename	Jenkinsfile	Groovy	programming	#4298b8	Groovy
+lang	Groovy	Groovy	programming	#4298b8	Groovy
+ext	.gsp	Groovy Server Pages	programming	#4298b8	Groovy
+lang	Groovy Server Pages	Groovy Server Pages	programming	#4298b8	Groovy
+ext	.gtkrc	GtkRC	data	#7fe719	GtkRC
+filename	gtkrc	GtkRC	data	#7fe719	GtkRC
+filename	gtkrc-2.0	GtkRC	data	#7fe719	GtkRC
+lang	GtkRC	GtkRC	data	#7fe719	GtkRC
+ext	.cfg	HAProxy	data	#106da9	HAProxy
+filename	haproxy.cfg	HAProxy	data	#106da9	HAProxy
+lang	HAProxy	HAProxy	data	#106da9	HAProxy
+ext	.hcl	HCL	programming	#844FBA	HCL
+ext	.nomad	HCL	programming	#844FBA	HCL
+ext	.tf	HCL	programming	#844FBA	HCL
+ext	.tfvars	HCL	programming	#844FBA	HCL
+ext	.tofu	HCL	programming	#844FBA	HCL
+ext	.workflow	HCL	programming	#844FBA	HCL
+lang	HCL	HCL	programming	#844FBA	HCL
+ext	.hip	HIP	programming	#4F3A4F	HIP
+lang	HIP	HIP	programming	#4F3A4F	HIP
+ext	.hlsl	HLSL	programming	#aace60	HLSL
+ext	.cginc	HLSL	programming	#aace60	HLSL
+ext	.fx	HLSL	programming	#aace60	HLSL
+ext	.fxh	HLSL	programming	#aace60	HLSL
+ext	.hlsli	HLSL	programming	#aace60	HLSL
+lang	HLSL	HLSL	programming	#aace60	HLSL
+ext	.hocon	HOCON	data	#9ff8ee	HOCON
+filename	.scalafix.conf	HOCON	data	#9ff8ee	HOCON
+filename	.scalafmt.conf	HOCON	data	#9ff8ee	HOCON
+lang	HOCON	HOCON	data	#9ff8ee	HOCON
+ext	.html	HTML	markup	#e34c26	HTML
+ext	.hta	HTML	markup	#e34c26	HTML
+ext	.htm	HTML	markup	#e34c26	HTML
+ext	.html.hl	HTML	markup	#e34c26	HTML
+ext	.inc	HTML	markup	#e34c26	HTML
+ext	.xht	HTML	markup	#e34c26	HTML
+ext	.xhtml	HTML	markup	#e34c26	HTML
+lang	HTML	HTML	markup	#e34c26	HTML
+ext	.ecr	HTML+ECR	markup	#2e1052	HTML
+lang	HTML+ECR	HTML+ECR	markup	#2e1052	HTML
+ext	.html.eex	HTML+EEX	markup	#6e4a7e	HTML
+ext	.heex	HTML+EEX	markup	#6e4a7e	HTML
+ext	.leex	HTML+EEX	markup	#6e4a7e	HTML
+lang	HTML+EEX	HTML+EEX	markup	#6e4a7e	HTML
+ext	.erb	HTML+ERB	markup	#701516	HTML
+ext	.erb.deface	HTML+ERB	markup	#701516	HTML
+ext	.rhtml	HTML+ERB	markup	#701516	HTML
+lang	HTML+ERB	HTML+ERB	markup	#701516	HTML
+ext	.phtml	HTML+PHP	markup	#4f5d95	HTML
+lang	HTML+PHP	HTML+PHP	markup	#4f5d95	HTML
+ext	.cshtml	HTML+Razor	markup	#512be4	HTML
+ext	.razor	HTML+Razor	markup	#512be4	HTML
+lang	HTML+Razor	HTML+Razor	markup	#512be4	HTML
+ext	.http	HTTP	data	#005C9C	HTTP
+lang	HTTP	HTTP	data	#005C9C	HTTP
+ext	.hxml	HXML	data	#f68712	HXML
+lang	HXML	HXML	data	#f68712	HXML
+ext	.hack	Hack	programming		Hack
+ext	.hh	Hack	programming		Hack
+ext	.hhi	Hack	programming		Hack
+ext	.php	Hack	programming		Hack
+lang	Hack	Hack	programming	#878787	Hack
+ext	.haml	Haml	markup	#ece2a9	Haml
+ext	.haml.deface	Haml	markup	#ece2a9	Haml
+lang	Haml	Haml	markup	#ece2a9	Haml
+ext	.handlebars	Handlebars	markup	#f7931e	Handlebars
+ext	.hbs	Handlebars	markup	#f7931e	Handlebars
+lang	Handlebars	Handlebars	markup	#f7931e	Handlebars
+ext	.hb	Harbour	programming	#0e60e3	Harbour
+lang	Harbour	Harbour	programming	#0e60e3	Harbour
+ext	.ha	Hare	programming	#9d7424	Hare
+lang	Hare	Hare	programming	#9d7424	Hare
+ext	.hs	Haskell	programming	#5e5086	Haskell
+ext	.hs-boot	Haskell	programming	#5e5086	Haskell
+ext	.hsc	Haskell	programming	#5e5086	Haskell
+interpreter	runghc	Haskell	programming	#5e5086	Haskell
+interpreter	runhaskell	Haskell	programming	#5e5086	Haskell
+interpreter	runhugs	Haskell	programming	#5e5086	Haskell
+lang	Haskell	Haskell	programming	#5e5086	Haskell
+ext	.hx	Haxe	programming	#df7900	Haxe
+ext	.hxsl	Haxe	programming	#df7900	Haxe
+lang	Haxe	Haxe	programming	#df7900	Haxe
+ext	.q	HiveQL	programming		HiveQL
+ext	.hql	HiveQL	programming		HiveQL
+lang	HiveQL	HiveQL	programming	#dce200	HiveQL
+ext	.hc	HolyC	programming	#ffefaf	HolyC
+lang	HolyC	HolyC	programming	#ffefaf	HolyC
+filename	HOSTS	Hosts File	data	#308888	Hosts File
+filename	hosts	Hosts File	data	#308888	Hosts File
+filename	hosts.txt	Hosts File	data	#308888	Hosts File
+lang	Hosts File	Hosts File	data	#308888	Hosts File
+ext	.hurl	Hurl	programming	#FF0288	Hurl
+lang	Hurl	Hurl	programming	#FF0288	Hurl
+ext	.hy	Hy	programming	#7790B2	Hy
+interpreter	hy	Hy	programming	#7790B2	Hy
+lang	Hy	Hy	programming	#7790B2	Hy
+ext	.bf	HyPhy	programming		HyPhy
+lang	HyPhy	HyPhy	programming		HyPhy
+ext	.pro	IDL	programming	#a3522f	IDL
+ext	.dlm	IDL	programming	#a3522f	IDL
+lang	IDL	IDL	programming	#a3522f	IDL
+ext	.ipf	IGOR Pro	programming	#0000cc	IGOR Pro
+lang	IGOR Pro	IGOR Pro	programming	#0000cc	IGOR Pro
+ext	.il	IL Assembly	programming	#512BD4	IL Assembly
+lang	IL Assembly	IL Assembly	programming	#512BD4	IL Assembly
+ext	.ini	INI	data	#d1dbe0	INI
+ext	.cfg	INI	data	#d1dbe0	INI
+ext	.cnf	INI	data	#d1dbe0	INI
+ext	.container	INI	data	#d1dbe0	INI
+ext	.dof	INI	data	#d1dbe0	INI
+ext	.frm	INI	data	#d1dbe0	INI
+ext	.lektorproject	INI	data	#d1dbe0	INI
+ext	.mount	INI	data	#d1dbe0	INI
+ext	.network	INI	data	#d1dbe0	INI
+ext	.prefs	INI	data	#d1dbe0	INI
+ext	.pro	INI	data	#d1dbe0	INI
+ext	.properties	INI	data	#d1dbe0	INI
+ext	.service	INI	data	#d1dbe0	INI
+ext	.socket	INI	data	#d1dbe0	INI
+ext	.target	INI	data	#d1dbe0	INI
+ext	.timer	INI	data	#d1dbe0	INI
+ext	.url	INI	data	#d1dbe0	INI
+filename	.buckconfig	INI	data	#d1dbe0	INI
+filename	.coveragerc	INI	data	#d1dbe0	INI
+filename	.flake8	INI	data	#d1dbe0	INI
+filename	.gitreview	INI	data	#d1dbe0	INI
+filename	.pylintrc	INI	data	#d1dbe0	INI
+filename	HOSTS	INI	data	#d1dbe0	INI
+filename	buildozer.spec	INI	data	#d1dbe0	INI
+filename	hosts	INI	data	#d1dbe0	INI
+filename	pylintrc	INI	data	#d1dbe0	INI
+filename	vlcrc	INI	data	#d1dbe0	INI
+lang	INI	INI	data	#d1dbe0	INI
+ext	.irclog	IRC log	data		IRC log
+ext	.weechatlog	IRC log	data		IRC log
+lang	IRC log	IRC log	data		IRC log
+ext	.ispc	ISPC	programming	#2D68B1	ISPC
+lang	ISPC	ISPC	programming	#2D68B1	ISPC
+ext	.idr	Idris	programming	#b30000	Idris
+ext	.lidr	Idris	programming	#b30000	Idris
+lang	Idris	Idris	programming	#b30000	Idris
+ext	.gitignore	Ignore List	data	#000000	Ignore List
+filename	.agignore	Ignore List	data	#000000	Ignore List
+filename	.atomignore	Ignore List	data	#000000	Ignore List
+filename	.babelignore	Ignore List	data	#000000	Ignore List
+filename	.bzrignore	Ignore List	data	#000000	Ignore List
+filename	.ckignore	Ignore List	data	#000000	Ignore List
+filename	.coffeelintignore	Ignore List	data	#000000	Ignore List
+filename	.cvsignore	Ignore List	data	#000000	Ignore List
+filename	.dockerignore	Ignore List	data	#000000	Ignore List
+filename	.easignore	Ignore List	data	#000000	Ignore List
+filename	.eleventyignore	Ignore List	data	#000000	Ignore List
+filename	.eslint-ignore	Ignore List	data	#000000	Ignore List
+filename	.eslintignore	Ignore List	data	#000000	Ignore List
+filename	.gitignore	Ignore List	data	#000000	Ignore List
+filename	.ignore	Ignore List	data	#000000	Ignore List
+filename	.markdownlintignore	Ignore List	data	#000000	Ignore List
+filename	.nodemonignore	Ignore List	data	#000000	Ignore List
+filename	.npmignore	Ignore List	data	#000000	Ignore List
+filename	.prettierignore	Ignore List	data	#000000	Ignore List
+filename	.rgignore	Ignore List	data	#000000	Ignore List
+filename	.stylelintignore	Ignore List	data	#000000	Ignore List
+filename	.vercelignore	Ignore List	data	#000000	Ignore List
+filename	.vscodeignore	Ignore List	data	#000000	Ignore List
+filename	gitignore-global	Ignore List	data	#000000	Ignore List
+filename	gitignore_global	Ignore List	data	#000000	Ignore List
+lang	Ignore List	Ignore List	data	#000000	Ignore List
+ext	.hexpat	ImHex Pattern Language	programming	#3a6be0	ImHex Pattern Language
+lang	ImHex Pattern Language	ImHex Pattern Language	programming	#3a6be0	ImHex Pattern Language
+ext	.ijm	ImageJ Macro	programming	#99AAFF	ImageJ Macro
+lang	ImageJ Macro	ImageJ Macro	programming	#99AAFF	ImageJ Macro
+ext	.imba	Imba	programming	#16cec6	Imba
+lang	Imba	Imba	programming	#16cec6	Imba
+ext	.ni	Inform 7	programming		Inform 7
+ext	.i7x	Inform 7	programming		Inform 7
+lang	Inform 7	Inform 7	programming		Inform 7
+ext	.ink	Ink	programming		Ink
+lang	Ink	Ink	programming		Ink
+ext	.iss	Inno Setup	programming	#264b99	Inno Setup
+ext	.isl	Inno Setup	programming	#264b99	Inno Setup
+lang	Inno Setup	Inno Setup	programming	#264b99	Inno Setup
+ext	.io	Io	programming	#a9188d	Io
+interpreter	io	Io	programming	#a9188d	Io
+lang	Io	Io	programming	#a9188d	Io
+ext	.ik	Ioke	programming	#078193	Ioke
+interpreter	ioke	Ioke	programming	#078193	Ioke
+lang	Ioke	Ioke	programming	#078193	Ioke
+ext	.thy	Isabelle	programming	#FEFE00	Isabelle
+lang	Isabelle	Isabelle	programming	#FEFE00	Isabelle
+filename	ROOT	Isabelle ROOT	programming	#FEFE00	Isabelle
+lang	Isabelle ROOT	Isabelle ROOT	programming	#FEFE00	Isabelle
+ext	.ijs	J	programming	#9EEDFF	J
+interpreter	jconsole	J	programming	#9EEDFF	J
+lang	J	J	programming	#9EEDFF	J
+filename	MANIFEST.MF	JAR Manifest	data	#b07219	JAR Manifest
+lang	JAR Manifest	JAR Manifest	data	#b07219	JAR Manifest
+ext	.j	JASS	programming	#FF0303	JASS
+lang	JASS	JASS	programming	#FF0303	JASS
+ext	.jcl	JCL	programming	#d90e09	JCL
+lang	JCL	JCL	programming	#d90e09	JCL
+ext	.flex	JFlex	programming	#DBCA00	Lex
+ext	.jflex	JFlex	programming	#DBCA00	Lex
+lang	JFlex	JFlex	programming	#DBCA00	Lex
+ext	.json	JSON	data	#292929	JSON
+ext	.4DForm	JSON	data	#292929	JSON
+ext	.4DProject	JSON	data	#292929	JSON
+ext	.avsc	JSON	data	#292929	JSON
+ext	.geojson	JSON	data	#292929	JSON
+ext	.gltf	JSON	data	#292929	JSON
+ext	.har	JSON	data	#292929	JSON
+ext	.ice	JSON	data	#292929	JSON
+ext	.JSON-tmLanguage	JSON	data	#292929	JSON
+ext	.json.example	JSON	data	#292929	JSON
+ext	.jsonl	JSON	data	#292929	JSON
+ext	.mcmeta	JSON	data	#292929	JSON
+ext	.sarif	JSON	data	#292929	JSON
+ext	.slnlaunch	JSON	data	#292929	JSON
+ext	.tact	JSON	data	#292929	JSON
+ext	.tfstate	JSON	data	#292929	JSON
+ext	.tfstate.backup	JSON	data	#292929	JSON
+ext	.topojson	JSON	data	#292929	JSON
+ext	.webapp	JSON	data	#292929	JSON
+ext	.webmanifest	JSON	data	#292929	JSON
+ext	.yy	JSON	data	#292929	JSON
+ext	.yyp	JSON	data	#292929	JSON
+filename	.all-contributorsrc	JSON	data	#292929	JSON
+filename	.arcconfig	JSON	data	#292929	JSON
+filename	.auto-changelog	JSON	data	#292929	JSON
+filename	.c8rc	JSON	data	#292929	JSON
+filename	.htmlhintrc	JSON	data	#292929	JSON
+filename	.imgbotconfig	JSON	data	#292929	JSON
+filename	.nycrc	JSON	data	#292929	JSON
+filename	.releaserc	JSON	data	#292929	JSON
+filename	.secrets.baseline	JSON	data	#292929	JSON
+filename	.tern-config	JSON	data	#292929	JSON
+filename	.tern-project	JSON	data	#292929	JSON
+filename	.watchmanconfig	JSON	data	#292929	JSON
+filename	MODULE.bazel.lock	JSON	data	#292929	JSON
+filename	Package.resolved	JSON	data	#292929	JSON
+filename	Pipfile.lock	JSON	data	#292929	JSON
+filename	bun.lock	JSON	data	#292929	JSON
+filename	composer.lock	JSON	data	#292929	JSON
+filename	deno.lock	JSON	data	#292929	JSON
+filename	flake.lock	JSON	data	#292929	JSON
+filename	mcmod.info	JSON	data	#292929	JSON
+lang	JSON	JSON	data	#292929	JSON
+ext	.jsonc	JSON with Comments	data	#292929	JSON
+ext	.code-snippets	JSON with Comments	data	#292929	JSON
+ext	.code-workspace	JSON with Comments	data	#292929	JSON
+ext	.hujson	JSON with Comments	data	#292929	JSON
+ext	.sublime-build	JSON with Comments	data	#292929	JSON
+ext	.sublime-color-scheme	JSON with Comments	data	#292929	JSON
+ext	.sublime-commands	JSON with Comments	data	#292929	JSON
+ext	.sublime-completions	JSON with Comments	data	#292929	JSON
+ext	.sublime-keymap	JSON with Comments	data	#292929	JSON
+ext	.sublime-macro	JSON with Comments	data	#292929	JSON
+ext	.sublime-menu	JSON with Comments	data	#292929	JSON
+ext	.sublime-mousemap	JSON with Comments	data	#292929	JSON
+ext	.sublime-project	JSON with Comments	data	#292929	JSON
+ext	.sublime-settings	JSON with Comments	data	#292929	JSON
+ext	.sublime-theme	JSON with Comments	data	#292929	JSON
+ext	.sublime-workspace	JSON with Comments	data	#292929	JSON
+ext	.sublime_metrics	JSON with Comments	data	#292929	JSON
+ext	.sublime_session	JSON with Comments	data	#292929	JSON
+ext	.tsconfig.json	JSON with Comments	data	#292929	JSON
+filename	.babelrc	JSON with Comments	data	#292929	JSON
+filename	.devcontainer.json	JSON with Comments	data	#292929	JSON
+filename	.eslintrc	JSON with Comments	data	#292929	JSON
+filename	.eslintrc.json	JSON with Comments	data	#292929	JSON
+filename	.jscsrc	JSON with Comments	data	#292929	JSON
+filename	.jshintrc	JSON with Comments	data	#292929	JSON
+filename	.jslintrc	JSON with Comments	data	#292929	JSON
+filename	.oxlintrc.json	JSON with Comments	data	#292929	JSON
+filename	.swcrc	JSON with Comments	data	#292929	JSON
+filename	api-extractor.json	JSON with Comments	data	#292929	JSON
+filename	devcontainer.json	JSON with Comments	data	#292929	JSON
+filename	jsconfig.json	JSON with Comments	data	#292929	JSON
+filename	language-configuration.json	JSON with Comments	data	#292929	JSON
+filename	tsconfig.json	JSON with Comments	data	#292929	JSON
+filename	tslint.json	JSON with Comments	data	#292929	JSON
+lang	JSON with Comments	JSON with Comments	data	#292929	JSON
+ext	.json5	JSON5	data	#267CB9	JSON5
+lang	JSON5	JSON5	data	#267CB9	JSON5
+ext	.jsonld	JSONLD	data	#0c479c	JSONLD
+lang	JSONLD	JSONLD	data	#0c479c	JSONLD
+ext	.jq	JSONiq	programming	#40d47e	JSONiq
+lang	JSONiq	JSONiq	programming	#40d47e	JSONiq
+ext	.jac	Jac	programming	#FC792D	Jac
+lang	Jac	Jac	programming	#FC792D	Jac
+ext	.jai	Jai	programming	#ab8b4b	Jai
+lang	Jai	Jai	programming	#ab8b4b	Jai
+ext	.janet	Janet	programming	#0886a5	Janet
+interpreter	janet	Janet	programming	#0886a5	Janet
+lang	Janet	Janet	programming	#0886a5	Janet
+ext	.j	Jasmin	programming	#d03600	Jasmin
+lang	Jasmin	Jasmin	programming	#d03600	Jasmin
+ext	.java	Java	programming	#b07219	Java
+ext	.jav	Java	programming	#b07219	Java
+ext	.jsh	Java	programming	#b07219	Java
+lang	Java	Java	programming	#b07219	Java
+ext	.properties	Java Properties	data	#2A6277	Java Properties
+lang	Java Properties	Java Properties	data	#2A6277	Java Properties
+ext	.jsp	Java Server Pages	programming	#2A6277	Java
+ext	.tag	Java Server Pages	programming	#2A6277	Java
+lang	Java Server Pages	Java Server Pages	programming	#2A6277	Java
+ext	.jte	Java Template Engine	programming	#2A6277	Java
+lang	Java Template Engine	Java Template Engine	programming	#2A6277	Java
+ext	.js	JavaScript	programming	#f1e05a	JavaScript
+ext	._js	JavaScript	programming	#f1e05a	JavaScript
+ext	.bones	JavaScript	programming	#f1e05a	JavaScript
+ext	.cjs	JavaScript	programming	#f1e05a	JavaScript
+ext	.es	JavaScript	programming	#f1e05a	JavaScript
+ext	.es6	JavaScript	programming	#f1e05a	JavaScript
+ext	.frag	JavaScript	programming	#f1e05a	JavaScript
+ext	.gs	JavaScript	programming	#f1e05a	JavaScript
+ext	.jake	JavaScript	programming	#f1e05a	JavaScript
+ext	.javascript	JavaScript	programming	#f1e05a	JavaScript
+ext	.jsb	JavaScript	programming	#f1e05a	JavaScript
+ext	.jscad	JavaScript	programming	#f1e05a	JavaScript
+ext	.jsfl	JavaScript	programming	#f1e05a	JavaScript
+ext	.jslib	JavaScript	programming	#f1e05a	JavaScript
+ext	.jsm	JavaScript	programming	#f1e05a	JavaScript
+ext	.jspre	JavaScript	programming	#f1e05a	JavaScript
+ext	.jss	JavaScript	programming	#f1e05a	JavaScript
+ext	.jsx	JavaScript	programming	#f1e05a	JavaScript
+ext	.mjs	JavaScript	programming	#f1e05a	JavaScript
+ext	.njs	JavaScript	programming	#f1e05a	JavaScript
+ext	.pac	JavaScript	programming	#f1e05a	JavaScript
+ext	.sjs	JavaScript	programming	#f1e05a	JavaScript
+ext	.ssjs	JavaScript	programming	#f1e05a	JavaScript
+ext	.xsjs	JavaScript	programming	#f1e05a	JavaScript
+ext	.xsjslib	JavaScript	programming	#f1e05a	JavaScript
+filename	Jakefile	JavaScript	programming	#f1e05a	JavaScript
+interpreter	bun	JavaScript	programming	#f1e05a	JavaScript
+interpreter	chakra	JavaScript	programming	#f1e05a	JavaScript
+interpreter	d8	JavaScript	programming	#f1e05a	JavaScript
+interpreter	deno	JavaScript	programming	#f1e05a	JavaScript
+interpreter	gjs	JavaScript	programming	#f1e05a	JavaScript
+interpreter	js	JavaScript	programming	#f1e05a	JavaScript
+interpreter	node	JavaScript	programming	#f1e05a	JavaScript
+interpreter	nodejs	JavaScript	programming	#f1e05a	JavaScript
+interpreter	qjs	JavaScript	programming	#f1e05a	JavaScript
+interpreter	rhino	JavaScript	programming	#f1e05a	JavaScript
+interpreter	v8	JavaScript	programming	#f1e05a	JavaScript
+interpreter	v8-shell	JavaScript	programming	#f1e05a	JavaScript
+lang	JavaScript	JavaScript	programming	#f1e05a	JavaScript
+ext	.js.erb	JavaScript+ERB	programming	#f1e05a	JavaScript
+lang	JavaScript+ERB	JavaScript+ERB	programming	#f1e05a	JavaScript
+ext	.snap	Jest Snapshot	data	#15c213	Jest Snapshot
+lang	Jest Snapshot	Jest Snapshot	data	#15c213	Jest Snapshot
+ext	.mps	JetBrains MPS	programming	#21D789	JetBrains MPS
+ext	.mpl	JetBrains MPS	programming	#21D789	JetBrains MPS
+ext	.msd	JetBrains MPS	programming	#21D789	JetBrains MPS
+lang	JetBrains MPS	JetBrains MPS	programming	#21D789	JetBrains MPS
+ext	.jinja	Jinja	markup	#a52a22	Jinja
+ext	.j2	Jinja	markup	#a52a22	Jinja
+ext	.jinja2	Jinja	markup	#a52a22	Jinja
+lang	Jinja	Jinja	markup	#a52a22	Jinja
+ext	.jison	Jison	programming	#56b3cb	Yacc
+lang	Jison	Jison	programming	#56b3cb	Yacc
+ext	.jisonlex	Jison Lex	programming	#56b3cb	Lex
+lang	Jison Lex	Jison Lex	programming	#56b3cb	Lex
+ext	.ol	Jolie	programming		Jolie
+ext	.iol	Jolie	programming		Jolie
+interpreter	jolie	Jolie	programming		Jolie
+lang	Jolie	Jolie	programming	#843179	Jolie
+ext	.jsonnet	Jsonnet	programming	#0064bd	Jsonnet
+ext	.libsonnet	Jsonnet	programming	#0064bd	Jsonnet
+lang	Jsonnet	Jsonnet	programming	#0064bd	Jsonnet
+ext	.jl	Julia	programming		Julia
+interpreter	julia	Julia	programming		Julia
+lang	Julia	Julia	programming	#a270ba	Julia
+lang	Julia REPL	Julia REPL	programming	#a270ba	Julia
+ext	.ipynb	Jupyter Notebook	markup	#DA5B0B	Jupyter Notebook
+filename	Notebook	Jupyter Notebook	markup	#DA5B0B	Jupyter Notebook
+lang	Jupyter Notebook	Jupyter Notebook	markup	#DA5B0B	Jupyter Notebook
+filename	.JUSTFILE	Just	programming	#384d54	Just
+filename	.Justfile	Just	programming	#384d54	Just
+filename	.justfile	Just	programming	#384d54	Just
+filename	JUSTFILE	Just	programming	#384d54	Just
+filename	Justfile	Just	programming	#384d54	Just
+filename	justfile	Just	programming	#384d54	Just
+ext	.just	Just	programming	#384d54	Just
+lang	Just	Just	programming	#384d54	Just
+ext	.k	KCL	programming	#7ABABF	KCL
+filename	kcl.mod	KCL	programming	#7ABABF	KCL
+filename	kcl.mod.lock	KCL	programming	#7ABABF	KCL
+lang	KCL	KCL	programming	#7ABABF	KCL
+ext	.kdl	KDL	data	#ffb3b3	KDL
+lang	KDL	KDL	data	#ffb3b3	KDL
+ext	.k	KFramework	programming	#4195c5	KFramework
+lang	KFramework	KFramework	programming	#4195c5	KFramework
+ext	.krl	KRL	programming	#28430A	KRL
+lang	KRL	KRL	programming	#28430A	KRL
+ext	.ksy	Kaitai Struct	programming	#773b37	Kaitai Struct
+lang	Kaitai Struct	Kaitai Struct	programming	#773b37	Kaitai Struct
+ext	.kak	KakouneScript	programming	#6f8042	KakouneScript
+filename	kakrc	KakouneScript	programming	#6f8042	KakouneScript
+lang	KakouneScript	KakouneScript	programming	#6f8042	KakouneScript
+ext	.ks	KerboScript	programming		KerboScript
+lang	KerboScript	KerboScript	programming	#41adf0	KerboScript
+ext	.kicad_pcb	KiCad Layout	data	#2f4aab	KiCad Layout
+ext	.kicad_mod	KiCad Layout	data	#2f4aab	KiCad Layout
+ext	.kicad_wks	KiCad Layout	data	#2f4aab	KiCad Layout
+filename	fp-lib-table	KiCad Layout	data	#2f4aab	KiCad Layout
+lang	KiCad Layout	KiCad Layout	data	#2f4aab	KiCad Layout
+ext	.brd	KiCad Legacy Layout	data	#2f4aab	KiCad Legacy Layout
+lang	KiCad Legacy Layout	KiCad Legacy Layout	data	#2f4aab	KiCad Legacy Layout
+ext	.kicad_sch	KiCad Schematic	data	#2f4aab	KiCad Schematic
+ext	.kicad_sym	KiCad Schematic	data	#2f4aab	KiCad Schematic
+ext	.sch	KiCad Schematic	data	#2f4aab	KiCad Schematic
+lang	KiCad Schematic	KiCad Schematic	data	#2f4aab	KiCad Schematic
+ext	.ks	Kickstart	data		Kickstart
+lang	Kickstart	Kickstart	data		Kickstart
+ext	.kit	Kit	markup		Kit
+lang	Kit	Kit	markup		Kit
+ext	.ash	KoLmafia ASH	programming	#B9D9B9	KoLmafia ASH
+lang	KoLmafia ASH	KoLmafia ASH	programming	#B9D9B9	KoLmafia ASH
+ext	.kk	Koka	programming		Koka
+interpreter	koka	Koka	programming		Koka
+lang	Koka	Koka	programming	#215166	Koka
+ext	.kt	Kotlin	programming	#A97BFF	Kotlin
+ext	.ktm	Kotlin	programming	#A97BFF	Kotlin
+ext	.kts	Kotlin	programming	#A97BFF	Kotlin
+lang	Kotlin	Kotlin	programming	#A97BFF	Kotlin
+ext	.csl	Kusto	data		Kusto
+ext	.kql	Kusto	data		Kusto
+lang	Kusto	Kusto	data		Kusto
+ext	.lfe	LFE	programming	#4C3023	LFE
+lang	LFE	LFE	programming	#4C3023	LFE
+ext	.ll	LLVM	programming		LLVM
+lang	LLVM	LLVM	programming	#185619	LLVM
+ext	.lol	LOLCODE	programming		LOLCODE
+lang	LOLCODE	LOLCODE	programming	#cc9900	LOLCODE
+ext	.lsl	LSL	programming		LSL
+ext	.lslp	LSL	programming		LSL
+interpreter	lsl	LSL	programming		LSL
+lang	LSL	LSL	programming	#3d9970	LSL
+ext	.asy	LTspice Symbol	data		LTspice Symbol
+lang	LTspice Symbol	LTspice Symbol	data		LTspice Symbol
+ext	.lvproj	LabVIEW	programming	#fede06	LabVIEW
+ext	.lvclass	LabVIEW	programming	#fede06	LabVIEW
+ext	.lvlib	LabVIEW	programming	#fede06	LabVIEW
+lang	LabVIEW	LabVIEW	programming	#fede06	LabVIEW
+ext	.lp	Lambdapi	programming	#8027a3	Lambdapi
+lang	Lambdapi	Lambdapi	programming	#8027a3	Lambdapi
+ext	.langium	Langium	programming	#2c8c87	Langium
+lang	Langium	Langium	programming	#2c8c87	Langium
+ext	.lark	Lark	data	#2980B9	Lark
+lang	Lark	Lark	data	#2980B9	Lark
+ext	.lasso	Lasso	programming	#999999	Lasso
+ext	.las	Lasso	programming	#999999	Lasso
+ext	.lasso8	Lasso	programming	#999999	Lasso
+ext	.lasso9	Lasso	programming	#999999	Lasso
+lang	Lasso	Lasso	programming	#999999	Lasso
+ext	.latte	Latte	markup	#f2a542	Latte
+lang	Latte	Latte	markup	#f2a542	Latte
+ext	.lean	Lean	programming		Lean
+ext	.hlean	Lean	programming		Lean
+lang	Lean	Lean	programming		Lean
+ext	.lean	Lean 4	programming		Lean
+lang	Lean 4	Lean 4	programming		Lean
+ext	.leo	Leo	programming	#C4FFC2	Leo
+lang	Leo	Leo	programming	#C4FFC2	Leo
+ext	.less	Less	markup	#1d365d	Less
+lang	Less	Less	markup	#1d365d	Less
+ext	.l	Lex	programming	#DBCA00	Lex
+ext	.lex	Lex	programming	#DBCA00	Lex
+filename	Lexer.x	Lex	programming	#DBCA00	Lex
+filename	lexer.x	Lex	programming	#DBCA00	Lex
+lang	Lex	Lex	programming	#DBCA00	Lex
+ext	.ligo	LigoLANG	programming	#0e74ff	LigoLANG
+lang	LigoLANG	LigoLANG	programming	#0e74ff	LigoLANG
+ext	.ly	LilyPond	programming	#9ccc7c	LilyPond
+ext	.ily	LilyPond	programming	#9ccc7c	LilyPond
+lang	LilyPond	LilyPond	programming	#9ccc7c	LilyPond
+ext	.b	Limbo	programming		Limbo
+ext	.m	Limbo	programming		Limbo
+lang	Limbo	Limbo	programming		Limbo
+ext	.lp	Linear Programming	programming		Linear Programming
+lang	Linear Programming	Linear Programming	programming		Linear Programming
+ext	.ld	Linker Script	programming		Linker Script
+ext	.lds	Linker Script	programming		Linker Script
+ext	.x	Linker Script	programming		Linker Script
+filename	ld.script	Linker Script	programming		Linker Script
+lang	Linker Script	Linker Script	programming		Linker Script
+ext	.mod	Linux Kernel Module	data		Linux Kernel Module
+lang	Linux Kernel Module	Linux Kernel Module	data		Linux Kernel Module
+ext	.liquid	Liquid	markup	#67b8de	Liquid
+lang	Liquid	Liquid	markup	#67b8de	Liquid
+ext	.liq	Liquidsoap	programming	#990066	Liquidsoap
+lang	Liquidsoap	Liquidsoap	programming	#990066	Liquidsoap
+ext	.lagda	Literate Agda	programming	#315665	Agda
+lang	Literate Agda	Literate Agda	programming	#315665	Agda
+ext	.litcoffee	Literate CoffeeScript	programming	#244776	CoffeeScript
+ext	.coffee.md	Literate CoffeeScript	programming	#244776	CoffeeScript
+lang	Literate CoffeeScript	Literate CoffeeScript	programming	#244776	CoffeeScript
+ext	.lhs	Literate Haskell	programming	#5e5086	Haskell
+lang	Literate Haskell	Literate Haskell	programming	#5e5086	Haskell
+ext	.livecodescript	LiveCode Script	programming	#0c5ba5	LiveCode Script
+lang	LiveCode Script	LiveCode Script	programming	#0c5ba5	LiveCode Script
+ext	.ls	LiveScript	programming	#499886	LiveScript
+ext	._ls	LiveScript	programming	#499886	LiveScript
+filename	Slakefile	LiveScript	programming	#499886	LiveScript
+lang	LiveScript	LiveScript	programming	#499886	LiveScript
+ext	.lobster	Lobster	programming	#f95428	Lobster
+lang	Lobster	Lobster	programming	#f95428	Lobster
+ext	.xm	Logos	programming		Logos
+ext	.x	Logos	programming		Logos
+ext	.xi	Logos	programming		Logos
+lang	Logos	Logos	programming		Logos
+ext	.lgt	Logtalk	programming	#295b9a	Logtalk
+ext	.logtalk	Logtalk	programming	#295b9a	Logtalk
+lang	Logtalk	Logtalk	programming	#295b9a	Logtalk
+ext	.lkml	LookML	programming	#652B81	LookML
+ext	.lookml	LookML	programming	#652B81	LookML
+lang	LookML	LookML	programming	#652B81	LookML
+ext	.ls	LoomScript	programming		LoomScript
+lang	LoomScript	LoomScript	programming		LoomScript
+ext	.lua	Lua	programming	#000080	Lua
+ext	.fcgi	Lua	programming	#000080	Lua
+ext	.nse	Lua	programming	#000080	Lua
+ext	.p8	Lua	programming	#000080	Lua
+ext	.pd_lua	Lua	programming	#000080	Lua
+ext	.rbxs	Lua	programming	#000080	Lua
+ext	.rockspec	Lua	programming	#000080	Lua
+ext	.wlua	Lua	programming	#000080	Lua
+filename	.luacheckrc	Lua	programming	#000080	Lua
+interpreter	lua	Lua	programming	#000080	Lua
+interpreter	luajit	Lua	programming	#000080	Lua
+lang	Lua	Lua	programming	#000080	Lua
+ext	.luau	Luau	programming	#00A2FF	Luau
+interpreter	luau	Luau	programming	#00A2FF	Luau
+lang	Luau	Luau	programming	#00A2FF	Luau
+ext	.mumps	M	programming		M
+ext	.m	M	programming		M
+lang	M	M	programming		M
+ext	.m3u	M3U	data		M3U
+ext	.m3u8	M3U	data		M3U
+lang	M3U	M3U	data	#179C7D	M3U
+ext	.m4	M4	programming		M4
+ext	.mc	M4	programming		M4
+lang	M4	M4	programming		M4
+ext	.m4	M4Sugar	programming		M4
+filename	configure.ac	M4Sugar	programming		M4
+lang	M4Sugar	M4Sugar	programming		M4
+ext	.matlab	MATLAB	programming	#e16737	MATLAB
+ext	.m	MATLAB	programming	#e16737	MATLAB
+lang	MATLAB	MATLAB	programming	#e16737	MATLAB
+ext	.ms	MAXScript	programming	#00a6a6	MAXScript
+ext	.mcr	MAXScript	programming	#00a6a6	MAXScript
+lang	MAXScript	MAXScript	programming	#00a6a6	MAXScript
+ext	.mdx	MDX	markup	#fcb32c	MDX
+lang	MDX	MDX	markup	#fcb32c	MDX
+ext	.mlir	MLIR	programming	#5EC8DB	MLIR
+lang	MLIR	MLIR	programming	#5EC8DB	MLIR
+ext	.mq4	MQL4	programming	#62A8D6	MQL4
+ext	.mqh	MQL4	programming	#62A8D6	MQL4
+lang	MQL4	MQL4	programming	#62A8D6	MQL4
+ext	.mq5	MQL5	programming	#4A76B8	MQL5
+ext	.mqh	MQL5	programming	#4A76B8	MQL5
+lang	MQL5	MQL5	programming	#4A76B8	MQL5
+ext	.mtml	MTML	markup	#b7e1f4	MTML
+lang	MTML	MTML	markup	#b7e1f4	MTML
+ext	.muf	MUF	programming		Forth
+ext	.m	MUF	programming		Forth
+lang	MUF	MUF	programming		Forth
+ext	.m2	Macaulay2	programming		Macaulay2
+interpreter	M2	Macaulay2	programming		Macaulay2
+lang	Macaulay2	Macaulay2	programming	#d8ffff	Macaulay2
+ext	.mak	Makefile	programming	#427819	Makefile
+ext	.d	Makefile	programming	#427819	Makefile
+ext	.make	Makefile	programming	#427819	Makefile
+ext	.makefile	Makefile	programming	#427819	Makefile
+ext	.mk	Makefile	programming	#427819	Makefile
+ext	.mkfile	Makefile	programming	#427819	Makefile
+filename	BSDmakefile	Makefile	programming	#427819	Makefile
+filename	GNUmakefile	Makefile	programming	#427819	Makefile
+filename	Kbuild	Makefile	programming	#427819	Makefile
+filename	Makefile	Makefile	programming	#427819	Makefile
+filename	Makefile.am	Makefile	programming	#427819	Makefile
+filename	Makefile.boot	Makefile	programming	#427819	Makefile
+filename	Makefile.frag	Makefile	programming	#427819	Makefile
+filename	Makefile.in	Makefile	programming	#427819	Makefile
+filename	Makefile.inc	Makefile	programming	#427819	Makefile
+filename	Makefile.pc	Makefile	programming	#427819	Makefile
+filename	Makefile.wat	Makefile	programming	#427819	Makefile
+filename	makefile	Makefile	programming	#427819	Makefile
+filename	makefile.sco	Makefile	programming	#427819	Makefile
+filename	mkfile	Makefile	programming	#427819	Makefile
+interpreter	make	Makefile	programming	#427819	Makefile
+lang	Makefile	Makefile	programming	#427819	Makefile
+ext	.mako	Mako	programming	#7e858d	Mako
+ext	.mao	Mako	programming	#7e858d	Mako
+lang	Mako	Mako	programming	#7e858d	Mako
+ext	.md	Markdown	prose	#083fa1	Markdown
+ext	.livemd	Markdown	prose	#083fa1	Markdown
+ext	.markdown	Markdown	prose	#083fa1	Markdown
+ext	.mdown	Markdown	prose	#083fa1	Markdown
+ext	.mdwn	Markdown	prose	#083fa1	Markdown
+ext	.mkd	Markdown	prose	#083fa1	Markdown
+ext	.mkdn	Markdown	prose	#083fa1	Markdown
+ext	.mkdown	Markdown	prose	#083fa1	Markdown
+ext	.ronn	Markdown	prose	#083fa1	Markdown
+ext	.scd	Markdown	prose	#083fa1	Markdown
+ext	.workbook	Markdown	prose	#083fa1	Markdown
+filename	contents.lr	Markdown	prose	#083fa1	Markdown
+lang	Markdown	Markdown	prose	#083fa1	Markdown
+ext	.marko	Marko	markup	#42bff2	Marko
+lang	Marko	Marko	markup	#42bff2	Marko
+ext	.mask	Mask	markup	#f97732	Mask
+lang	Mask	Mask	markup	#f97732	Mask
+ext	.mps	Mathematical Programming System	programming	#0530ad	Mathematical Programming System
+lang	Mathematical Programming System	Mathematical Programming System	programming	#0530ad	Mathematical Programming System
+filename	pom.xml	Maven POM	data		XML
+lang	Maven POM	Maven POM	data		XML
+ext	.maxpat	Max	programming	#c4a79c	Max
+ext	.maxhelp	Max	programming	#c4a79c	Max
+ext	.maxproj	Max	programming	#c4a79c	Max
+ext	.mxt	Max	programming	#c4a79c	Max
+ext	.pat	Max	programming	#c4a79c	Max
+lang	Max	Max	programming	#c4a79c	Max
+ext	.metta	MeTTa	programming	#6a5acd	MeTTa
+lang	MeTTa	MeTTa	programming	#6a5acd	MeTTa
+interpreter	mmi	Mercury	programming	#ff2b2b	Mercury
+ext	.m	Mercury	programming	#ff2b2b	Mercury
+ext	.moo	Mercury	programming	#ff2b2b	Mercury
+lang	Mercury	Mercury	programming	#ff2b2b	Mercury
+ext	.mmd	Mermaid	markup	#ff3670	Mermaid
+ext	.mermaid	Mermaid	markup	#ff3670	Mermaid
+lang	Mermaid	Mermaid	markup	#ff3670	Mermaid
+filename	meson.build	Meson	programming	#007800	Meson
+filename	meson_options.txt	Meson	programming	#007800	Meson
+lang	Meson	Meson	programming	#007800	Meson
+ext	.metal	Metal	programming	#8f14e9	Metal
+lang	Metal	Metal	programming	#8f14e9	Metal
+ext	.dsp	Microsoft Developer Studio Project	data		Microsoft Developer Studio Project
+lang	Microsoft Developer Studio Project	Microsoft Developer Studio Project	data		Microsoft Developer Studio Project
+ext	.sln	Microsoft Visual Studio Solution	data		Microsoft Visual Studio Solution
+lang	Microsoft Visual Studio Solution	Microsoft Visual Studio Solution	data		Microsoft Visual Studio Solution
+ext	.minid	MiniD	programming		MiniD
+lang	MiniD	MiniD	programming		MiniD
+ext	.ms	MiniScript	programming	#4B4A56	MiniScript
+lang	MiniScript	MiniScript	programming	#4B4A56	MiniScript
+ext	.yaml	MiniYAML	data	#ff1111	MiniYAML
+ext	.yml	MiniYAML	data	#ff1111	MiniYAML
+lang	MiniYAML	MiniYAML	data	#ff1111	MiniYAML
+ext	.mzn	MiniZinc	programming	#06a9e6	MiniZinc
+lang	MiniZinc	MiniZinc	programming	#06a9e6	MiniZinc
+ext	.dzn	MiniZinc Data	data		MiniZinc Data
+lang	MiniZinc Data	MiniZinc Data	data		MiniZinc Data
+ext	.mint	Mint	programming		Mint
+lang	Mint	Mint	programming	#02b046	Mint
+ext	.druby	Mirah	programming	#c7a938	Mirah
+ext	.duby	Mirah	programming	#c7a938	Mirah
+ext	.mirah	Mirah	programming	#c7a938	Mirah
+lang	Mirah	Mirah	programming	#c7a938	Mirah
+ext	.mo	Modelica	programming	#de1d31	Modelica
+lang	Modelica	Modelica	programming	#de1d31	Modelica
+ext	.mod	Modula-2	programming	#10253f	Modula-2
+lang	Modula-2	Modula-2	programming	#10253f	Modula-2
+ext	.i3	Modula-3	programming		Modula-3
+ext	.ig	Modula-3	programming		Modula-3
+ext	.m3	Modula-3	programming		Modula-3
+ext	.mg	Modula-3	programming		Modula-3
+lang	Modula-3	Modula-3	programming	#223388	Modula-3
+ext	.mms	Module Management System	programming		Module Management System
+ext	.mmk	Module Management System	programming		Module Management System
+filename	descrip.mmk	Module Management System	programming		Module Management System
+filename	descrip.mms	Module Management System	programming		Module Management System
+lang	Module Management System	Module Management System	programming		Module Management System
+ext	.mojo	Mojo	programming	#ff4c1f	Mojo
+lang	Mojo	Mojo	programming	#ff4c1f	Mojo
+ext	.monkey	Monkey	programming		Monkey
+ext	.monkey2	Monkey	programming		Monkey
+lang	Monkey	Monkey	programming		Monkey
+ext	.mc	Monkey C	programming	#8D6747	Monkey C
+lang	Monkey C	Monkey C	programming	#8D6747	Monkey C
+ext	.moo	Moocode	programming		Moocode
+lang	Moocode	Moocode	programming		Moocode
+ext	.mbt	MoonBit	programming	#b92381	MoonBit
+lang	MoonBit	MoonBit	programming	#b92381	MoonBit
+ext	.moon	MoonScript	programming	#ff4585	MoonScript
+interpreter	moon	MoonScript	programming	#ff4585	MoonScript
+lang	MoonScript	MoonScript	programming	#ff4585	MoonScript
+ext	.mo	Motoko	programming	#fbb03b	Motoko
+lang	Motoko	Motoko	programming	#fbb03b	Motoko
+ext	.asm	Motorola 68K Assembly	programming	#005daa	Assembly
+ext	.i	Motorola 68K Assembly	programming	#005daa	Assembly
+ext	.inc	Motorola 68K Assembly	programming	#005daa	Assembly
+ext	.s	Motorola 68K Assembly	programming	#005daa	Assembly
+ext	.x68	Motorola 68K Assembly	programming	#005daa	Assembly
+lang	Motorola 68K Assembly	Motorola 68K Assembly	programming	#005daa	Assembly
+ext	.move	Move	programming	#4a137a	Move
+lang	Move	Move	programming	#4a137a	Move
+ext	.muse	Muse	prose		Muse
+lang	Muse	Muse	prose		Muse
+ext	.mustache	Mustache	markup	#724b3b	Mustache
+lang	Mustache	Mustache	markup	#724b3b	Mustache
+ext	.myt	Myghty	programming		Myghty
+lang	Myghty	Myghty	programming		Myghty
+ext	.nasl	NASL	programming		NASL
+ext	.inc	NASL	programming		NASL
+lang	NASL	NASL	programming		NASL
+ext	.ncl	NCL	programming	#28431f	NCL
+lang	NCL	NCL	programming	#28431f	NCL
+ext	.neon	NEON	data		NEON
+lang	NEON	NEON	data		NEON
+ext	.nl	NL	data		NL
+lang	NL	NL	data		NL
+ext	.mod	NMODL	programming	#00356B	NMODL
+lang	NMODL	NMODL	programming	#00356B	NMODL
+filename	.npmrc	NPM Config	data	#cb3837	INI
+lang	NPM Config	NPM Config	data	#cb3837	INI
+ext	.nsi	NSIS	programming		NSIS
+ext	.nsh	NSIS	programming		NSIS
+lang	NSIS	NSIS	programming		NSIS
+ext	.nss	NWScript	programming	#111522	NWScript
+lang	NWScript	NWScript	programming	#111522	NWScript
+ext	.nas	Nasal	programming	#1d2c4e	Nasal
+lang	Nasal	Nasal	programming	#1d2c4e	Nasal
+ext	.ne	Nearley	programming	#990000	Nearley
+ext	.nearley	Nearley	programming	#990000	Nearley
+lang	Nearley	Nearley	programming	#990000	Nearley
+ext	.n	Nemerle	programming	#3d3c6e	Nemerle
+lang	Nemerle	Nemerle	programming	#3d3c6e	Nemerle
+ext	.axs	NetLinx	programming	#0aa0ff	NetLinx
+ext	.axi	NetLinx	programming	#0aa0ff	NetLinx
+lang	NetLinx	NetLinx	programming	#0aa0ff	NetLinx
+ext	.axs.erb	NetLinx+ERB	programming	#747faa	NetLinx+ERB
+ext	.axi.erb	NetLinx+ERB	programming	#747faa	NetLinx+ERB
+lang	NetLinx+ERB	NetLinx+ERB	programming	#747faa	NetLinx+ERB
+ext	.nlogo	NetLogo	programming	#ff6375	NetLogo
+lang	NetLogo	NetLogo	programming	#ff6375	NetLogo
+ext	.nl	NewLisp	programming	#87AED7	NewLisp
+ext	.lisp	NewLisp	programming	#87AED7	NewLisp
+ext	.lsp	NewLisp	programming	#87AED7	NewLisp
+interpreter	newlisp	NewLisp	programming	#87AED7	NewLisp
+lang	NewLisp	NewLisp	programming	#87AED7	NewLisp
+ext	.nf	Nextflow	programming	#3ac486	Nextflow
+filename	nextflow.config	Nextflow	programming	#3ac486	Nextflow
+interpreter	nextflow	Nextflow	programming	#3ac486	Nextflow
+lang	Nextflow	Nextflow	programming	#3ac486	Nextflow
+ext	.nginx	Nginx	data	#009639	Nginx
+ext	.nginxconf	Nginx	data	#009639	Nginx
+ext	.vhost	Nginx	data	#009639	Nginx
+filename	nginx.conf	Nginx	data	#009639	Nginx
+lang	Nginx	Nginx	data	#009639	Nginx
+ext	.ncl	Nickel	programming	#E0C3FC	Nickel
+lang	Nickel	Nickel	programming	#E0C3FC	Nickel
+ext	.nim	Nim	programming	#ffc200	Nim
+ext	.nim.cfg	Nim	programming	#ffc200	Nim
+ext	.nimble	Nim	programming	#ffc200	Nim
+ext	.nimrod	Nim	programming	#ffc200	Nim
+ext	.nims	Nim	programming	#ffc200	Nim
+filename	nim.cfg	Nim	programming	#ffc200	Nim
+lang	Nim	Nim	programming	#ffc200	Nim
+ext	.ninja	Ninja	data		Ninja
+lang	Ninja	Ninja	data		Ninja
+ext	.nit	Nit	programming	#009917	Nit
+lang	Nit	Nit	programming	#009917	Nit
+ext	.nix	Nix	programming	#7e7eff	Nix
+lang	Nix	Nix	programming	#7e7eff	Nix
+ext	.nr	Noir	programming		Noir
+lang	Noir	Noir	programming	#2f1f49	Noir
+ext	.nu	Nu	programming	#c9df40	Nu
+filename	Nukefile	Nu	programming	#c9df40	Nu
+interpreter	nush	Nu	programming	#c9df40	Nu
+lang	Nu	Nu	programming	#c9df40	Nu
+ext	.numpy	NumPy	programming	#9C8AF9	Python
+ext	.numpyw	NumPy	programming	#9C8AF9	Python
+ext	.numsc	NumPy	programming	#9C8AF9	Python
+lang	NumPy	NumPy	programming	#9C8AF9	Python
+ext	.njk	Nunjucks	markup	#3d8137	Nunjucks
+lang	Nunjucks	Nunjucks	markup	#3d8137	Nunjucks
+ext	.nu	Nushell	programming	#4E9906	Nushell
+interpreter	nu	Nushell	programming	#4E9906	Nushell
+lang	Nushell	Nushell	programming	#4E9906	Nushell
+ext	.json	OASv2-json	data	#85ea2d	OASv2-json
+lang	OASv2-json	OASv2-json	data	#85ea2d	OpenAPI Specification v2
+ext	.yaml	OASv2-yaml	data	#85ea2d	OASv2-yaml
+ext	.yml	OASv2-yaml	data	#85ea2d	OASv2-yaml
+lang	OASv2-yaml	OASv2-yaml	data	#85ea2d	OpenAPI Specification v2
+ext	.json	OASv3-json	data	#85ea2d	OASv3-json
+lang	OASv3-json	OASv3-json	data	#85ea2d	OpenAPI Specification v3
+ext	.yaml	OASv3-yaml	data	#85ea2d	OASv3-yaml
+ext	.yml	OASv3-yaml	data	#85ea2d	OASv3-yaml
+lang	OASv3-yaml	OASv3-yaml	data	#85ea2d	OpenAPI Specification v3
+ext	.ml	OCaml	programming	#ef7a08	OCaml
+ext	.eliom	OCaml	programming	#ef7a08	OCaml
+ext	.eliomi	OCaml	programming	#ef7a08	OCaml
+ext	.ml4	OCaml	programming	#ef7a08	OCaml
+ext	.mli	OCaml	programming	#ef7a08	OCaml
+ext	.mll	OCaml	programming	#ef7a08	OCaml
+ext	.mly	OCaml	programming	#ef7a08	OCaml
+interpreter	ocaml	OCaml	programming	#ef7a08	OCaml
+interpreter	ocamlrun	OCaml	programming	#ef7a08	OCaml
+interpreter	ocamlscript	OCaml	programming	#ef7a08	OCaml
+lang	OCaml	OCaml	programming	#ef7a08	OCaml
+ext	.msg	OMNeT++ MSG	programming		OMNeT++ MSG
+lang	OMNeT++ MSG	OMNeT++ MSG	programming	#a0e0a0	OMNeT++ MSG
+ext	.ned	OMNeT++ NED	programming		OMNeT++ NED
+lang	OMNeT++ NED	OMNeT++ NED	programming	#08607c	OMNeT++ NED
+ext	.ob2	Oberon	programming		Oberon
+lang	Oberon	Oberon	programming		Oberon
+ext	.objdump	ObjDump	data		ObjDump
+lang	ObjDump	ObjDump	data		ObjDump
+ext	.odin	Object Data Instance Notation	data		Object Data Instance Notation
+lang	Object Data Instance Notation	Object Data Instance Notation	data		Object Data Instance Notation
+ext	.cls	ObjectScript	programming		ObjectScript
+lang	ObjectScript	ObjectScript	programming	#424893	ObjectScript
+ext	.m	Objective-C	programming	#438eff	Objective-C
+ext	.h	Objective-C	programming	#438eff	Objective-C
+lang	Objective-C	Objective-C	programming	#438eff	Objective-C
+ext	.mm	Objective-C++	programming	#6866fb	Objective-C++
+lang	Objective-C++	Objective-C++	programming	#6866fb	Objective-C++
+ext	.j	Objective-J	programming	#ff0c5a	Objective-J
+ext	.sj	Objective-J	programming	#ff0c5a	Objective-J
+lang	Objective-J	Objective-J	programming	#ff0c5a	Objective-J
+ext	.odin	Odin	programming	#60AFFE	Odin
+lang	Odin	Odin	programming	#60AFFE	Odin
+ext	.omgrofl	Omgrofl	programming		Omgrofl
+lang	Omgrofl	Omgrofl	programming	#cabbff	Omgrofl
+ext	.opa	Opa	programming		Opa
+lang	Opa	Opa	programming		Opa
+ext	.opal	Opal	programming	#f7ede0	Opal
+lang	Opal	Opal	programming	#f7ede0	Opal
+ext	.rego	Open Policy Agent	programming	#7d9199	Open Policy Agent
+lang	Open Policy Agent	Open Policy Agent	programming	#7d9199	Open Policy Agent
+lang	OpenAPI Specification v2	OpenAPI Specification v2	data	#85ea2d	OpenAPI Specification v2
+lang	OpenAPI Specification v3	OpenAPI Specification v3	data	#85ea2d	OpenAPI Specification v3
+ext	.cl	OpenCL	programming	#ed2e2d	C
+ext	.opencl	OpenCL	programming	#ed2e2d	C
+lang	OpenCL	OpenCL	programming	#ed2e2d	C
+ext	.p	OpenEdge ABL	programming	#5ce600	OpenEdge ABL
+ext	.cls	OpenEdge ABL	programming	#5ce600	OpenEdge ABL
+ext	.w	OpenEdge ABL	programming	#5ce600	OpenEdge ABL
+lang	OpenEdge ABL	OpenEdge ABL	programming	#5ce600	OpenEdge ABL
+ext	.qasm	OpenQASM	programming		OpenQASM
+lang	OpenQASM	OpenQASM	programming	#AA70FF	OpenQASM
+interpreter	openrc-run	OpenRC runscript	programming		Shell
+lang	OpenRC runscript	OpenRC runscript	programming		Shell
+ext	.scad	OpenSCAD	programming	#e5cd45	OpenSCAD
+lang	OpenSCAD	OpenSCAD	programming	#e5cd45	OpenSCAD
+ext	.plist	OpenStep Property List	data		OpenStep Property List
+ext	.glyphs	OpenStep Property List	data		OpenStep Property List
+lang	OpenStep Property List	OpenStep Property List	data		OpenStep Property List
+ext	.fea	OpenType Feature File	data		OpenType Feature File
+lang	OpenType Feature File	OpenType Feature File	data		OpenType Feature File
+filename	.ackrc	Option List	data	#476732	Option List
+filename	.rspec	Option List	data	#476732	Option List
+filename	.yardopts	Option List	data	#476732	Option List
+filename	ackrc	Option List	data	#476732	Option List
+filename	mocha.opts	Option List	data	#476732	Option List
+lang	Option List	Option List	data	#476732	Option List
+ext	.org	Org	prose	#77aa99	Org
+lang	Org	Org	prose	#77aa99	Org
+ext	.opy	OverPy	programming	#78b355	OverPy
+lang	OverPy	OverPy	programming	#78b355	OverPy
+ext	.overpassql	OverpassQL	programming	#cce2aa	OverpassQL
+lang	OverpassQL	OverpassQL	programming	#cce2aa	OverpassQL
+ext	.ox	Ox	programming		Ox
+ext	.oxh	Ox	programming		Ox
+ext	.oxo	Ox	programming		Ox
+lang	Ox	Ox	programming		Ox
+ext	.oxygene	Oxygene	programming	#cdd0e3	Oxygene
+lang	Oxygene	Oxygene	programming	#cdd0e3	Oxygene
+ext	.oz	Oz	programming	#fab738	Oz
+lang	Oz	Oz	programming	#fab738	Oz
+ext	.p4	P4	programming	#7055b5	P4
+lang	P4	P4	programming	#7055b5	P4
+ext	.pddl	PDDL	programming	#0d00ff	PDDL
+lang	PDDL	PDDL	programming	#0d00ff	PDDL
+ext	.pegjs	PEG.js	programming	#234d6b	PEG.js
+ext	.peggy	PEG.js	programming	#234d6b	PEG.js
+lang	PEG.js	PEG.js	programming	#234d6b	PEG.js
+ext	.php	PHP	programming	#4F5D95	PHP
+ext	.aw	PHP	programming	#4F5D95	PHP
+ext	.ctp	PHP	programming	#4F5D95	PHP
+ext	.fcgi	PHP	programming	#4F5D95	PHP
+ext	.inc	PHP	programming	#4F5D95	PHP
+ext	.php3	PHP	programming	#4F5D95	PHP
+ext	.php4	PHP	programming	#4F5D95	PHP
+ext	.php5	PHP	programming	#4F5D95	PHP
+ext	.phps	PHP	programming	#4F5D95	PHP
+ext	.phpt	PHP	programming	#4F5D95	PHP
+filename	.php	PHP	programming	#4F5D95	PHP
+filename	.php_cs	PHP	programming	#4F5D95	PHP
+filename	.php_cs.dist	PHP	programming	#4F5D95	PHP
+filename	Phakefile	PHP	programming	#4F5D95	PHP
+interpreter	php	PHP	programming	#4F5D95	PHP
+lang	PHP	PHP	programming	#4F5D95	PHP
+ext	.pls	PLSQL	programming	#dad8d8	PLSQL
+ext	.bdy	PLSQL	programming	#dad8d8	PLSQL
+ext	.ddl	PLSQL	programming	#dad8d8	PLSQL
+ext	.fnc	PLSQL	programming	#dad8d8	PLSQL
+ext	.pck	PLSQL	programming	#dad8d8	PLSQL
+ext	.pkb	PLSQL	programming	#dad8d8	PLSQL
+ext	.pks	PLSQL	programming	#dad8d8	PLSQL
+ext	.plb	PLSQL	programming	#dad8d8	PLSQL
+ext	.plsql	PLSQL	programming	#dad8d8	PLSQL
+ext	.prc	PLSQL	programming	#dad8d8	PLSQL
+ext	.spc	PLSQL	programming	#dad8d8	PLSQL
+ext	.sql	PLSQL	programming	#dad8d8	PLSQL
+ext	.tpb	PLSQL	programming	#dad8d8	PLSQL
+ext	.tps	PLSQL	programming	#dad8d8	PLSQL
+ext	.trg	PLSQL	programming	#dad8d8	PLSQL
+ext	.vw	PLSQL	programming	#dad8d8	PLSQL
+lang	PLSQL	PLSQL	programming	#dad8d8	PLSQL
+ext	.pgsql	PLpgSQL	programming	#336790	PLpgSQL
+ext	.sql	PLpgSQL	programming	#336790	PLpgSQL
+lang	PLpgSQL	PLpgSQL	programming	#336790	PLpgSQL
+ext	.pov	POV-Ray SDL	programming	#6bac65	POV-Ray SDL
+ext	.inc	POV-Ray SDL	programming	#6bac65	POV-Ray SDL
+lang	POV-Ray SDL	POV-Ray SDL	programming	#6bac65	POV-Ray SDL
+ext	.pact	Pact	programming	#F7A8B8	Pact
+lang	Pact	Pact	programming	#F7A8B8	Pact
+ext	.pan	Pan	programming	#cc0000	Pan
+lang	Pan	Pan	programming	#cc0000	Pan
+ext	.psc	Papyrus	programming	#6600cc	Papyrus
+lang	Papyrus	Papyrus	programming	#6600cc	Papyrus
+ext	.parrot	Parrot	programming	#f3ca0a	Parrot
+lang	Parrot	Parrot	programming	#f3ca0a	Parrot
+ext	.pasm	Parrot Assembly	programming		Parrot
+interpreter	parrot	Parrot Assembly	programming		Parrot
+lang	Parrot Assembly	Parrot Assembly	programming		Parrot
+ext	.pir	Parrot Internal Representation	programming		Parrot
+interpreter	parrot	Parrot Internal Representation	programming		Parrot
+lang	Parrot Internal Representation	Parrot Internal Representation	programming		Parrot
+ext	.pas	Pascal	programming	#E3F171	Pascal
+ext	.dfm	Pascal	programming	#E3F171	Pascal
+ext	.dpr	Pascal	programming	#E3F171	Pascal
+ext	.inc	Pascal	programming	#E3F171	Pascal
+ext	.lpr	Pascal	programming	#E3F171	Pascal
+ext	.pascal	Pascal	programming	#E3F171	Pascal
+ext	.pp	Pascal	programming	#E3F171	Pascal
+interpreter	instantfpc	Pascal	programming	#E3F171	Pascal
+lang	Pascal	Pascal	programming	#E3F171	Pascal
+ext	.pwn	Pawn	programming	#dbb284	Pawn
+ext	.inc	Pawn	programming	#dbb284	Pawn
+ext	.sma	Pawn	programming	#dbb284	Pawn
+lang	Pawn	Pawn	programming	#dbb284	Pawn
+ext	.pep	Pep8	programming	#C76F5B	Pep8
+lang	Pep8	Pep8	programming	#C76F5B	Pep8
+ext	.pl	Perl	programming	#0298c3	Perl
+ext	.al	Perl	programming	#0298c3	Perl
+ext	.cgi	Perl	programming	#0298c3	Perl
+ext	.fcgi	Perl	programming	#0298c3	Perl
+ext	.perl	Perl	programming	#0298c3	Perl
+ext	.ph	Perl	programming	#0298c3	Perl
+ext	.plx	Perl	programming	#0298c3	Perl
+ext	.pm	Perl	programming	#0298c3	Perl
+ext	.psgi	Perl	programming	#0298c3	Perl
+ext	.t	Perl	programming	#0298c3	Perl
+filename	.latexmkrc	Perl	programming	#0298c3	Perl
+filename	Makefile.PL	Perl	programming	#0298c3	Perl
+filename	Rexfile	Perl	programming	#0298c3	Perl
+filename	ack	Perl	programming	#0298c3	Perl
+filename	cpanfile	Perl	programming	#0298c3	Perl
+filename	latexmkrc	Perl	programming	#0298c3	Perl
+interpreter	cperl	Perl	programming	#0298c3	Perl
+interpreter	perl	Perl	programming	#0298c3	Perl
+lang	Perl	Perl	programming	#0298c3	Perl
+ext	.pic	Pic	markup		Roff
+ext	.chem	Pic	markup		Roff
+lang	Pic	Pic	markup		Roff
+ext	.pkl	Pickle	data		Pickle
+lang	Pickle	Pickle	data		Pickle
+ext	.l	PicoLisp	programming	#6067af	PicoLisp
+interpreter	picolisp	PicoLisp	programming	#6067af	PicoLisp
+interpreter	pil	PicoLisp	programming	#6067af	PicoLisp
+lang	PicoLisp	PicoLisp	programming	#6067af	PicoLisp
+ext	.pig	PigLatin	programming	#fcd7de	PigLatin
+lang	PigLatin	PigLatin	programming	#fcd7de	PigLatin
+ext	.pike	Pike	programming	#005390	Pike
+ext	.pmod	Pike	programming	#005390	Pike
+interpreter	pike	Pike	programming	#005390	Pike
+lang	Pike	Pike	programming	#005390	Pike
+filename	dev-requirements.txt	Pip Requirements	data	#FFD343	Pip Requirements
+filename	requirements-dev.txt	Pip Requirements	data	#FFD343	Pip Requirements
+filename	requirements.lock.txt	Pip Requirements	data	#FFD343	Pip Requirements
+filename	requirements.txt	Pip Requirements	data	#FFD343	Pip Requirements
+lang	Pip Requirements	Pip Requirements	data	#FFD343	Pip Requirements
+ext	.pkl	Pkl	programming	#6b9543	Pkl
+interpreter	pkl	Pkl	programming	#6b9543	Pkl
+lang	Pkl	Pkl	programming	#6b9543	Pkl
+ext	.puml	PlantUML	data	#fbbd16	PlantUML
+ext	.iuml	PlantUML	data	#fbbd16	PlantUML
+ext	.plantuml	PlantUML	data	#fbbd16	PlantUML
+lang	PlantUML	PlantUML	data	#fbbd16	PlantUML
+ext	.pod	Pod	prose		Pod
+interpreter	perl	Pod	prose		Pod
+lang	Pod	Pod	prose		Pod
+ext	.pod	Pod 6	prose		Pod 6
+ext	.pod6	Pod 6	prose		Pod 6
+interpreter	perl6	Pod 6	prose		Pod 6
+lang	Pod 6	Pod 6	prose		Pod 6
+ext	.pogo	PogoScript	programming	#d80074	PogoScript
+lang	PogoScript	PogoScript	programming	#d80074	PogoScript
+ext	.polar	Polar	programming	#ae81ff	Polar
+lang	Polar	Polar	programming	#ae81ff	Polar
+ext	.pony	Pony	programming		Pony
+lang	Pony	Pony	programming		Pony
+ext	.por	Portugol	programming	#f8bd00	Portugol
+lang	Portugol	Portugol	programming	#f8bd00	Portugol
+ext	.pcss	PostCSS	markup	#dc3a0c	CSS
+ext	.postcss	PostCSS	markup	#dc3a0c	CSS
+lang	PostCSS	PostCSS	markup	#dc3a0c	CSS
+ext	.ps	PostScript	markup	#da291c	PostScript
+ext	.eps	PostScript	markup	#da291c	PostScript
+ext	.epsi	PostScript	markup	#da291c	PostScript
+ext	.pfa	PostScript	markup	#da291c	PostScript
+lang	PostScript	PostScript	markup	#da291c	PostScript
+ext	.pq	Power Query	programming		Power Query
+lang	Power Query	Power Query	programming	#d38e0d	Power Query
+ext	.pbt	PowerBuilder	programming	#8f0f8d	PowerBuilder
+ext	.sra	PowerBuilder	programming	#8f0f8d	PowerBuilder
+ext	.sru	PowerBuilder	programming	#8f0f8d	PowerBuilder
+ext	.srw	PowerBuilder	programming	#8f0f8d	PowerBuilder
+lang	PowerBuilder	PowerBuilder	programming	#8f0f8d	PowerBuilder
+ext	.ps1	PowerShell	programming	#012456	PowerShell
+ext	.psd1	PowerShell	programming	#012456	PowerShell
+ext	.psm1	PowerShell	programming	#012456	PowerShell
+interpreter	pwsh	PowerShell	programming	#012456	PowerShell
+lang	PowerShell	PowerShell	programming	#012456	PowerShell
+ext	.praat	Praat	programming	#c8506d	Praat
+lang	Praat	Praat	programming	#c8506d	Praat
+ext	.prisma	Prisma	data	#0c344b	Prisma
+lang	Prisma	Prisma	data	#0c344b	Prisma
+ext	.pc	Pro*C	programming	#bb8368	Pro*C
+lang	Pro*C	Pro*C	programming	#bb8368	Pro*C
+ext	.pde	Processing	programming	#0096D8	Processing
+lang	Processing	Processing	programming	#0096D8	Processing
+filename	Procfile	Procfile	programming	#3B2F63	Procfile
+lang	Procfile	Procfile	programming	#3B2F63	Procfile
+ext	.pro	Proguard	data		Proguard
+lang	Proguard	Proguard	data		Proguard
+ext	.pl	Prolog	programming	#74283c	Prolog
+ext	.plt	Prolog	programming	#74283c	Prolog
+ext	.pro	Prolog	programming	#74283c	Prolog
+ext	.prolog	Prolog	programming	#74283c	Prolog
+ext	.yap	Prolog	programming	#74283c	Prolog
+interpreter	swipl	Prolog	programming	#74283c	Prolog
+interpreter	yap	Prolog	programming	#74283c	Prolog
+lang	Prolog	Prolog	programming	#74283c	Prolog
+ext	.pml	Promela	programming	#de0000	Promela
+lang	Promela	Promela	programming	#de0000	Promela
+ext	.spin	Propeller Spin	programming	#7fa2a7	Propeller Spin
+lang	Propeller Spin	Propeller Spin	programming	#7fa2a7	Propeller Spin
+ext	.proto	Protocol Buffer	data		Protocol Buffer
+lang	Protocol Buffer	Protocol Buffer	data		Protocol Buffer
+ext	.textproto	Protocol Buffer Text Format	data		Protocol Buffer Text Format
+ext	.pbt	Protocol Buffer Text Format	data		Protocol Buffer Text Format
+ext	.pbtxt	Protocol Buffer Text Format	data		Protocol Buffer Text Format
+ext	.txtpb	Protocol Buffer Text Format	data		Protocol Buffer Text Format
+lang	Protocol Buffer Text Format	Protocol Buffer Text Format	data		Protocol Buffer Text Format
+ext	.asc	Public Key	data		Public Key
+ext	.pub	Public Key	data		Public Key
+lang	Public Key	Public Key	data		Public Key
+ext	.jade	Pug	markup	#a86454	Pug
+ext	.pug	Pug	markup	#a86454	Pug
+lang	Pug	Pug	markup	#a86454	Pug
+ext	.pp	Puppet	programming	#302B6D	Puppet
+filename	Modulefile	Puppet	programming	#302B6D	Puppet
+lang	Puppet	Puppet	programming	#302B6D	Puppet
+ext	.pd	Pure Data	data		Pure Data
+lang	Pure Data	Pure Data	data		Pure Data
+ext	.pb	PureBasic	programming	#5a6986	PureBasic
+ext	.pbi	PureBasic	programming	#5a6986	PureBasic
+lang	PureBasic	PureBasic	programming	#5a6986	PureBasic
+ext	.purs	PureScript	programming	#1D222D	PureScript
+lang	PureScript	PureScript	programming	#1D222D	PureScript
+ext	.arr	Pyret	programming	#ee1e10	Pyret
+lang	Pyret	Pyret	programming	#ee1e10	Pyret
+ext	.py	Python	programming	#3572A5	Python
+ext	.cgi	Python	programming	#3572A5	Python
+ext	.fcgi	Python	programming	#3572A5	Python
+ext	.gyp	Python	programming	#3572A5	Python
+ext	.gypi	Python	programming	#3572A5	Python
+ext	.lmi	Python	programming	#3572A5	Python
+ext	.py3	Python	programming	#3572A5	Python
+ext	.pyde	Python	programming	#3572A5	Python
+ext	.pyi	Python	programming	#3572A5	Python
+ext	.pyp	Python	programming	#3572A5	Python
+ext	.pyt	Python	programming	#3572A5	Python
+ext	.pyw	Python	programming	#3572A5	Python
+ext	.rpy	Python	programming	#3572A5	Python
+ext	.spec	Python	programming	#3572A5	Python
+ext	.tac	Python	programming	#3572A5	Python
+ext	.wsgi	Python	programming	#3572A5	Python
+ext	.xpy	Python	programming	#3572A5	Python
+filename	.gclient	Python	programming	#3572A5	Python
+filename	DEPS	Python	programming	#3572A5	Python
+filename	SConscript	Python	programming	#3572A5	Python
+filename	SConstruct	Python	programming	#3572A5	Python
+filename	wscript	Python	programming	#3572A5	Python
+interpreter	python	Python	programming	#3572A5	Python
+interpreter	python2	Python	programming	#3572A5	Python
+interpreter	python3	Python	programming	#3572A5	Python
+interpreter	py	Python	programming	#3572A5	Python
+interpreter	pypy	Python	programming	#3572A5	Python
+interpreter	pypy3	Python	programming	#3572A5	Python
+interpreter	uv	Python	programming	#3572A5	Python
+lang	Python	Python	programming	#3572A5	Python
+lang	Python console	Python console	programming	#3572A5	Python
+ext	.pytb	Python traceback	data	#3572A5	Python
+lang	Python traceback	Python traceback	data	#3572A5	Python
+ext	.qs	Q#	programming		Q#
+lang	Q#	Q#	programming	#fed659	Q#
+ext	.qml	QML	programming	#44a51c	QML
+ext	.qbs	QML	programming	#44a51c	QML
+lang	QML	QML	programming	#44a51c	QML
+ext	.pro	QMake	programming		QMake
+ext	.pri	QMake	programming		QMake
+interpreter	qmake	QMake	programming		QMake
+lang	QMake	QMake	programming		QMake
+ext	.qs	Qt Script	programming		Qt Script
+filename	installscript.qs	Qt Script	programming		Qt Script
+filename	toolchain_installscript.qs	Qt Script	programming		Qt Script
+lang	Qt Script	Qt Script	programming	#00b841	Qt Script
+filename	m3makefile	Quake	programming		Quake
+filename	m3overrides	Quake	programming		Quake
+lang	Quake	Quake	programming	#882233	Quake
+ext	.qc	QuakeC	programming		QuakeC
+lang	QuakeC	QuakeC	programming	#975777	QuakeC
+ext	.sip	Quartus Simulation IP	data	#58C42E	Quartus Simulation IP
+lang	Quartus Simulation IP	Quartus Simulation IP	data	#58C42E	Quartus Simulation IP
+ext	.bas	QuickBASIC	programming	#008080	QuickBASIC
+ext	.bi	QuickBASIC	programming	#008080	QuickBASIC
+lang	QuickBASIC	QuickBASIC	programming	#008080	QuickBASIC
+ext	.qnt	Quint	programming	#9d6ce5	Quint
+lang	Quint	Quint	programming	#9d6ce5	Quint
+ext	.r	R	programming	#198CE7	R
+ext	.rd	R	programming	#198CE7	R
+ext	.rhistory	R	programming	#198CE7	R
+ext	.rsx	R	programming	#198CE7	R
+filename	.Rapp.history	R	programming	#198CE7	R
+filename	.Rhistory	R	programming	#198CE7	R
+filename	.Rprofile	R	programming	#198CE7	R
+filename	expr-dist	R	programming	#198CE7	R
+interpreter	Rscript	R	programming	#198CE7	R
+lang	R	R	programming	#198CE7	R
+ext	.raml	RAML	markup	#77d9fb	RAML
+lang	RAML	RAML	markup	#77d9fb	RAML
+ext	.rascript	RAScript	programming		RAScript
+lang	RAScript	RAScript	programming	#2C97FA	RAScript
+ext	.rbs	RBS	data		RBS
+lang	RBS	RBS	data	#701516	Ruby
+ext	.rdoc	RDoc	prose	#701516	RDoc
+lang	RDoc	RDoc	prose	#701516	RDoc
+ext	.rbbas	REALbasic	programming		REALbasic
+ext	.rbfrm	REALbasic	programming		REALbasic
+ext	.rbmnu	REALbasic	programming		REALbasic
+ext	.rbres	REALbasic	programming		REALbasic
+ext	.rbtbar	REALbasic	programming		REALbasic
+ext	.rbuistate	REALbasic	programming		REALbasic
+lang	REALbasic	REALbasic	programming		REALbasic
+ext	.rexx	REXX	programming	#d90e09	REXX
+ext	.pprx	REXX	programming	#d90e09	REXX
+ext	.rex	REXX	programming	#d90e09	REXX
+interpreter	regina	REXX	programming	#d90e09	REXX
+interpreter	rexx	REXX	programming	#d90e09	REXX
+lang	REXX	REXX	programming	#d90e09	REXX
+ext	.qmd	RMarkdown	prose	#198ce7	RMarkdown
+ext	.rmd	RMarkdown	prose	#198ce7	RMarkdown
+lang	RMarkdown	RMarkdown	prose	#198ce7	RMarkdown
+ext	.ron	RON	data	#a62c00	RON
+lang	RON	RON	data	#a62c00	RON
+ext	.msg	ROS Interface	data	#22314e	ROS Interface
+ext	.action	ROS Interface	data	#22314e	ROS Interface
+ext	.srv	ROS Interface	data	#22314e	ROS Interface
+lang	ROS Interface	ROS Interface	data	#22314e	ROS Interface
+ext	.x	RPC	programming		RPC
+lang	RPC	RPC	programming		RPC
+ext	.rpgle	RPGLE	programming	#2BDE21	RPGLE
+ext	.sqlrpgle	RPGLE	programming	#2BDE21	RPGLE
+lang	RPGLE	RPGLE	programming	#2BDE21	RPGLE
+ext	.spec	RPM Spec	data		RPM Spec
+lang	RPM Spec	RPM Spec	data		RPM Spec
+ext	.rnh	RUNOFF	markup	#665a4e	RUNOFF
+ext	.rno	RUNOFF	markup	#665a4e	RUNOFF
+lang	RUNOFF	RUNOFF	markup	#665a4e	RUNOFF
+ext	.rkt	Racket	programming	#3c5caa	Racket
+ext	.rktd	Racket	programming	#3c5caa	Racket
+ext	.rktl	Racket	programming	#3c5caa	Racket
+ext	.scrbl	Racket	programming	#3c5caa	Racket
+interpreter	racket	Racket	programming	#3c5caa	Racket
+lang	Racket	Racket	programming	#3c5caa	Racket
+ext	.rl	Ragel	programming	#9d5200	Ragel
+lang	Ragel	Ragel	programming	#9d5200	Ragel
+ext	.6pl	Raku	programming	#0000fb	Raku
+ext	.6pm	Raku	programming	#0000fb	Raku
+ext	.nqp	Raku	programming	#0000fb	Raku
+ext	.p6	Raku	programming	#0000fb	Raku
+ext	.p6l	Raku	programming	#0000fb	Raku
+ext	.p6m	Raku	programming	#0000fb	Raku
+ext	.pl	Raku	programming	#0000fb	Raku
+ext	.pl6	Raku	programming	#0000fb	Raku
+ext	.pm	Raku	programming	#0000fb	Raku
+ext	.pm6	Raku	programming	#0000fb	Raku
+ext	.raku	Raku	programming	#0000fb	Raku
+ext	.rakumod	Raku	programming	#0000fb	Raku
+ext	.t	Raku	programming	#0000fb	Raku
+interpreter	perl6	Raku	programming	#0000fb	Raku
+interpreter	raku	Raku	programming	#0000fb	Raku
+interpreter	rakudo	Raku	programming	#0000fb	Raku
+lang	Raku	Raku	programming	#0000fb	Raku
+ext	.rsc	Rascal	programming	#fffaa0	Rascal
+lang	Rascal	Rascal	programming	#fffaa0	Rascal
+ext	.raw	Raw token data	data		Raw token data
+lang	Raw token data	Raw token data	data		Raw token data
+ext	.res	ReScript	programming	#ed5051	ReScript
+ext	.resi	ReScript	programming	#ed5051	ReScript
+interpreter	ocaml	ReScript	programming	#ed5051	ReScript
+lang	ReScript	ReScript	programming	#ed5051	ReScript
+filename	.inputrc	Readline Config	data		INI
+filename	inputrc	Readline Config	data		INI
+lang	Readline Config	Readline Config	data		INI
+ext	.re	Reason	programming	#ff5847	Reason
+ext	.rei	Reason	programming	#ff5847	Reason
+lang	Reason	Reason	programming	#ff5847	Reason
+ext	.religo	ReasonLIGO	programming	#ff5847	LigoLANG
+lang	ReasonLIGO	ReasonLIGO	programming	#ff5847	LigoLANG
+ext	.reb	Rebol	programming	#358a5b	Rebol
+ext	.r	Rebol	programming	#358a5b	Rebol
+ext	.r2	Rebol	programming	#358a5b	Rebol
+ext	.r3	Rebol	programming	#358a5b	Rebol
+ext	.rebol	Rebol	programming	#358a5b	Rebol
+lang	Rebol	Rebol	programming	#358a5b	Rebol
+filename	language-subtag-registry.txt	Record Jar	data		Record Jar
+lang	Record Jar	Record Jar	data	#0673ba	Record Jar
+ext	.red	Red	programming	#f50000	Red
+ext	.reds	Red	programming	#f50000	Red
+lang	Red	Red	programming	#f50000	Red
+ext	.cw	Redcode	programming		Redcode
+lang	Redcode	Redcode	programming		Redcode
+filename	_redirects	Redirect Rules	data		Redirect Rules
+lang	Redirect Rules	Redirect Rules	data		Redirect Rules
+ext	.reds	Redscript	programming	#f44336	Redscript
+lang	Redscript	Redscript	programming	#f44336	Redscript
+ext	.regexp	Regular Expression	data	#009a00	Regular Expression
+ext	.regex	Regular Expression	data	#009a00	Regular Expression
+lang	Regular Expression	Regular Expression	data	#009a00	Regular Expression
+ext	.rpy	Ren'Py	programming	#ff7f7f	Ren'Py
+lang	Ren'Py	Ren'Py	programming	#ff7f7f	Ren'Py
+ext	.rs	RenderScript	programming		RenderScript
+ext	.rsh	RenderScript	programming		RenderScript
+lang	RenderScript	RenderScript	programming		RenderScript
+ext	.r	Rez	programming		Rez
+lang	Rez	Rez	programming	#FFDAB3	Rez
+ext	.rhai	Rhai	programming	#FBA63B	Rhai
+lang	Rhai	Rhai	programming	#FBA63B	Rhai
+ext	.rtf	Rich Text Format	markup		Rich Text Format
+lang	Rich Text Format	Rich Text Format	markup		Rich Text Format
+ext	.ring	Ring	programming	#2D54CB	Ring
+lang	Ring	Ring	programming	#2D54CB	Ring
+ext	.riot	Riot	markup	#A71E49	Riot
+lang	Riot	Riot	markup	#A71E49	Riot
+ext	.robot	RobotFramework	programming	#00c0b5	RobotFramework
+ext	.resource	RobotFramework	programming	#00c0b5	RobotFramework
+lang	RobotFramework	RobotFramework	programming	#00c0b5	RobotFramework
+filename	robots.txt	Robots Exclusion Rules	data		Robots Exclusion Rules
+lang	Robots Exclusion Rules	Robots Exclusion Rules	data		Robots Exclusion Rules
+ext	.roc	Roc	programming	#7c38f5	Roc
+lang	Roc	Roc	programming	#7c38f5	Roc
+ext	.v	Rocq Prover	programming	#d0b68c	Rocq Prover
+ext	.coq	Rocq Prover	programming	#d0b68c	Rocq Prover
+lang	Rocq Prover	Rocq Prover	programming	#d0b68c	Rocq Prover
+ext	.roff	Roff	markup	#ecdebe	Roff
+ext	.1	Roff	markup	#ecdebe	Roff
+ext	.1in	Roff	markup	#ecdebe	Roff
+ext	.1m	Roff	markup	#ecdebe	Roff
+ext	.1x	Roff	markup	#ecdebe	Roff
+ext	.2	Roff	markup	#ecdebe	Roff
+ext	.3	Roff	markup	#ecdebe	Roff
+ext	.3in	Roff	markup	#ecdebe	Roff
+ext	.3m	Roff	markup	#ecdebe	Roff
+ext	.3p	Roff	markup	#ecdebe	Roff
+ext	.3pm	Roff	markup	#ecdebe	Roff
+ext	.3qt	Roff	markup	#ecdebe	Roff
+ext	.3x	Roff	markup	#ecdebe	Roff
+ext	.4	Roff	markup	#ecdebe	Roff
+ext	.5	Roff	markup	#ecdebe	Roff
+ext	.6	Roff	markup	#ecdebe	Roff
+ext	.7	Roff	markup	#ecdebe	Roff
+ext	.8	Roff	markup	#ecdebe	Roff
+ext	.9	Roff	markup	#ecdebe	Roff
+ext	.l	Roff	markup	#ecdebe	Roff
+ext	.man	Roff	markup	#ecdebe	Roff
+ext	.mdoc	Roff	markup	#ecdebe	Roff
+ext	.me	Roff	markup	#ecdebe	Roff
+ext	.ms	Roff	markup	#ecdebe	Roff
+ext	.n	Roff	markup	#ecdebe	Roff
+ext	.nr	Roff	markup	#ecdebe	Roff
+ext	.rno	Roff	markup	#ecdebe	Roff
+ext	.tmac	Roff	markup	#ecdebe	Roff
+filename	eqnrc	Roff	markup	#ecdebe	Roff
+filename	mmn	Roff	markup	#ecdebe	Roff
+filename	mmt	Roff	markup	#ecdebe	Roff
+filename	troffrc	Roff	markup	#ecdebe	Roff
+filename	troffrc-end	Roff	markup	#ecdebe	Roff
+lang	Roff	Roff	markup	#ecdebe	Roff
+ext	.1	Roff Manpage	markup	#ecdebe	Roff
+ext	.1in	Roff Manpage	markup	#ecdebe	Roff
+ext	.1m	Roff Manpage	markup	#ecdebe	Roff
+ext	.1x	Roff Manpage	markup	#ecdebe	Roff
+ext	.2	Roff Manpage	markup	#ecdebe	Roff
+ext	.3	Roff Manpage	markup	#ecdebe	Roff
+ext	.3in	Roff Manpage	markup	#ecdebe	Roff
+ext	.3m	Roff Manpage	markup	#ecdebe	Roff
+ext	.3p	Roff Manpage	markup	#ecdebe	Roff
+ext	.3pm	Roff Manpage	markup	#ecdebe	Roff
+ext	.3qt	Roff Manpage	markup	#ecdebe	Roff
+ext	.3x	Roff Manpage	markup	#ecdebe	Roff
+ext	.4	Roff Manpage	markup	#ecdebe	Roff
+ext	.5	Roff Manpage	markup	#ecdebe	Roff
+ext	.6	Roff Manpage	markup	#ecdebe	Roff
+ext	.7	Roff Manpage	markup	#ecdebe	Roff
+ext	.8	Roff Manpage	markup	#ecdebe	Roff
+ext	.9	Roff Manpage	markup	#ecdebe	Roff
+ext	.man	Roff Manpage	markup	#ecdebe	Roff
+ext	.mdoc	Roff Manpage	markup	#ecdebe	Roff
+lang	Roff Manpage	Roff Manpage	markup	#ecdebe	Roff
+ext	.rg	Rouge	programming	#cc0088	Rouge
+lang	Rouge	Rouge	programming	#cc0088	Rouge
+ext	.rsc	RouterOS Script	programming		RouterOS Script
+interpreter	RouterOS	RouterOS Script	programming		RouterOS Script
+lang	RouterOS Script	RouterOS Script	programming	#DE3941	RouterOS Script
+ext	.rb	Ruby	programming	#701516	Ruby
+ext	.builder	Ruby	programming	#701516	Ruby
+ext	.eye	Ruby	programming	#701516	Ruby
+ext	.fcgi	Ruby	programming	#701516	Ruby
+ext	.gemspec	Ruby	programming	#701516	Ruby
+ext	.god	Ruby	programming	#701516	Ruby
+ext	.jbuilder	Ruby	programming	#701516	Ruby
+ext	.mspec	Ruby	programming	#701516	Ruby
+ext	.pluginspec	Ruby	programming	#701516	Ruby
+ext	.podspec	Ruby	programming	#701516	Ruby
+ext	.prawn	Ruby	programming	#701516	Ruby
+ext	.rabl	Ruby	programming	#701516	Ruby
+ext	.rake	Ruby	programming	#701516	Ruby
+ext	.rbi	Ruby	programming	#701516	Ruby
+ext	.rbuild	Ruby	programming	#701516	Ruby
+ext	.rbw	Ruby	programming	#701516	Ruby
+ext	.rbx	Ruby	programming	#701516	Ruby
+ext	.ru	Ruby	programming	#701516	Ruby
+ext	.ruby	Ruby	programming	#701516	Ruby
+ext	.spec	Ruby	programming	#701516	Ruby
+ext	.thor	Ruby	programming	#701516	Ruby
+ext	.watchr	Ruby	programming	#701516	Ruby
+interpreter	ruby	Ruby	programming	#701516	Ruby
+interpreter	macruby	Ruby	programming	#701516	Ruby
+interpreter	rake	Ruby	programming	#701516	Ruby
+interpreter	jruby	Ruby	programming	#701516	Ruby
+interpreter	rbx	Ruby	programming	#701516	Ruby
+filename	.irbrc	Ruby	programming	#701516	Ruby
+filename	.pryrc	Ruby	programming	#701516	Ruby
+filename	.simplecov	Ruby	programming	#701516	Ruby
+filename	Appraisals	Ruby	programming	#701516	Ruby
+filename	Berksfile	Ruby	programming	#701516	Ruby
+filename	Brewfile	Ruby	programming	#701516	Ruby
+filename	Buildfile	Ruby	programming	#701516	Ruby
+filename	Capfile	Ruby	programming	#701516	Ruby
+filename	Dangerfile	Ruby	programming	#701516	Ruby
+filename	Deliverfile	Ruby	programming	#701516	Ruby
+filename	Fastfile	Ruby	programming	#701516	Ruby
+filename	Gemfile	Ruby	programming	#701516	Ruby
+filename	Guardfile	Ruby	programming	#701516	Ruby
+filename	Jarfile	Ruby	programming	#701516	Ruby
+filename	Mavenfile	Ruby	programming	#701516	Ruby
+filename	Podfile	Ruby	programming	#701516	Ruby
+filename	Puppetfile	Ruby	programming	#701516	Ruby
+filename	Rakefile	Ruby	programming	#701516	Ruby
+filename	Snapfile	Ruby	programming	#701516	Ruby
+filename	Steepfile	Ruby	programming	#701516	Ruby
+filename	Thorfile	Ruby	programming	#701516	Ruby
+filename	Vagrantfile	Ruby	programming	#701516	Ruby
+filename	buildfile	Ruby	programming	#701516	Ruby
+lang	Ruby	Ruby	programming	#701516	Ruby
+ext	.rs	Rust	programming	#dea584	Rust
+ext	.rs.in	Rust	programming	#dea584	Rust
+interpreter	rust-script	Rust	programming	#dea584	Rust
+lang	Rust	Rust	programming	#dea584	Rust
+ext	.sas	SAS	programming	#B34936	SAS
+lang	SAS	SAS	programming	#B34936	SAS
+ext	.scss	SCSS	markup	#c6538c	SCSS
+lang	SCSS	SCSS	markup	#c6538c	SCSS
+ext	.te	SELinux Policy	data		SELinux Policy
+filename	file_contexts	SELinux Policy	data		SELinux Policy
+filename	genfs_contexts	SELinux Policy	data		SELinux Policy
+filename	initial_sids	SELinux Policy	data		SELinux Policy
+filename	port_contexts	SELinux Policy	data		SELinux Policy
+filename	security_classes	SELinux Policy	data		SELinux Policy
+lang	SELinux Policy	SELinux Policy	data		SELinux Policy
+ext	.sip	SIP	programming	#4E8D83	SIP
+lang	SIP	SIP	programming	#4E8D83	SIP
+ext	.smt2	SMT	programming		SMT
+ext	.smt	SMT	programming		SMT
+ext	.z3	SMT	programming		SMT
+interpreter	boolector	SMT	programming		SMT
+interpreter	cvc4	SMT	programming		SMT
+interpreter	mathsat5	SMT	programming		SMT
+interpreter	opensmt	SMT	programming		SMT
+interpreter	smtinterpol	SMT	programming		SMT
+interpreter	smt-rat	SMT	programming		SMT
+interpreter	stp	SMT	programming		SMT
+interpreter	verit	SMT	programming		SMT
+interpreter	yices2	SMT	programming		SMT
+interpreter	z3	SMT	programming		SMT
+lang	SMT	SMT	programming		SMT
+ext	.sparql	SPARQL	data	#0C4597	SPARQL
+ext	.rq	SPARQL	data	#0C4597	SPARQL
+lang	SPARQL	SPARQL	data	#0C4597	SPARQL
+ext	.sqf	SQF	programming	#3F3F3F	SQF
+ext	.hqf	SQF	programming	#3F3F3F	SQF
+lang	SQF	SQF	programming	#3F3F3F	SQF
+ext	.sql	SQL	data	#e38c00	SQL
+ext	.ddl	SQL	data	#e38c00	SQL
+ext	.inc	SQL	data	#e38c00	SQL
+ext	.mysql	SQL	data	#e38c00	SQL
+ext	.prc	SQL	data	#e38c00	SQL
+ext	.tab	SQL	data	#e38c00	SQL
+ext	.udf	SQL	data	#e38c00	SQL
+ext	.viw	SQL	data	#e38c00	SQL
+lang	SQL	SQL	data	#e38c00	SQL
+ext	.sql	SQLPL	programming	#e38c00	SQLPL
+ext	.db2	SQLPL	programming	#e38c00	SQLPL
+lang	SQLPL	SQLPL	programming	#e38c00	SQLPL
+ext	.srt	SRecode Template	markup	#348a34	SRecode Template
+lang	SRecode Template	SRecode Template	markup	#348a34	SRecode Template
+filename	ssh-config	SSH Config	data		INI
+filename	ssh_config	SSH Config	data		INI
+filename	sshconfig	SSH Config	data		INI
+filename	sshconfig.snip	SSH Config	data		INI
+filename	sshd-config	SSH Config	data		INI
+filename	sshd_config	SSH Config	data		INI
+lang	SSH Config	SSH Config	data		INI
+ext	.star	STAR	data		STAR
+lang	STAR	STAR	data		STAR
+ext	.stl	STL	data	#373b5e	STL
+lang	STL	STL	data	#373b5e	STL
+ext	.ston	STON	data		Smalltalk
+lang	STON	STON	data		Smalltalk
+ext	.svg	SVG	data	#ff9900	SVG
+lang	SVG	SVG	data	#ff9900	SVG
+ext	.i	SWIG	programming		SWIG
+ext	.swg	SWIG	programming		SWIG
+ext	.swig	SWIG	programming		SWIG
+lang	SWIG	SWIG	programming		SWIG
+ext	.sage	Sage	programming		Sage
+ext	.sagews	Sage	programming		Sage
+lang	Sage	Sage	programming		Sage
+ext	.sail	Sail	programming	#259dd5	Sail
+lang	Sail	Sail	programming	#259dd5	Sail
+ext	.sls	Salt	programming	#57bcad	Salt
+lang	Salt	Salt	programming	#57bcad	Salt
+ext	.sass	Sass	markup	#a53b70	Sass
+lang	Sass	Sass	markup	#a53b70	Sass
+ext	.scala	Scala	programming	#c22d40	Scala
+ext	.kojo	Scala	programming	#c22d40	Scala
+ext	.sbt	Scala	programming	#c22d40	Scala
+ext	.sc	Scala	programming	#c22d40	Scala
+interpreter	scala	Scala	programming	#c22d40	Scala
+lang	Scala	Scala	programming	#c22d40	Scala
+ext	.scaml	Scaml	markup	#bd181a	Scaml
+lang	Scaml	Scaml	markup	#bd181a	Scaml
+ext	.scenic	Scenic	programming	#fdc700	Scenic
+interpreter	scenic	Scenic	programming	#fdc700	Scenic
+lang	Scenic	Scenic	programming	#fdc700	Scenic
+ext	.scm	Scheme	programming	#1e4aec	Scheme
+ext	.sch	Scheme	programming	#1e4aec	Scheme
+ext	.sld	Scheme	programming	#1e4aec	Scheme
+ext	.sls	Scheme	programming	#1e4aec	Scheme
+ext	.sps	Scheme	programming	#1e4aec	Scheme
+ext	.ss	Scheme	programming	#1e4aec	Scheme
+interpreter	scheme	Scheme	programming	#1e4aec	Scheme
+interpreter	guile	Scheme	programming	#1e4aec	Scheme
+interpreter	bigloo	Scheme	programming	#1e4aec	Scheme
+interpreter	chicken	Scheme	programming	#1e4aec	Scheme
+interpreter	csi	Scheme	programming	#1e4aec	Scheme
+interpreter	gosh	Scheme	programming	#1e4aec	Scheme
+interpreter	r6rs	Scheme	programming	#1e4aec	Scheme
+lang	Scheme	Scheme	programming	#1e4aec	Scheme
+ext	.sci	Scilab	programming	#ca0f21	Scilab
+ext	.sce	Scilab	programming	#ca0f21	Scilab
+ext	.tst	Scilab	programming	#ca0f21	Scilab
+lang	Scilab	Scilab	programming	#ca0f21	Scilab
+ext	.self	Self	programming	#0579aa	Self
+lang	Self	Self	programming	#0579aa	Self
+ext	.shader	ShaderLab	programming	#222c37	ShaderLab
+lang	ShaderLab	ShaderLab	programming	#222c37	ShaderLab
+ext	.sh	Shell	programming	#89e051	Shell
+ext	.bash	Shell	programming	#89e051	Shell
+ext	.bats	Shell	programming	#89e051	Shell
+ext	.cgi	Shell	programming	#89e051	Shell
+ext	.command	Shell	programming	#89e051	Shell
+ext	.fcgi	Shell	programming	#89e051	Shell
+ext	.ksh	Shell	programming	#89e051	Shell
+ext	.pacscript	Shell	programming	#89e051	Shell
+ext	.sbatch	Shell	programming	#89e051	Shell
+ext	.sh.in	Shell	programming	#89e051	Shell
+ext	.slurm	Shell	programming	#89e051	Shell
+ext	.tmux	Shell	programming	#89e051	Shell
+ext	.tool	Shell	programming	#89e051	Shell
+ext	.trigger	Shell	programming	#89e051	Shell
+ext	.zsh	Shell	programming	#89e051	Shell
+ext	.zsh-theme	Shell	programming	#89e051	Shell
+filename	.bash_aliases	Shell	programming	#89e051	Shell
+filename	.bash_functions	Shell	programming	#89e051	Shell
+filename	.bash_history	Shell	programming	#89e051	Shell
+filename	.bash_logout	Shell	programming	#89e051	Shell
+filename	.bash_profile	Shell	programming	#89e051	Shell
+filename	.bashrc	Shell	programming	#89e051	Shell
+filename	.cshrc	Shell	programming	#89e051	Shell
+filename	.envrc	Shell	programming	#89e051	Shell
+filename	.flaskenv	Shell	programming	#89e051	Shell
+filename	.kshrc	Shell	programming	#89e051	Shell
+filename	.login	Shell	programming	#89e051	Shell
+filename	.profile	Shell	programming	#89e051	Shell
+filename	.tmux.conf	Shell	programming	#89e051	Shell
+filename	.xinitrc	Shell	programming	#89e051	Shell
+filename	.xsession	Shell	programming	#89e051	Shell
+filename	.zlogin	Shell	programming	#89e051	Shell
+filename	.zlogout	Shell	programming	#89e051	Shell
+filename	.zprofile	Shell	programming	#89e051	Shell
+filename	.zshenv	Shell	programming	#89e051	Shell
+filename	.zshrc	Shell	programming	#89e051	Shell
+filename	9fs	Shell	programming	#89e051	Shell
+filename	PKGBUILD	Shell	programming	#89e051	Shell
+filename	bash_aliases	Shell	programming	#89e051	Shell
+filename	bash_logout	Shell	programming	#89e051	Shell
+filename	bash_profile	Shell	programming	#89e051	Shell
+filename	bashrc	Shell	programming	#89e051	Shell
+filename	cshrc	Shell	programming	#89e051	Shell
+filename	gradlew	Shell	programming	#89e051	Shell
+filename	kshrc	Shell	programming	#89e051	Shell
+filename	login	Shell	programming	#89e051	Shell
+filename	man	Shell	programming	#89e051	Shell
+filename	mvnw	Shell	programming	#89e051	Shell
+filename	profile	Shell	programming	#89e051	Shell
+filename	tmux.conf	Shell	programming	#89e051	Shell
+filename	xinitrc	Shell	programming	#89e051	Shell
+filename	xsession	Shell	programming	#89e051	Shell
+filename	zlogin	Shell	programming	#89e051	Shell
+filename	zlogout	Shell	programming	#89e051	Shell
+filename	zprofile	Shell	programming	#89e051	Shell
+filename	zshenv	Shell	programming	#89e051	Shell
+filename	zshrc	Shell	programming	#89e051	Shell
+interpreter	ash	Shell	programming	#89e051	Shell
+interpreter	bash	Shell	programming	#89e051	Shell
+interpreter	dash	Shell	programming	#89e051	Shell
+interpreter	ksh	Shell	programming	#89e051	Shell
+interpreter	mksh	Shell	programming	#89e051	Shell
+interpreter	pdksh	Shell	programming	#89e051	Shell
+interpreter	rc	Shell	programming	#89e051	Shell
+interpreter	sh	Shell	programming	#89e051	Shell
+interpreter	zsh	Shell	programming	#89e051	Shell
+lang	Shell	Shell	programming	#89e051	Shell
+filename	.shellcheckrc	ShellCheck Config	data	#cecfcb	ShellCheck Config
+lang	ShellCheck Config	ShellCheck Config	data	#cecfcb	ShellCheck Config
+ext	.sh-session	ShellSession	programming		ShellSession
+lang	ShellSession	ShellSession	programming		ShellSession
+ext	.shen	Shen	programming	#120F14	Shen
+lang	Shen	Shen	programming	#120F14	Shen
+ext	.sieve	Sieve	programming		Sieve
+lang	Sieve	Sieve	programming		Sieve
+ext	.sfv	Simple File Verification	data	#C9BFED	Checksums
+lang	Simple File Verification	Simple File Verification	data	#C9BFED	Checksums
+filename	Singularity	Singularity	programming	#64E6AD	Singularity
+lang	Singularity	Singularity	programming	#64E6AD	Singularity
+ext	.slang	Slang	programming	#1fbec9	Slang
+lang	Slang	Slang	programming	#1fbec9	Slang
+ext	.sl	Slash	programming	#007eff	Slash
+lang	Slash	Slash	programming	#007eff	Slash
+ext	.ice	Slice	programming	#003fa2	Slice
+lang	Slice	Slice	programming	#003fa2	Slice
+ext	.slim	Slim	markup	#2b2b2b	Slim
+lang	Slim	Slim	markup	#2b2b2b	Slim
+ext	.slint	Slint	markup	#2379F4	Slint
+lang	Slint	Slint	markup	#2379F4	Slint
+ext	.cocci	SmPL	programming		SmPL
+lang	SmPL	SmPL	programming	#c94949	SmPL
+ext	.smali	Smali	programming		Smali
+lang	Smali	Smali	programming		Smali
+ext	.st	Smalltalk	programming	#596706	Smalltalk
+ext	.cs	Smalltalk	programming	#596706	Smalltalk
+lang	Smalltalk	Smalltalk	programming	#596706	Smalltalk
+ext	.tpl	Smarty	programming	#f0c040	Smarty
+lang	Smarty	Smarty	programming	#f0c040	Smarty
+ext	.smithy	Smithy	programming	#c44536	Smithy
+lang	Smithy	Smithy	programming	#c44536	Smithy
+ext	.smk	Snakemake	programming	#419179	Python
+ext	.snakefile	Snakemake	programming	#419179	Python
+filename	Snakefile	Snakemake	programming	#419179	Python
+lang	Snakemake	Snakemake	programming	#419179	Python
+ext	.sol	Solidity	programming	#AA6746	Solidity
+lang	Solidity	Solidity	programming	#AA6746	Solidity
+filename	Android.bp	Soong	data		Soong
+lang	Soong	Soong	data		Soong
+ext	.sp	SourcePawn	programming	#f69e1d	SourcePawn
+ext	.inc	SourcePawn	programming	#f69e1d	SourcePawn
+lang	SourcePawn	SourcePawn	programming	#f69e1d	SourcePawn
+ext	.zed	SpiceDB Schema	data	#a5318a	SpiceDB Schema
+lang	SpiceDB Schema	SpiceDB Schema	data	#a5318a	SpiceDB Schema
+ext	.sfd	Spline Font Database	data		Spline Font Database
+lang	Spline Font Database	Spline Font Database	data		Spline Font Database
+ext	.nut	Squirrel	programming	#800000	Squirrel
+lang	Squirrel	Squirrel	programming	#800000	Squirrel
+ext	.stan	Stan	programming	#b2011d	Stan
+lang	Stan	Stan	programming	#b2011d	Stan
+ext	.ml	Standard ML	programming	#dc566d	Standard ML
+ext	.fun	Standard ML	programming	#dc566d	Standard ML
+ext	.sig	Standard ML	programming	#dc566d	Standard ML
+ext	.sml	Standard ML	programming	#dc566d	Standard ML
+lang	Standard ML	Standard ML	programming	#dc566d	Standard ML
+ext	.bzl	Starlark	programming	#76d275	Starlark
+ext	.star	Starlark	programming	#76d275	Starlark
+filename	BUCK	Starlark	programming	#76d275	Starlark
+filename	BUILD	Starlark	programming	#76d275	Starlark
+filename	BUILD.bazel	Starlark	programming	#76d275	Starlark
+filename	MODULE.bazel	Starlark	programming	#76d275	Starlark
+filename	Tiltfile	Starlark	programming	#76d275	Starlark
+filename	WORKSPACE	Starlark	programming	#76d275	Starlark
+filename	WORKSPACE.bazel	Starlark	programming	#76d275	Starlark
+filename	WORKSPACE.bzlmod	Starlark	programming	#76d275	Starlark
+lang	Starlark	Starlark	programming	#76d275	Starlark
+ext	.do	Stata	programming	#1a5f91	Stata
+ext	.ado	Stata	programming	#1a5f91	Stata
+ext	.doh	Stata	programming	#1a5f91	Stata
+ext	.ihlp	Stata	programming	#1a5f91	Stata
+ext	.mata	Stata	programming	#1a5f91	Stata
+ext	.matah	Stata	programming	#1a5f91	Stata
+ext	.sthlp	Stata	programming	#1a5f91	Stata
+lang	Stata	Stata	programming	#1a5f91	Stata
+ext	.st	StringTemplate	markup	#3fb34f	StringTemplate
+lang	StringTemplate	StringTemplate	markup	#3fb34f	StringTemplate
+ext	.styl	Stylus	markup	#ff6347	Stylus
+lang	Stylus	Stylus	markup	#ff6347	Stylus
+ext	.srt	SubRip Text	data	#9e0101	SubRip Text
+lang	SubRip Text	SubRip Text	data	#9e0101	SubRip Text
+ext	.sss	SugarSS	markup	#2fcc9f	SugarSS
+lang	SugarSS	SugarSS	markup	#2fcc9f	SugarSS
+ext	.sc	SuperCollider	programming	#46390b	SuperCollider
+ext	.scd	SuperCollider	programming	#46390b	SuperCollider
+interpreter	sclang	SuperCollider	programming	#46390b	SuperCollider
+interpreter	scsynth	SuperCollider	programming	#46390b	SuperCollider
+lang	SuperCollider	SuperCollider	programming	#46390b	SuperCollider
+ext	.surql	SurrealQL	programming	#ff00a0	SurrealQL
+lang	SurrealQL	SurrealQL	programming	#ff00a0	SurrealQL
+ext	.svx	Survex data	data	#ffcc99	Survex data
+lang	Survex data	Survex data	data	#ffcc99	Survex data
+ext	.svelte	Svelte	markup	#ff3e00	Svelte
+lang	Svelte	Svelte	markup	#ff3e00	Svelte
+ext	.sw	Sway	programming	#00F58C	Sway
+lang	Sway	Sway	programming	#00F58C	Sway
+ext	.rnw	Sweave	prose	#198ce7	Sweave
+lang	Sweave	Sweave	prose	#198ce7	Sweave
+ext	.swift	Swift	programming	#F05138	Swift
+lang	Swift	Swift	programming	#F05138	Swift
+ext	.sv	SystemVerilog	programming	#DAE1C2	SystemVerilog
+ext	.svh	SystemVerilog	programming	#DAE1C2	SystemVerilog
+ext	.vh	SystemVerilog	programming	#DAE1C2	SystemVerilog
+lang	SystemVerilog	SystemVerilog	programming	#DAE1C2	SystemVerilog
+ext	.8xp	TI Program	programming	#A0AA87	TI Program
+ext	.8xp.txt	TI Program	programming	#A0AA87	TI Program
+lang	TI Program	TI Program	programming	#A0AA87	TI Program
+ext	.tlv	TL-Verilog	programming		TL-Verilog
+lang	TL-Verilog	TL-Verilog	programming	#C40023	TL-Verilog
+ext	.tla	TLA	programming	#4b0079	TLA
+lang	TLA	TLA	programming	#4b0079	TLA
+ext	.tmdl	TMDL	data	#f0c913	TMDL
+lang	TMDL	TMDL	data	#f0c913	TMDL
+ext	.toml	TOML	data	#9c4221	TOML
+ext	.toml.example	TOML	data	#9c4221	TOML
+filename	Cargo.lock	TOML	data	#9c4221	TOML
+filename	Cargo.toml.orig	TOML	data	#9c4221	TOML
+filename	Gopkg.lock	TOML	data	#9c4221	TOML
+filename	Pipfile	TOML	data	#9c4221	TOML
+filename	mise.local.lock	TOML	data	#9c4221	TOML
+filename	mise.lock	TOML	data	#9c4221	TOML
+filename	pdm.lock	TOML	data	#9c4221	TOML
+filename	poetry.lock	TOML	data	#9c4221	TOML
+filename	uv.lock	TOML	data	#9c4221	TOML
+lang	TOML	TOML	data	#9c4221	TOML
+ext	.tsp	TSPLIB data	data		TSPLIB data
+lang	TSPLIB data	TSPLIB data	data		TSPLIB data
+ext	.sql	TSQL	programming	#e38c00	TSQL
+lang	TSQL	TSQL	programming	#e38c00	TSQL
+ext	.tsv	TSV	data	#237346	TSV
+ext	.vcf	TSV	data	#237346	TSV
+lang	TSV	TSV	data	#237346	TSV
+ext	.tsx	TSX	programming	#3178c6	TypeScript
+lang	TSX	TSX	programming	#3178c6	TypeScript
+ext	.txl	TXL	programming	#0178b8	TXL
+lang	TXL	TXL	programming	#0178b8	TXL
+ext	.tact	Tact	programming	#48b5ff	Tact
+lang	Tact	Tact	programming	#48b5ff	Tact
+ext	.talon	Talon	programming	#333333	Talon
+lang	Talon	Talon	programming	#333333	Talon
+ext	.tape	Tape	programming		Tape
+lang	Tape	Tape	programming		Tape
+ext	.tcl	Tcl	programming	#e4cc98	Tcl
+ext	.adp	Tcl	programming	#e4cc98	Tcl
+ext	.sdc	Tcl	programming	#e4cc98	Tcl
+ext	.tcl.in	Tcl	programming	#e4cc98	Tcl
+ext	.tm	Tcl	programming	#e4cc98	Tcl
+ext	.xdc	Tcl	programming	#e4cc98	Tcl
+filename	owh	Tcl	programming	#e4cc98	Tcl
+filename	starfield	Tcl	programming	#e4cc98	Tcl
+interpreter	tclsh	Tcl	programming	#e4cc98	Tcl
+interpreter	wish	Tcl	programming	#e4cc98	Tcl
+lang	Tcl	Tcl	programming	#e4cc98	Tcl
+ext	.tcsh	Tcsh	programming		Shell
+ext	.csh	Tcsh	programming		Shell
+interpreter	tcsh	Tcsh	programming		Shell
+interpreter	csh	Tcsh	programming		Shell
+lang	Tcsh	Tcsh	programming		Shell
+ext	.tex	TeX	markup	#3D6117	TeX
+ext	.aux	TeX	markup	#3D6117	TeX
+ext	.bbx	TeX	markup	#3D6117	TeX
+ext	.cbx	TeX	markup	#3D6117	TeX
+ext	.cls	TeX	markup	#3D6117	TeX
+ext	.dtx	TeX	markup	#3D6117	TeX
+ext	.ins	TeX	markup	#3D6117	TeX
+ext	.lbx	TeX	markup	#3D6117	TeX
+ext	.ltx	TeX	markup	#3D6117	TeX
+ext	.mkii	TeX	markup	#3D6117	TeX
+ext	.mkiv	TeX	markup	#3D6117	TeX
+ext	.mkvi	TeX	markup	#3D6117	TeX
+ext	.sty	TeX	markup	#3D6117	TeX
+ext	.toc	TeX	markup	#3D6117	TeX
+lang	TeX	TeX	markup	#3D6117	TeX
+ext	.tea	Tea	markup		Tea
+lang	Tea	Tea	markup		Tea
+ext	.tl	Teal	programming		Teal
+interpreter	tl	Teal	programming	#00B1BC	Teal
+lang	Teal	Teal	programming	#00B1BC	Teal
+ext	.t	Terra	programming		Terra
+interpreter	lua	Terra	programming	#00004c	Terra
+lang	Terra	Terra	programming	#00004c	Terra
+ext	.tftpl	Terraform Template	markup		Terraform Template
+lang	Terraform Template	Terraform Template	markup	#7b42bb	HCL
+ext	.texinfo	Texinfo	prose		Texinfo
+ext	.texi	Texinfo	prose		Texinfo
+ext	.txi	Texinfo	prose		Texinfo
+interpreter	makeinfo	Texinfo	prose		Texinfo
+lang	Texinfo	Texinfo	prose		Texinfo
+ext	.txt	Text	prose		Text
+ext	.fr	Text	prose		Text
+ext	.nb	Text	prose		Text
+ext	.ncl	Text	prose		Text
+ext	.no	Text	prose		Text
+filename	CITATION	Text	prose		Text
+filename	CITATIONS	Text	prose		Text
+filename	COPYING	Text	prose		Text
+filename	COPYING.regex	Text	prose		Text
+filename	COPYRIGHT.regex	Text	prose		Text
+filename	FONTLOG	Text	prose		Text
+filename	INSTALL	Text	prose		Text
+filename	INSTALL.mysql	Text	prose		Text
+filename	LICENSE	Text	prose		Text
+filename	LICENSE.mysql	Text	prose		Text
+filename	NEWS	Text	prose		Text
+filename	README.me	Text	prose		Text
+filename	README.mysql	Text	prose		Text
+filename	README.nss	Text	prose		Text
+filename	README.pc	Text	prose		Text
+filename	click.me	Text	prose		Text
+filename	delete.me	Text	prose		Text
+filename	keep.me	Text	prose		Text
+filename	package.mask	Text	prose		Text
+filename	package.use.mask	Text	prose		Text
+filename	package.use.stable.mask	Text	prose		Text
+filename	read.me	Text	prose		Text
+filename	readme.1st	Text	prose		Text
+filename	test.me	Text	prose		Text
+filename	use.mask	Text	prose		Text
+filename	use.stable.mask	Text	prose		Text
+lang	Text	Text	prose		Text
+ext	.TextGrid	TextGrid	data	#c8506d	TextGrid
+lang	TextGrid	TextGrid	data	#c8506d	TextGrid
+filename	.tm_properties	TextMate Properties	data	#df66e4	TextMate Properties
+lang	TextMate Properties	TextMate Properties	data	#df66e4	TextMate Properties
+ext	.textile	Textile	prose	#ffe7ac	Textile
+lang	Textile	Textile	prose	#ffe7ac	Textile
+ext	.thrift	Thrift	programming	#D12127	Thrift
+lang	Thrift	Thrift	programming	#D12127	Thrift
+ext	.toit	Toit	programming	#c2c9fb	Toit
+lang	Toit	Toit	programming	#c2c9fb	Toit
+ext	.tolk	Tolk	programming	#30A1F5	Tolk
+lang	Tolk	Tolk	programming	#30A1F5	Tolk
+filename	torrc	Tor Config	data	#59316b	Tor Config
+lang	Tor Config	Tor Config	data	#59316b	Tor Config
+ext	.scm	Tree-sitter Query	programming	#8ea64c	Tree-sitter Query
+lang	Tree-sitter Query	Tree-sitter Query	programming	#8ea64c	Tree-sitter Query
+ext	.t	Turing	programming	#cf142b	Turing
+ext	.tu	Turing	programming	#cf142b	Turing
+lang	Turing	Turing	programming	#cf142b	Turing
+ext	.ttl	Turtle	data		Turtle
+lang	Turtle	Turtle	data		Turtle
+ext	.twig	Twig	markup	#c1d026	Twig
+lang	Twig	Twig	markup	#c1d026	Twig
+ext	.tl	Type Language	data		Type Language
+lang	Type Language	Type Language	data		Type Language
+interpreter	bun	TypeScript	programming	#3178c6	TypeScript
+interpreter	deno	TypeScript	programming	#3178c6	TypeScript
+interpreter	ts-node	TypeScript	programming	#3178c6	TypeScript
+interpreter	tsx	TypeScript	programming	#3178c6	TypeScript
+interpreter	node	TypeScript	programming	#3178c6	TypeScript
+ext	.ts	TypeScript	programming	#3178c6	TypeScript
+ext	.cts	TypeScript	programming	#3178c6	TypeScript
+ext	.mts	TypeScript	programming	#3178c6	TypeScript
+lang	TypeScript	TypeScript	programming	#3178c6	TypeScript
+ext	.tsp	TypeSpec	programming	#4A3665	TypeSpec
+lang	TypeSpec	TypeSpec	programming	#4A3665	TypeSpec
+ext	.typ	Typst	programming	#239dad	Typst
+lang	Typst	Typst	programming	#239dad	Typst
+ext	.upc	Unified Parallel C	programming	#4e3617	C
+lang	Unified Parallel C	Unified Parallel C	programming	#4e3617	C
+ext	.anim	Unity3D Asset	data	#222c37	Unity3D Asset
+ext	.asset	Unity3D Asset	data	#222c37	Unity3D Asset
+ext	.mask	Unity3D Asset	data	#222c37	Unity3D Asset
+ext	.mat	Unity3D Asset	data	#222c37	Unity3D Asset
+ext	.meta	Unity3D Asset	data	#222c37	Unity3D Asset
+ext	.prefab	Unity3D Asset	data	#222c37	Unity3D Asset
+ext	.unity	Unity3D Asset	data	#222c37	Unity3D Asset
+lang	Unity3D Asset	Unity3D Asset	data	#222c37	Unity3D Asset
+ext	.s	Unix Assembly	programming		Assembly
+ext	.ms	Unix Assembly	programming		Assembly
+lang	Unix Assembly	Unix Assembly	programming		Assembly
+ext	.uno	Uno	programming	#9933cc	Uno
+lang	Uno	Uno	programming	#9933cc	Uno
+ext	.uc	UnrealScript	programming	#a54c4d	UnrealScript
+lang	UnrealScript	UnrealScript	programming	#a54c4d	UnrealScript
+ext	.uplc	Untyped Plutus Core	programming	#36adbd	Untyped Plutus Core
+lang	Untyped Plutus Core	Untyped Plutus Core	programming	#36adbd	Untyped Plutus Core
+ext	.ur	UrWeb	programming	#ccccee	UrWeb
+ext	.urs	UrWeb	programming	#ccccee	UrWeb
+lang	UrWeb	UrWeb	programming	#ccccee	UrWeb
+ext	.v	V	programming	#4f87c4	V
+lang	V	V	programming	#4f87c4	V
+ext	.bas	VBA	programming	#867db1	VBA
+ext	.cls	VBA	programming	#867db1	VBA
+ext	.frm	VBA	programming	#867db1	VBA
+ext	.vba	VBA	programming	#867db1	VBA
+lang	VBA	VBA	programming	#867db1	VBA
+ext	.vbs	VBScript	programming	#15dcdc	VBScript
+lang	VBScript	VBScript	programming	#15dcdc	VBScript
+ext	.vcl	VCL	programming	#148AA8	VCL
+lang	VCL	VCL	programming	#148AA8	VCL
+ext	.vhdl	VHDL	programming	#adb2cb	VHDL
+ext	.vhd	VHDL	programming	#adb2cb	VHDL
+ext	.vhf	VHDL	programming	#adb2cb	VHDL
+ext	.vhi	VHDL	programming	#adb2cb	VHDL
+ext	.vho	VHDL	programming	#adb2cb	VHDL
+ext	.vhs	VHDL	programming	#adb2cb	VHDL
+ext	.vht	VHDL	programming	#adb2cb	VHDL
+ext	.vhw	VHDL	programming	#adb2cb	VHDL
+lang	VHDL	VHDL	programming	#adb2cb	VHDL
+ext	.vala	Vala	programming	#a56de2	Vala
+ext	.vapi	Vala	programming	#a56de2	Vala
+lang	Vala	Vala	programming	#a56de2	Vala
+ext	.vdf	Valve Data Format	data	#f26025	Valve Data Format
+ext	.vmf	Valve Data Format	data	#f26025	Valve Data Format
+lang	Valve Data Format	Valve Data Format	data	#f26025	Valve Data Format
+ext	.vtl	Velocity Template Language	markup	#507cff	Velocity Template Language
+lang	Velocity Template Language	Velocity Template Language	markup	#507cff	Velocity Template Language
+ext	.vto	Vento	markup	#ff0080	Vento
+lang	Vento	Vento	markup	#ff0080	Vento
+ext	.v	Verilog	programming	#b2b7f8	Verilog
+ext	.veo	Verilog	programming	#b2b7f8	Verilog
+lang	Verilog	Verilog	programming	#b2b7f8	Verilog
+ext	.verse	Verse	programming	#518ef8	Verse
+lang	Verse	Verse	programming	#518ef8	Verse
+ext	.sd	Vespa Schema Definition	data	#61D790	Vespa Schema Definition
+lang	Vespa Schema Definition	Vespa Schema Definition	data	#61D790	Vespa Schema Definition
+ext	.txt	Vim Help File	prose	#199f4b	Vim Help File
+lang	Vim Help File	Vim Help File	prose	#199f4b	Vim Help File
+ext	.snip	Vim Snippet	markup	#199f4b	Vim Snippet
+ext	.snippet	Vim Snippet	markup	#199f4b	Vim Snippet
+ext	.snippets	Vim Snippet	markup	#199f4b	Vim Snippet
+lang	Vim Snippet	Vim Snippet	markup	#199f4b	Vim Snippet
+ext	.vim	Vim script	programming	#199f4b	Vim script
+ext	.vba	Vim script	programming	#199f4b	Vim script
+ext	.vimrc	Vim script	programming	#199f4b	Vim script
+ext	.vmb	Vim script	programming	#199f4b	Vim script
+filename	.exrc	Vim script	programming	#199f4b	Vim script
+filename	.gvimrc	Vim script	programming	#199f4b	Vim script
+filename	.nvimrc	Vim script	programming	#199f4b	Vim script
+filename	.vimrc	Vim script	programming	#199f4b	Vim script
+filename	_vimrc	Vim script	programming	#199f4b	Vim script
+filename	gvimrc	Vim script	programming	#199f4b	Vim script
+filename	nvimrc	Vim script	programming	#199f4b	Vim script
+filename	vimrc	Vim script	programming	#199f4b	Vim script
+lang	Vim script	Vim script	programming	#199f4b	Vim script
+ext	.vb	Visual Basic .NET	programming	#945db7	Visual Basic .NET
+ext	.vbhtml	Visual Basic .NET	programming	#945db7	Visual Basic .NET
+lang	Visual Basic .NET	Visual Basic .NET	programming	#945db7	Visual Basic .NET
+ext	.bas	Visual Basic 6.0	programming	#2c6353	Visual Basic 6.0
+ext	.cls	Visual Basic 6.0	programming	#2c6353	Visual Basic 6.0
+ext	.ctl	Visual Basic 6.0	programming	#2c6353	Visual Basic 6.0
+ext	.Dsr	Visual Basic 6.0	programming	#2c6353	Visual Basic 6.0
+ext	.frm	Visual Basic 6.0	programming	#2c6353	Visual Basic 6.0
+lang	Visual Basic 6.0	Visual Basic 6.0	programming	#2c6353	Visual Basic 6.0
+ext	.volt	Volt	programming	#1F1F1F	Volt
+lang	Volt	Volt	programming	#1F1F1F	Volt
+ext	.vue	Vue	markup	#41b883	Vue
+lang	Vue	Vue	markup	#41b883	Vue
+ext	.vy	Vyper	programming		Vyper
+lang	Vyper	Vyper	programming	#9F4CF2	Vyper
+ext	.wdl	WDL	programming	#42f1f4	WDL
+lang	WDL	WDL	programming	#42f1f4	WDL
+ext	.wgsl	WGSL	programming	#1a5e9a	WGSL
+lang	WGSL	WGSL	programming	#1a5e9a	WGSL
+ext	.mtl	Wavefront Material	data		Wavefront Material
+lang	Wavefront Material	Wavefront Material	data		Wavefront Material
+ext	.obj	Wavefront Object	data		Wavefront Object
+lang	Wavefront Object	Wavefront Object	data		Wavefront Object
+ext	.owl	Web Ontology Language	data	#5b70bd	Web Ontology Language
+lang	Web Ontology Language	Web Ontology Language	data	#5b70bd	Web Ontology Language
+ext	.wast	WebAssembly	programming	#04133b	WebAssembly
+ext	.wat	WebAssembly	programming	#04133b	WebAssembly
+lang	WebAssembly	WebAssembly	programming	#04133b	WebAssembly
+ext	.wit	WebAssembly Interface Type	data	#6250e7	WebAssembly Interface Type
+lang	WebAssembly Interface Type	WebAssembly Interface Type	data	#6250e7	WebAssembly Interface Type
+ext	.webidl	WebIDL	programming		WebIDL
+lang	WebIDL	WebIDL	programming		WebIDL
+ext	.vtt	WebVTT	data		WebVTT
+lang	WebVTT	WebVTT	data		WebVTT
+filename	.wgetrc	Wget Config	data		INI
+lang	Wget Config	Wget Config	data		INI
+ext	.whiley	Whiley	programming	#d5c397	Whiley
+lang	Whiley	Whiley	programming	#d5c397	Whiley
+ext	.mediawiki	Wikitext	prose	#fc5757	Wikitext
+ext	.wiki	Wikitext	prose	#fc5757	Wikitext
+ext	.wikitext	Wikitext	prose	#fc5757	Wikitext
+lang	Wikitext	Wikitext	prose	#fc5757	Wikitext
+ext	.mc	Win32 Message File	data		Win32 Message File
+lang	Win32 Message File	Win32 Message File	data		Win32 Message File
+ext	.reg	Windows Registry Entries	data	#52d5ff	Windows Registry Entries
+lang	Windows Registry Entries	Windows Registry Entries	data	#52d5ff	Windows Registry Entries
+ext	.ws	Witcher Script	programming	#ff0000	Witcher Script
+lang	Witcher Script	Witcher Script	programming	#ff0000	Witcher Script
+ext	.mathematica	Wolfram Language	programming	#dd1100	Wolfram Language
+ext	.cdf	Wolfram Language	programming	#dd1100	Wolfram Language
+ext	.m	Wolfram Language	programming	#dd1100	Wolfram Language
+ext	.ma	Wolfram Language	programming	#dd1100	Wolfram Language
+ext	.mt	Wolfram Language	programming	#dd1100	Wolfram Language
+ext	.nb	Wolfram Language	programming	#dd1100	Wolfram Language
+ext	.nbp	Wolfram Language	programming	#dd1100	Wolfram Language
+ext	.wl	Wolfram Language	programming	#dd1100	Wolfram Language
+ext	.wls	Wolfram Language	programming	#dd1100	Wolfram Language
+ext	.wlt	Wolfram Language	programming	#dd1100	Wolfram Language
+interpreter	wolfram	Wolfram Language	programming	#dd1100	Wolfram Language
+interpreter	WolframKernel	Wolfram Language	programming	#dd1100	Wolfram Language
+interpreter	wolframscript	Wolfram Language	programming	#dd1100	Wolfram Language
+interpreter	math	Wolfram Language	programming	#dd1100	Wolfram Language
+interpreter	MathKernel	Wolfram Language	programming	#dd1100	Wolfram Language
+interpreter	MathematicaScript	Wolfram Language	programming	#dd1100	Wolfram Language
+interpreter	WolframNB	Wolfram Language	programming	#dd1100	Wolfram Language
+interpreter	Mathematica	Wolfram Language	programming	#dd1100	Wolfram Language
+lang	Wolfram Language	Wolfram Language	programming	#dd1100	Wolfram Language
+ext	.wlk	Wollok	programming	#a23738	Wollok
+lang	Wollok	Wollok	programming	#a23738	Wollok
+ext	.toc	World of Warcraft Addon Data	data	#f7e43f	World of Warcraft Addon Data
+lang	World of Warcraft Addon Data	World of Warcraft Addon Data	data	#f7e43f	World of Warcraft Addon Data
+ext	.wren	Wren	programming	#383838	Wren
+lang	Wren	Wren	programming	#383838	Wren
+ext	.xbm	X BitMap	data		C
+lang	X BitMap	X BitMap	data		C
+filename	encodings.dir	X Font Directory Index	data		X Font Directory Index
+filename	fonts.alias	X Font Directory Index	data		X Font Directory Index
+filename	fonts.dir	X Font Directory Index	data		X Font Directory Index
+filename	fonts.scale	X Font Directory Index	data		X Font Directory Index
+lang	X Font Directory Index	X Font Directory Index	data		X Font Directory Index
+ext	.xpm	X PixMap	data		C
+ext	.pm	X PixMap	data		C
+lang	X PixMap	X PixMap	data		C
+ext	.x10	X10	programming		X10
+lang	X10	X10	programming	#4B6BEF	X10
+ext	.xc	XC	programming	#99DA07	XC
+lang	XC	XC	programming	#99DA07	XC
+filename	.XCompose	XCompose	data		XCompose
+filename	XCompose	XCompose	data		XCompose
+filename	xcompose	XCompose	data		XCompose
+lang	XCompose	XCompose	data		XCompose
+ext	.xml	XML	data	#0060ac	XML
+ext	.adml	XML	data	#0060ac	XML
+ext	.admx	XML	data	#0060ac	XML
+ext	.ant	XML	data	#0060ac	XML
+ext	.axaml	XML	data	#0060ac	XML
+ext	.axml	XML	data	#0060ac	XML
+ext	.builds	XML	data	#0060ac	XML
+ext	.ccproj	XML	data	#0060ac	XML
+ext	.ccxml	XML	data	#0060ac	XML
+ext	.clixml	XML	data	#0060ac	XML
+ext	.cproject	XML	data	#0060ac	XML
+ext	.cscfg	XML	data	#0060ac	XML
+ext	.csdef	XML	data	#0060ac	XML
+ext	.csl	XML	data	#0060ac	XML
+ext	.csproj	XML	data	#0060ac	XML
+ext	.ct	XML	data	#0060ac	XML
+ext	.depproj	XML	data	#0060ac	XML
+ext	.dita	XML	data	#0060ac	XML
+ext	.ditamap	XML	data	#0060ac	XML
+ext	.ditaval	XML	data	#0060ac	XML
+ext	.dll.config	XML	data	#0060ac	XML
+ext	.dotsettings	XML	data	#0060ac	XML
+ext	.filters	XML	data	#0060ac	XML
+ext	.fsproj	XML	data	#0060ac	XML
+ext	.fxml	XML	data	#0060ac	XML
+ext	.glade	XML	data	#0060ac	XML
+ext	.gml	XML	data	#0060ac	XML
+ext	.gmx	XML	data	#0060ac	XML
+ext	.gpx	XML	data	#0060ac	XML
+ext	.grxml	XML	data	#0060ac	XML
+ext	.gst	XML	data	#0060ac	XML
+ext	.hzp	XML	data	#0060ac	XML
+ext	.icls	XML	data	#0060ac	XML
+ext	.iml	XML	data	#0060ac	XML
+ext	.ivy	XML	data	#0060ac	XML
+ext	.jelly	XML	data	#0060ac	XML
+ext	.jsproj	XML	data	#0060ac	XML
+ext	.kml	XML	data	#0060ac	XML
+ext	.launch	XML	data	#0060ac	XML
+ext	.mdpolicy	XML	data	#0060ac	XML
+ext	.meta4	XML	data	#0060ac	XML
+ext	.mjml	XML	data	#0060ac	XML
+ext	.mm	XML	data	#0060ac	XML
+ext	.mod	XML	data	#0060ac	XML
+ext	.mojo	XML	data	#0060ac	XML
+ext	.mxml	XML	data	#0060ac	XML
+ext	.natvis	XML	data	#0060ac	XML
+ext	.ncl	XML	data	#0060ac	XML
+ext	.ndproj	XML	data	#0060ac	XML
+ext	.nproj	XML	data	#0060ac	XML
+ext	.nuspec	XML	data	#0060ac	XML
+ext	.odd	XML	data	#0060ac	XML
+ext	.osm	XML	data	#0060ac	XML
+ext	.pkgproj	XML	data	#0060ac	XML
+ext	.pluginspec	XML	data	#0060ac	XML
+ext	.proj	XML	data	#0060ac	XML
+ext	.props	XML	data	#0060ac	XML
+ext	.ps1xml	XML	data	#0060ac	XML
+ext	.psc1	XML	data	#0060ac	XML
+ext	.pt	XML	data	#0060ac	XML
+ext	.pubxml	XML	data	#0060ac	XML
+ext	.qhelp	XML	data	#0060ac	XML
+ext	.rbxmx	XML	data	#0060ac	XML
+ext	.rdf	XML	data	#0060ac	XML
+ext	.res	XML	data	#0060ac	XML
+ext	.resx	XML	data	#0060ac	XML
+ext	.rs	XML	data	#0060ac	XML
+ext	.rss	XML	data	#0060ac	XML
+ext	.sch	XML	data	#0060ac	XML
+ext	.scxml	XML	data	#0060ac	XML
+ext	.sfproj	XML	data	#0060ac	XML
+ext	.shproj	XML	data	#0060ac	XML
+ext	.slnx	XML	data	#0060ac	XML
+ext	.srdf	XML	data	#0060ac	XML
+ext	.storyboard	XML	data	#0060ac	XML
+ext	.sublime-snippet	XML	data	#0060ac	XML
+ext	.sw	XML	data	#0060ac	XML
+ext	.targets	XML	data	#0060ac	XML
+ext	.tml	XML	data	#0060ac	XML
+ext	.ts	XML	data	#0060ac	XML
+ext	.tsx	XML	data	#0060ac	XML
+ext	.typ	XML	data	#0060ac	XML
+ext	.ui	XML	data	#0060ac	XML
+ext	.urdf	XML	data	#0060ac	XML
+ext	.ux	XML	data	#0060ac	XML
+ext	.vbproj	XML	data	#0060ac	XML
+ext	.vcxproj	XML	data	#0060ac	XML
+ext	.vsixmanifest	XML	data	#0060ac	XML
+ext	.vssettings	XML	data	#0060ac	XML
+ext	.vstemplate	XML	data	#0060ac	XML
+ext	.vxml	XML	data	#0060ac	XML
+ext	.wixproj	XML	data	#0060ac	XML
+ext	.workflow	XML	data	#0060ac	XML
+ext	.wsdl	XML	data	#0060ac	XML
+ext	.wsf	XML	data	#0060ac	XML
+ext	.wxi	XML	data	#0060ac	XML
+ext	.wxl	XML	data	#0060ac	XML
+ext	.wxs	XML	data	#0060ac	XML
+ext	.x3d	XML	data	#0060ac	XML
+ext	.xacro	XML	data	#0060ac	XML
+ext	.xaml	XML	data	#0060ac	XML
+ext	.xib	XML	data	#0060ac	XML
+ext	.xlf	XML	data	#0060ac	XML
+ext	.xliff	XML	data	#0060ac	XML
+ext	.xmi	XML	data	#0060ac	XML
+ext	.xml.dist	XML	data	#0060ac	XML
+ext	.xmp	XML	data	#0060ac	XML
+ext	.xproj	XML	data	#0060ac	XML
+ext	.xsd	XML	data	#0060ac	XML
+ext	.xspec	XML	data	#0060ac	XML
+ext	.xul	XML	data	#0060ac	XML
+ext	.zcml	XML	data	#0060ac	XML
+filename	.classpath	XML	data	#0060ac	XML
+filename	.cproject	XML	data	#0060ac	XML
+filename	.project	XML	data	#0060ac	XML
+filename	App.config	XML	data	#0060ac	XML
+filename	NuGet.config	XML	data	#0060ac	XML
+filename	Settings.StyleCop	XML	data	#0060ac	XML
+filename	Web.Debug.config	XML	data	#0060ac	XML
+filename	Web.Release.config	XML	data	#0060ac	XML
+filename	Web.config	XML	data	#0060ac	XML
+filename	packages.config	XML	data	#0060ac	XML
+lang	XML	XML	data	#0060ac	XML
+ext	.plist	XML Property List	data	#0060ac	XML
+ext	.stTheme	XML Property List	data	#0060ac	XML
+ext	.tmCommand	XML Property List	data	#0060ac	XML
+ext	.tmLanguage	XML Property List	data	#0060ac	XML
+ext	.tmPreferences	XML Property List	data	#0060ac	XML
+ext	.tmSnippet	XML Property List	data	#0060ac	XML
+ext	.tmTheme	XML Property List	data	#0060ac	XML
+lang	XML Property List	XML Property List	data	#0060ac	XML
+ext	.xsp-config	XPages	data		XPages
+ext	.xsp.metadata	XPages	data		XPages
+lang	XPages	XPages	data		XPages
+ext	.xpl	XProc	programming		XProc
+ext	.xproc	XProc	programming		XProc
+lang	XProc	XProc	programming		XProc
+ext	.xquery	XQuery	programming	#5232e7	XQuery
+ext	.xq	XQuery	programming	#5232e7	XQuery
+ext	.xql	XQuery	programming	#5232e7	XQuery
+ext	.xqm	XQuery	programming	#5232e7	XQuery
+ext	.xqy	XQuery	programming	#5232e7	XQuery
+lang	XQuery	XQuery	programming	#5232e7	XQuery
+ext	.xs	XS	programming		XS
+lang	XS	XS	programming		XS
+ext	.xslt	XSLT	programming		XSLT
+ext	.xsl	XSLT	programming		XSLT
+lang	XSLT	XSLT	programming	#EB8CEB	XSLT
+filename	xmake.lua	Xmake	programming	#22a079	Xmake
+lang	Xmake	Xmake	programming	#22a079	Xmake
+ext	.xojo_code	Xojo	programming	#81bd41	Xojo
+ext	.xojo_menu	Xojo	programming	#81bd41	Xojo
+ext	.xojo_report	Xojo	programming	#81bd41	Xojo
+ext	.xojo_script	Xojo	programming	#81bd41	Xojo
+ext	.xojo_toolbar	Xojo	programming	#81bd41	Xojo
+ext	.xojo_window	Xojo	programming	#81bd41	Xojo
+lang	Xojo	Xojo	programming	#81bd41	Xojo
+ext	.xsh	Xonsh	programming	#285EEF	Xonsh
+lang	Xonsh	Xonsh	programming	#285EEF	Xonsh
+ext	.xtend	Xtend	programming	#24255d	Xtend
+lang	Xtend	Xtend	programming	#24255d	Xtend
+ext	.yml	YAML	data	#cb171e	YAML
+ext	.mir	YAML	data	#cb171e	YAML
+ext	.reek	YAML	data	#cb171e	YAML
+ext	.rviz	YAML	data	#cb171e	YAML
+ext	.sublime-syntax	YAML	data	#cb171e	YAML
+ext	.syntax	YAML	data	#cb171e	YAML
+ext	.yaml	YAML	data	#cb171e	YAML
+ext	.yaml-tmlanguage	YAML	data	#cb171e	YAML
+ext	.yaml.sed	YAML	data	#cb171e	YAML
+ext	.yml.mysql	YAML	data	#cb171e	YAML
+filename	.clang-format	YAML	data	#cb171e	YAML
+filename	.clang-tidy	YAML	data	#cb171e	YAML
+filename	.clangd	YAML	data	#cb171e	YAML
+filename	.eslintrc	YAML	data	#cb171e	YAML
+filename	.gemrc	YAML	data	#cb171e	YAML
+filename	.releaserc	YAML	data	#cb171e	YAML
+filename	CITATION.cff	YAML	data	#cb171e	YAML
+filename	glide.lock	YAML	data	#cb171e	YAML
+filename	pixi.lock	YAML	data	#cb171e	YAML
+filename	yarn.lock	YAML	data	#cb171e	YAML
+lang	YAML	YAML	data	#cb171e	YAML
+ext	.yang	YANG	data		YANG
+lang	YANG	YANG	data		YANG
+ext	.yar	YARA	programming	#220000	YARA
+ext	.yara	YARA	programming	#220000	YARA
+lang	YARA	YARA	programming	#220000	YARA
+ext	.yasnippet	YASnippet	markup	#32AB90	YASnippet
+lang	YASnippet	YASnippet	markup	#32AB90	YASnippet
+ext	.y	Yacc	programming		Yacc
+ext	.yacc	Yacc	programming		Yacc
+ext	.yy	Yacc	programming		Yacc
+lang	Yacc	Yacc	programming	#4B6C4B	Yacc
+ext	.yul	Yul	programming	#794932	Yul
+lang	Yul	Yul	programming	#794932	Yul
+ext	.zap	ZAP	programming	#0d665e	ZAP
+ext	.xzap	ZAP	programming	#0d665e	ZAP
+lang	ZAP	ZAP	programming	#0d665e	ZAP
+ext	.zil	ZIL	programming	#dc75e5	ZIL
+ext	.mud	ZIL	programming	#dc75e5	ZIL
+lang	ZIL	ZIL	programming	#dc75e5	ZIL
+ext	.zeek	Zeek	programming		Zeek
+ext	.bro	Zeek	programming		Zeek
+lang	Zeek	Zeek	programming		Zeek
+ext	.zs	ZenScript	programming	#00BCD1	ZenScript
+lang	ZenScript	ZenScript	programming	#00BCD1	ZenScript
+ext	.zep	Zephir	programming	#118f9e	Zephir
+lang	Zephir	Zephir	programming	#118f9e	Zephir
+ext	.zig	Zig	programming	#ec915c	Zig
+ext	.zig.zon	Zig	programming	#ec915c	Zig
+lang	Zig	Zig	programming	#ec915c	Zig
+ext	.zimpl	Zimpl	programming	#d67711	Zimpl
+ext	.zmpl	Zimpl	programming	#d67711	Zimpl
+ext	.zpl	Zimpl	programming	#d67711	Zimpl
+lang	Zimpl	Zimpl	programming	#d67711	Zimpl
+ext	.zmodel	Zmodel	data	#ff7100	Zmodel
+lang	Zmodel	Zmodel	data	#ff7100	Zmodel
+filename	.curlrc	cURL Config	data		INI
+filename	_curlrc	cURL Config	data		INI
+lang	cURL Config	cURL Config	data		INI
+filename	crontab	crontab	data	#ead7ac	crontab
+lang	crontab	crontab	data	#ead7ac	crontab
+ext	.desktop	desktop	data		INI
+ext	.desktop.in	desktop	data		INI
+lang	desktop	desktop	data		INI
+ext	.dircolors	dircolors	data		dircolors
+filename	.dir_colors	dircolors	data		dircolors
+filename	.dircolors	dircolors	data		dircolors
+filename	DIR_COLORS	dircolors	data		dircolors
+filename	_dir_colors	dircolors	data		dircolors
+filename	_dircolors	dircolors	data		dircolors
+filename	dir_colors	dircolors	data		dircolors
+lang	dircolors	dircolors	data		dircolors
+ext	.ec	eC	programming	#913960	eC
+ext	.eh	eC	programming	#913960	eC
+lang	eC	eC	programming	#913960	eC
+ext	.edn	edn	data		edn
+lang	edn	edn	data		edn
+interpreter	fish	fish	programming	#4aae47	Shell
+ext	.fish	fish	programming	#4aae47	Shell
+lang	fish	fish	programming	#4aae47	Shell
+ext	.hoon	hoon	programming	#00b171	hoon
+lang	hoon	hoon	programming	#00b171	hoon
+ext	.ics	iCalendar	data	#ec564c	iCalendar
+ext	.ical	iCalendar	data	#ec564c	iCalendar
+lang	iCalendar	iCalendar	data	#ec564c	iCalendar
+ext	.jq	jq	programming	#c7254e	jq
+interpreter	gojq	jq	programming	#c7254e	jq
+interpreter	jaq	jq	programming	#c7254e	jq
+interpreter	jq	jq	programming	#c7254e	jq
+interpreter	jqjq	jq	programming	#c7254e	jq
+interpreter	jqq	jq	programming	#c7254e	jq
+interpreter	query-json	jq	programming	#c7254e	jq
+lang	jq	jq	programming	#c7254e	jq
+ext	.kv	kvlang	markup		kvlang
+lang	kvlang	kvlang	markup	#1da6e0	kvlang
+ext	.mrc	mIRC Script	programming	#3d57c3	mIRC Script
+lang	mIRC Script	mIRC Script	programming	#3d57c3	mIRC Script
+ext	.mcfunction	mcfunction	programming	#E22837	mcfunction
+lang	mcfunction	mcfunction	programming	#E22837	mcfunction
+ext	.svx	mdsvex	markup	#5f9ea0	mdsvex
+lang	mdsvex	mdsvex	markup	#5f9ea0	mdsvex
+ext	.mu	mupad	programming	#244963	mupad
+lang	mupad	mupad	programming	#244963	mupad
+ext	.nanorc	nanorc	data	#2d004d	INI
+filename	.nanorc	nanorc	data	#2d004d	INI
+filename	nanorc	nanorc	data	#2d004d	INI
+lang	nanorc	nanorc	data	#2d004d	INI
+ext	.nc	nesC	programming	#94B0C7	nesC
+lang	nesC	nesC	programming	#94B0C7	nesC
+ext	.ooc	ooc	programming	#b0b77e	ooc
+lang	ooc	ooc	programming	#b0b77e	ooc
+ext	.pc	pkg-config	data	#2b5e82	pkg-config
+ext	.pc.in	pkg-config	data	#2b5e82	pkg-config
+lang	pkg-config	pkg-config	data	#2b5e82	pkg-config
+ext	.q	q	programming		q
+lang	q	q	programming	#0040cd	q
+ext	.rst	reStructuredText	prose	#141414	reStructuredText
+ext	.rest	reStructuredText	prose	#141414	reStructuredText
+ext	.rest.txt	reStructuredText	prose	#141414	reStructuredText
+ext	.rst.txt	reStructuredText	prose	#141414	reStructuredText
+lang	reStructuredText	reStructuredText	prose	#141414	reStructuredText
+ext	.sed	sed	programming	#64b970	sed
+interpreter	gsed	sed	programming	#64b970	sed
+interpreter	minised	sed	programming	#64b970	sed
+interpreter	sed	sed	programming	#64b970	sed
+interpreter	ssed	sed	programming	#64b970	sed
+lang	sed	sed	programming	#64b970	sed
+ext	.templ	templ	markup	#66D0DD	templ
+lang	templ	templ	markup	#66D0DD	templ
+ext	.uc	ucode	programming	#00b8d4	ucode
+interpreter	ucode	ucode	programming	#00b8d4	ucode
+lang	ucode	ucode	programming	#00b8d4	ucode
+ext	.vcf	vCard	data	#ee2647	vCard
+lang	vCard	vCard	data	#ee2647	vCard
+ext	.wisp	wisp	programming	#7582D1	wisp
+lang	wisp	wisp	programming	#7582D1	wisp
+ext	.prg	xBase	programming	#403a40	xBase
+ext	.ch	xBase	programming	#403a40	xBase
+ext	.prw	xBase	programming	#403a40	xBase
+lang	xBase	xBase	programming	#403a40	xBase
diff --git a/tools/news.awk b/tools/news.awk
index 470a301..fe59ea3 100644
--- a/tools/news.awk
+++ b/tools/news.awk
@@ -9,6 +9,8 @@ BEGIN {
 		mode = "html"
 	if (siteurl == "")
 		siteurl = "https://splux.robertflexx.dev"
+	if (gitusers == "")
+		gitusers = siteurl "/git/users"
 	per = per + 0
 	if (per < 1)
 		per = 20
@@ -114,8 +116,11 @@ END {
 }
 
 function profile_href(a) {
-	if (a ~ /^[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$/ && length(a) <= 39)
+	if (a ~ /^[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?$/ && length(a) <= 39) {
+		if (gitusers != "")
+			return gitusers "/" a "/"
 		return "https://github.com/" a
+	}
 	return ""
 }