1
0
mirror of https://github.com/tommytran732/tommytran.io synced 2024-06-19 01:36:33 -04:00

Update content

Signed-off-by: Tommy <contact@tommytran.io>
This commit is contained in:
Tommy 2023-11-05 03:21:11 -07:00
parent 7c03fa92e0
commit eba9e0319c
No known key found for this signature in database
GPG Key ID: D30DEC268D3FEB17
31 changed files with 216 additions and 200 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -0,0 +1,23 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
{
"name": "Ubuntu-Hugo",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "mcr.microsoft.com/devcontainers/base:jammy",
"forwardPorts": [1313],
"features": {
"ghcr.io/devcontainers/features/hugo:1": {
"extended": true,
"version": "0.119.0"
}
}
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "uname -a",
// Configure tool-specific properties.
// "customizations": {},
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}

8
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,8 @@
version: 2
updates:
- package-ecosystem: gitsubmodule
directory: "/"
schedule:
interval: daily
labels:
- "dependency"

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.lock

14
cloudflare-build.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/bash
#curl -L -s https://api.github.com/repos/gohugoio/hugo/releases/latest | grep "browser_download_url.*extended.*linux-amd64.tar.gz" | cut -d : -f 2,3 | sed 's/"//g' | xargs wget
wget https://github.com/gohugoio/hugo/releases/download/v0.119.0/hugo_0.119.0_Linux-64bit.tar.gz
tar xvf ./*.tar.gz
chmod u+x ./hugo
if [ "$CF_PAGES_BRANCH" == "main" ]; then
./hugo --minify
else
./hugo -b "$CF_PAGES_URL"
fi

View File

@ -1,9 +1,9 @@
baseURL: "https://tommytran.io"
title: Tommy Tran
title: Tommy Tran - System Administrator and Technical Writer
theme: WonderMod
copyright: '©Thien Tran 2021-2022'
copyright: '©Thien Tran 2021-2023'
enableRobotsTXT: true
#enableGitInfo: true
enableGitInfo: true
minify:
disableXML: true
@ -29,35 +29,37 @@ params:
assets:
disableHLJS: true
disableFingerprinting: false
favicon: "/favicon/favicon.ico"
favicon16x16: "/favicon/favicon-16x16.png"
favicon32x32: "/favicon/favicon-32x32.png"
apple_touch_icon: "/favicon/apple-touch-icon.png"
safari_pinned_tab: "/favicon/safari-pinned-tab.svg"
favicon: "/favicon.ico"
favicon16x16: "/favicon-16x16.png"
favicon32x32: "/favicon-32x32.png"
apple_touch_icon: "/apple-touch-icon.png"
safari_pinned_tab: "/safari-pinned-tab.svg"
label:
text: "TommyTran.io"
text: "Tommy Tran"
icon: "/cortana.png"
# profile-mode
profileMode:
enabled: true # needs to be explicitly set
title: Tommy Tran
subtitle: "System Administrator and Technical Writer"
imageUrl: "/cortana.png"
buttons:
- name: About
url: about
- name: Contact
url: contact
- name: PGP Key
url: gpg.asc
socialIcons:
- name: github
url: "https://github.com/tommytran732"
- name: gitea
url: "https://git.tommytran.io/tomster"
url: "https://git.tommytran.io/Tomster"
- name: matrix
url: "https://matrix.to/#/@tommy:arcticfoxes.net"
url: "https://invite.arcticfoxes.net/#/@tommy:arcticfoxes.net"
- name: telegram
url: "https://t.me/tommytran732"
- name: twitter
url: "https://twitter.com/tommytran732"
- name: email
@ -110,13 +112,13 @@ menu:
name: Projects
url: /projects/
weight: 20
- identifier: Services
name: Services
url: /services/
- identifier: Packages
name: Packages
url: /packages/
weight: 30
- identifier: Hire Me!
name: Hire Me!
url: /hire-me/
- identifier: PGP
name: PGP
url: tommy.asc
weight: 40
privacy:

View File

@ -7,8 +7,8 @@ date: 2022-09-02
Hey there 👋
My name is Thien, but I mostly go by "Tommy" nowadays. I am an enthusiastic Linux system administrator around 4 years of experience. I am familiar with most major Linux families, from Red Hat to Debian to SUSE to Arch Linux. Recently, my interest has shifted to immutable distributions such as Fedora Silverblue/CoreOS and openSUSE MicroOS.
My name is Thien, but I mostly go by "Tommy" nowadays. I am an Linux system administrator around 4 years of experience. I am familiar with most major Linux families, from Red Hat to Debian to SUSE to Arch Linux. Recently, my interest has shifted to immutable distributions such as Fedora Silverblue/CoreOS and openSUSE MicroOS.
Like most Linux users, I am an open source enthusiast and publish most of the projects made in my free time on [GitHub](https://github.com/tommytran732) and [my own Gitea instance](https://git.tommytran.io/tomster). I also made a couple of small contributions to various projets on GitHub as well.
If you are active in the privacy communities on Matrix, you may recognize me. I used to be a collaborator for [PrivacyGuides.org](https://privacyguides.org) and wrote a large portion of the site from around October 2021 - July 2022. Now, I am now working on my own website - [PrivSec.dev](https://privsec.dev) - with a couple of friends I "met" through [GrapheneOS](https://grapheneos.org). Oh, while we are on this topic, I am also a moderator in the official GrapheneOS channels as well (though not a developer or project member). Or, you may just know me as that one guy who loves throwing a hypervisor at every problem he encounters, typical of a Qubes OS user.
If you are active in the privacy communities on Matrix, you may recognize me. I used to be a collaborator for [PrivacyGuides.org](https://privacyguides.org) and wrote a large portion of the site from around October 2021 - July 2022. Now, I am now working on my own website - [PrivSec.dev](https://privsec.dev) - with a couple of friends I "met" through [GrapheneOS](https://grapheneos.org). Oh, while we are on this topic, I am also a moderator in the official GrapheneOS channels as well (though not a developer or project member). Or, you may just know me as that one guy who loves throwing a hypervisor at every problem he encounters, typical of a Qubes OS user.

View File

@ -5,13 +5,50 @@ date: 2022-09-02
![Matrix](/images/matrix.jpg)
I highly recommend that you contact me via Matrix, so we could take advantage of their end to end encryption. My Matrix is [@tommy:arcticfoxes.net](https://matrix.to/#/@tommy:arcticfoxes.net).
## Matrix
In case you do not have a Matrix account, you can sign up for one on my homeserver [arcticfoxes.net](https://arcticfoxes.net) or on [matrix.org](https://app.element.io). Alternatively, check out [joinmatrix.org](https://joinmatrix.org/servers/) for a list of public homeservers. I do not ask for your email address or any personal information for registration on [arcticfoxes.net](https://arcticfoxes.net). All you need to provide is a username and password.
The best way to contact me is through Matrix. My account is [@tommy:arcticfoxes.net](https://invite.arcticfoxes.net/#/@tommy:arcticfoxes.net). If you do not have a an account, you can sign up for one on my homeserver [arcticfoxes.net](https://arcticfoxes.net). I do not ask for your email address or any personal information for registration.
If you prefer to reach out to me via email, my address is contact@tommytran.io. You can use my GPG Key to encrypt the messages. Aliases:
## SimpleX Chat
- tommy@privsec.dev
- tommy@arcticfoxes.net
My SimpleX Chat address is `https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2FN_McQS3F9TGoh4ER0QstUf55kGnNSd-wXfNPZ7HukcM%3D%40smp19.simplex.im%2F03zrijd3pM0hi2AG6XLiMMpxEsjEqj_5%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAx3xSpEh_hRUiGatqlRxGajqIcg6H6xc9jf-2UfeJGA4%253D%26srv%3Di53bbtoqhlc365k6kxzwdp5w3cdt433s7bwh3y32rcbml2vztiyyz5id.onion`
Please by wary of anyone claiming to be me or using the handle "TommyTran732" reaching out to you. Chances are, they are an impersonator. You can always contact me via Matrix or Email for identity verification.
You can scan the QR code here:
![SimpleX Chat](/images/simplex-chat-address.png)
## Telegram
My Telegram is [TommyTran732](https://t.me/tommytran732). I do not check it as often as I do with Matrix. When contacting me, please use the [Secret Chat](https://telegram.org/faq#q-how-do-i-start-a-secret-chat) feature.
## Email
If you prefer to reach out to me via email, my address is [contact@tommytran.io](mailto:contact@tommytran.io). I do not use PGP for emails. Aliases:
- [tommy@privsec.dev](mailto:tommy@privsec.dev)
- [tommy@arcticfoxes.net](mailto:tommy@arcticfoxes.net)
## Other Accounts
Discord:
- TommyTran732
Twitter:
- [@TommyTran732](https://twitter.com/tommytran732)
- [@PrivSec_Dev](https://twitter.com/privsec_dev)
Reddit:
- [PrivSec_Dev](https://www.reddit.com/user/privsec_dev)
My Git accounts:
- [GitHub](https://github.com/tommytran732)
- [GitLab](https://gitlab.com/tommytran732) (inactive)
- [Gitea](https://git.tommytran.io/tomster)
Packaging:
- [AUR](https://aur.archlinux.org/account/TommyTran732) (login required)
- [Docker Hub](https://hub.docker.com/u/tommytran732) (inactive)
- [Quay.io](https://quay.io/tommytran732)
Please by wary of anyone claiming to be me or using the handle "TommyTran732" reaching out to you. Chances are, they are an impersonator. You can always contact me via Matrix or Email for identity verification.

View File

@ -1,17 +0,0 @@
---
title: "Hire Me"
date: 2022-09-02
---
![rchsa](/images/rhcsa.png)
I am graduating in a few months and I am looking for a full-time sysadmin job. If you are interested in hiring me, please send me an email at contact@tommytran.io.
I will not be posting my full resume here for privacy reasons, but here are the the certifications I have gotten so far:
- **Red Hat Certified System Administrator** | ID: 200-058-41
- **Linux Foundation Certified System Administrator** | ID: LFCS-2000-002661-01
- **SUSE Certified Administrator for SUSE Linux Enterprise 15** | ID: 2107 (2021-04-24)
- **CompTIA Linux+** (QYRCZ8BM0HE11LK)
- **CompTIA ITF+** (MJ29K56PQC44QWWG)
- **Linux Professional Institute Linux Essentials** (ju2ycbghb9)

23
content/packages.md Normal file
View File

@ -0,0 +1,23 @@
---
title: "Packages"
date: 2022-09-03
---
## Synapse
![Matrix](/images/matrix.jpg)
I have a [simple fork](https://github.com/tommytran732/Synapse-Docker) of [Wonderfall's hardened Synapse Docker image](https://github.com/Wonderfall/docker-synapse) with the [Mjolnir module](https://github.com/matrix-org/mjolnir/blob/main/docs/synapse_module.md) support and the default (as opposed to light) variant of the [Hardened Memory Allocator](https://github.com/GrapheneOS/hardened_malloc).
You can obtain the image by pulling `ghcr.io/tommytran732/synapse` or `quay.io/tommytran732/synapse`.
## Matrix.to
I made an Alpine Docker container for [Matrix.to](https://matrix.to) that you obtain by pulling `ghcr.io/tommytran732/matrix.to`. The default instance has been changed from [Element.io](https://app.element.io) to [ArcticFoxes.net](https://element.arcticfoxes.net).
## pamac-flatpak AUR
![pamac](/images/pamac.png)
I maintain the [`pamac-flatpak`](https://aur.archlinux.org/packages/pamac-flatpak), [`pamac-flatpak-gnome`](https://aur.archlinux.org/packages/pamac-flatpak-gnome), and [`libpamac-flatpak`](https://aur.archlinux.org/packages/libpamac-flatpak) AUR packages. Originally, they were forks of [`pacmac-all`](https://aur.archlinux.org/packages/pamac-all) and [`libpamac-all`](https://aur.archlinux.org/packages/libpamac-nosnap) with snapd removed. I found snapd to be quite annoying - it is yet another AUR package I don't need, requires `cgroupsv1` for confinement, does not integrate with `gnome-software`, makes lots of loopback mounts, and so on.
Nowadays, they are based on the [`pamac-nosnap`](https://aur.archlinux.org/packages?O=0&K=pamac-nosnap) package with some minor changes to make the build and installation process nicer and more convenient.

View File

@ -11,6 +11,18 @@ date: 2022-09-02
We focus on in-depth system configuration, security analysis, and software/hardware recommendations. Our site is based on technical merits, not ideologies and politics.
## ArcticFoxes.net
![ArcticFoxes.net](/images/arcticfoxes.png)
[ArcticFoxes.net](https://arcticfoxes.net) is a group of self hosted and federated services run by me. It consists of:
- [A Matrix server](https://matrix.arcticfoxes.net) using my [hardened docker image](https://github.com/tommytran732/Synapse-Docker). I also have a [web client](https://element.arcticfoxes.net) and TURN server as accessories for the Matrix server.
- [A Nitter instance](https://nitter.arcticfoxes.net)
- [A OpenVPN to ONC converter](onc.arcticfoxes.net). This is a simpel fork of [thomkeh/ovpn2onc](https://github.com/thomkeh/ovpn2onc) with a dark theme.
Most of the configurations and deployment files are available on [GitHub](https://github.com/ArcticFoxes-net).
## Pterodactyl Script
![Pterodactyl](/images/pterodactyl.png)
@ -21,6 +33,16 @@ The [Pterodactyl Script](https://github.com/tommytran732/Pterodactyl-Script) is
![Arch Linux](/images/archlinux.jpg)
The Arch Setup Script is a script that I wrote to automate my Arch Linux installation which mimics openSUSE's setup with BTRFS and Snapper. At the time, there was no other installer that does this nicely because they all use the same flat layout as recommended in the Arch Wiki. The downside of using this layout is that snapper rollback does not work properly and the user has to get into the Arch ISO to manually rollback their system. This could be solved by using the openSUSE's layout for BTRFS, and I forked Easy Arch to do just that.
The Arch Setup Script is a script that I wrote to automate my Arch Linux installation which mimics openSUSE's setup with BTRFS and Snapper. At the time, there was no other installer that does this nicely because they all use the same flat layout as recommended in the Arch Wiki. The downside of using this layout is that snapper rollback does not work properly and the user has to get into the Arch ISO to manually rollback their system. This could be solved by using the openSUSE's layout for BTRFS, and I forked Easy Arch to do just that.
Over time, I have been adding more security/privacy related settings by default (such as randomized MAC address, IPv6 Privacy, Apparmor, Kernel module blacklist, encrypted /boot). The project is still actively developed, and many of the changes I made are merged upstream as well.
Over time, I have been adding more security/privacy related settings by default (such as randomized MAC address, IPv6 Privacy, Apparmor, Kernel module blacklist, encrypted /boot). The project is still actively developed, and many of the changes I made are merged upstream as well.
## Fedora CoreOS Ignition Files
![Fedora CoreOS](/images/fedora-coreos.png)
These are sample [Butane/Ingition configuration files](https://github.com/tommytran732/Fedora-CoreOS-Ignition) that you can adapt to quickly deploy a Fedora CoreOS server with the containers of your choice.
Out of the box, you will have a set of hardened boot parameters, sysctl settings, along with a set of kernel module blacklist from Whonix's [security-misc](https://github.com/Kicksecure/security-misc/blob/master/etc/modprobe.d/30_security-misc.conf). The configurations will also give you a basic setup with Firewalld, Fail2ban, seboolean, and NTS to tighten down security.
I use these same configurations on my production servers.

View File

@ -1,14 +0,0 @@
---
title: "Services"
date: 2022-09-02
---
![ArcticFoxes](/images/arcticfoxes.png)
I run some public services that you could use:
- [ArcticFoxes.net](https://arcticfoxes.net), a small Matrix homeserver for cool nerds to hang around. Registration is open.
- My own [Gitea instance](https://git.tommytran.io). It currently is a mirror of my public repositories and a few other projects that I find interesting. Registration is closed.
I am quite busy right now, but I am looking at deploying Mastodon and PrivateBin in the near future. When the Gitea federation comes to fruition, I will consider converting my private Gitea instance into a public one under [ArcticFoxes.net](https://arcticfoxes.net) as well.

View File

@ -1,33 +0,0 @@
[build.environment]
HUGO_VERSION = "0.102.2"
[context.deploy-preview]
command = "hugo -b $DEPLOY_PRIME_URL"
[[plugins]]
package = "netlify-plugin-checklinks"
[plugins.inputs]
# An array of glob patterns for pages on your site
# Recursive traversal will start from these
entryPoints = [
"*.html",
]
# Recurse through all the links and asset references on your page, starting
# at the entrypoints
recursive = true
# Checklinks outputs TAP (https://testanything.org/tap-version-13-specification.html)
# by default. Enabling pretty mode makes the output easier on the eyes.
pretty = true
# You can mark some check as skipped, which will block checklinks
# from ever attempting to execute them.
# skipPatterns is an array of strings you can match against failing reports
skipPatterns = [
"public/index.html",
"public/about/index.html",
"public/contact/index.html",
"public/404.html",
]

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Contact: https://matrix.to/#/@tommy:arcticfoxes.net
Contact: https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2FN_McQS3F9TGoh4ER0QstUf55kGnNSd-wXfNPZ7HukcM%3D%40smp19.simplex.im%2F03zrijd3pM0hi2AG6XLiMMpxEsjEqj_5%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAx3xSpEh_hRUiGatqlRxGajqIcg6H6xc9jf-2UfeJGA4%253D%26srv%3Di53bbtoqhlc365k6kxzwdp5w3cdt433s7bwh3y32rcbml2vztiyyz5id.onion
Contact: mailto:contact@tommytran.io
Expires: 2024-11-05T00:00:00.000Z
Preferred-Languages: en-US, vi-VN
Canonical: https://tommytran.io/security.txt
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQT2xV5SweW8phRp+2fTDewmjT/rFwUCZUdsbQAKCRDTDewmjT/r
F/p+AQCX8BhWbTttVGZ8J7AAda7VBQEX06dowEHKCInIy65k9gEA8Q7zpP0gOb7h
JT39PRZj+cHFX7u9aYTABEmk1EwNogA=
=nxMV
-----END PGP SIGNATURE-----

View File

@ -1,14 +1,23 @@
/*
Strict-Transport-Security : max-age=63072000; includeSubDomains; preload
Content-Security-Policy : default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self'; style-src 'self'; frame-src https://www.youtube-nocookie.com; form-action 'none'; frame-ancestors 'none'; block-all-mixed-content; base-uri 'none'
Content-Security-Policy : default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self'; style-src 'self'; form-action 'none'; frame-ancestors 'none'; upgrade-insecure-requests; block-all-mixed-content; base-uri 'none'
X-Content-Type-Options : nosniff
Referrer-Policy : no-referrer
# Cross-Origin-Opener-Policy : same-origin
X-Frame-Options : DENY
X-XSS-Protection : 0
Permissions-Policy : accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), clipboard-read=(), display-capture=(), document-domain=(), encrypted-media=(), fullscreen=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), interest-cohort=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), sync-xhr=(), xr-spatial-tracking=()
Cross-Origin-Resource-Policy : same-origin
Expect-CT: enforce, max-age=63072000
Cross-Origin-Embedder-Policy : require-corp
# Cross-Origin-Opener-Policy : same-origin
/*.xml
Content-Security-Policy : default-src 'none'; img-src 'self' data: https://www.w3.org/; style-src 'self' 'unsafe-inline'; block-all-mixed-content; base-uri 'none'
Content-Security-Policy : default-src 'none'; img-src 'self' data: https://www.w3.org/; style-src 'self' 'unsafe-inline'; upgrade-insecure-requests; block-all-mixed-content; base-uri 'none'
/*.png
Cross-Origin-Resource-Policy : cross-origin
/*.jpg
Cross-Origin-Resource-Policy : cross-origin
/.well-known/openpgpkey/hu/*
Access-Control-Allow-Origin: *

View File

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,101 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
RfEUGQb7FolM
=DBNe
-----END PGP PUBLIC KEY BLOCK-----

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
static/images/pamac.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

1
static/sshkey Normal file
View File

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINkTKkJS7Id1WCyA5Klu/moLG9mP5hTC+v2qYqypMF1u contact@tommytran.io

View File

@ -1,2 +0,0 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDbVNnQVs6SVW1GvQQ7FE6afs08LMtTNmDIPtoT3+Aqa7I3HOZRgWpqh3kIz3OTOCs2zl5JHCJDaANvadjGFcdtSI+zy7bozpj5TJWGDnGkH3Rp2SBBRK6twjjrN9nbTJ2ihlkXEOA2e3SDFXEkwu6t0fLZelBUk3FWnbK/xPmsRUuEF90oxpXpZIPeFbE4nNK3HarNPL+XzA2xzSqrwNk9ICCJ9MS3OcnPpWIQR3LKLEgyPFKwy4K6WzQyNvr5uFAcV9Zrq9TM93HSOUdtFFXcDeAEu76cQorsgAyU7XbAPqSza780qF/kHhQ+Hb4q1Wmyk62nAu7dT86lujpzIWXOdFJZyb3WWjP21qe7bk8A1S5Q9lfto/bo0Rs2wHbBRtoxMrb8DTC3EtErjN/IXMZrqMZpj3hNiNxP3PYKXLWb6AbuWjQO5d4Tu4vv4QWKGyJwvkI55V0sI9a2lLODAK+x9z4K7cbGLFHqdEFCLkq7sDU3zd9q68//M/LQO3AO9sMpd8jHDg0xdgdfh5dP6grUDypz1h/HtXCT+w3Ka2geitqoTMv6y0WO1vT+c97mvbjf24rwoLiPe7qVPnxKTRPNRH1vhmOLeZsQva2ATXBCR/J+Xn4JzSWOt17N/s5ldvfD+d6FrYzDNw664efaXMIWCbVJtlKvas0I9iM2VYRM7Q==
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDcmfm4RKkVC02QrF6ajGVVlbO3+AiVVyfoO4jbUjNbBNarVNgOHNC2lyxo3DJG33uKg74/e6fwj2mr2qW7Bq/yefmMqZrwY6ZyBDOOnkmsaMjX3Q5dJVRvHaYDShseJEBVtALVZFPyYQhdCdCEI/pO1Oeh+bDgLFinWoKAx6Fau8ArjbCsU4WfmgTUQae8AkE5e+uj+2T7Nq195CgfWEnAcKTKEYTr+6Y5a8L/w6ugto41bXvbwWhgogMT7epkcsfSF14M5hi0kBTawmzSi6HsqnAs4PWadaN0IMtfZJ/ZdpNw2QjdDKReGc3AcvEUQU9840RgVmXLp0JT5kdHJZabYcpPaDRwTw3A/oNIEZCzOKve8j4aFrf003etUn7Vq5wchyqyRrk2KRnK61v8BOtF7REs5jw/hQ1PdbsGewhxmGQy3gJ670BS1apQDvrZVHUqIsl3SGcykBBQvLu0F5erZ3ENPAk0wb++ygBtqsoF0wV9rv+L/VEh7233/TUQbH6K2ggZg5SvQnjUA4JqnBcSPf8kMlEGCU+8yeGSF086vL3gpVF6VpvUa34Sh+RbLGtNPVcoTSa2yLwSHdU0NmA9Lj/0M3+ty+uK4pBU86zIIAmyB9NBN/TcpeR7PVi3J991EbVLZgwzAK7S/LAmE6vWLG1IoQbDDN7QCB9XWiFiaQ==

17
static/tommy.asc Normal file
View File

@ -0,0 +1,17 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZUdTmhYJKwYBBAHaRw8BAQdAhXJo1MA3p2d9ei2CS3jrGXSodpJ6srUyRtRW
m1vBhrS0IVRoaWVuIFRyYW4gPGNvbnRhY3RAdG9tbXl0cmFuLmlvPoiWBBMWCAA+
FiEE9sVeUsHlvKYUaftn0w3sJo0/6xcFAmVHU5oCGwMFCQHhM4AFCwkIBwIGFQoJ
CAsCBBYCAwECHgECF4AACgkQ0w3sJo0/6xevWAD7BXv7f/OyLJ+tTkENbxZX2TIF
TaN2UaGtR4bTuTyD6yUBALlEmA6rvjyFd9ntzFeDo6y9tbXS8OHSxLF4TUQdI5AM
uDgEZUdTmhIKKwYBBAGXVQEFAQEHQLz2RFSlF5ZHWqqMkk5PSquvhWqWFKHApVxQ
IB8+rrEuAwEIB4h+BBgWCAAmFiEE9sVeUsHlvKYUaftn0w3sJo0/6xcFAmVHU5oC
GwwFCQHhM4AACgkQ0w3sJo0/6xedZQD8CmMzBWgtsthI/uAxBt3tEj/ntKavJlek
cTXhGIjp6KMA/3IcpK5QMB4uFKQEa+tK0Yi1Yf7KvqsgRkHRCVlkJ1UMuDMEZUdT
6RYJKwYBBAHaRw8BAQdAqXDEKTuNK66FccXmi07n/QhHXA8JzrkNrOkKu3MS0wOI
fgQYFggAJhYhBPbFXlLB5bymFGn7Z9MN7CaNP+sXBQJlR1PpAhsgBQkB4TOAAAoJ
ENMN7CaNP+sXKNQA/2HM+tJuK1ND6sEYH3efBPvvwzNZMEpNf9m227vALzliAQDk
wXjHV3t6muFwV4xIMnSt1rrSa3phD8Te2YNVmjuRBA==
=lSVd
-----END PGP PUBLIC KEY BLOCK-----

1
themes/WonderMod Submodule

@ -0,0 +1 @@
Subproject commit 3e21361da7ae3b30da3d82491fce933856a1912e

View File

@ -0,0 +1,8 @@
{
"folders": [
{
"path": "."
}
],
"settings": {}
}