package Ġedu . corn ell . cs . apl . vi ad uct . backend . IO Ċ Ċ import Ġedu . corn ell . cs . apl . vi ad uct . syntax . values . Integer Value Ċ import Ġedu . corn ell . cs . apl . vi ad uct . syntax . values . Value Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġmu . Kotlin Logging Ċ import Ġjava . util . Scanner Ċ Ċ private Ġvar Ġlogger Ġ= ĠKotlin Logging . logger (" Terminal IO ") Ċ Ċ class ĠTerminal IO Ġ: ĠStrategy Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġstdin Scanner : ĠScanner Ġ= ĠScanner ( System .` in `) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Input (): ĠValue Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġsupport Ġb ooleans Ġas Ġwell ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Input : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInteger Value ( stdin Scanner . nextInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġrecv Output ( value : ĠValue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" output Ġ$ value " Ġ} ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ Ġprintln ( value ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ