Можешь объяснить, в чём заключается назначение `viewModelScope` в Kotlin и как он управляет жизненным циклом корутин в связи с жизненным циклом ViewModel? — ДейлиПреп