Возможно баги (как всегда), но вроде проходится)
Я пожалуй подожду версию с правками.