Author Real name: Dario Vuksan
Author Username: musava_ribica
Author Email: darac@ribica.dev
Python version: 3.9, 3.10, 3.11
OS: (tested on Windows, should work everywhere)


The original source code is in `original.py`, and processed using a custom obfuscator I wrote in late 2022. The way obfuscation works is that it turns the
code into virtual machine bytecode and ships the VM itself in the output file, so it operates on the source code level, but doesn't include any parts of
the original source in the output. That output is step1.py. I have decided to keep original variable names, it's already obfuscated enough to hide the
control flow. I went a step further and obfuscated step1.py into step2.py. I've also included obfuscated version of it (it's minified using python-minifier
library, and some fake functions are included) in step2obf.py (they are essentially the same files). The original code isn't anything special, it just
proves the functionality of double virtualization. The third virtual machine is the Python VM itself, that's why I called it "ThreefoldVM"

## Judges' Notes

Tallest house of cards.

It's VMs all the way down. Main point of interest is the byte-code conversion from Python to the bespoke VM provided here.
