https://drive.google.com/file/d/1PUvF9CefD5HKaNrm-PLeHYOt1VTA5_pf/view?usp=drivesdk
Can be optimized a lot more.