By Bramus! — @bramus — https://www.bram.us/

Modified by Nikita Dubko — @dark_mefody

Source Code — Explanatory Blogpost