package Ġcom . zz zl . smart card Ċ Ċ import Ġandroid . os . Build Ċ import Ġcom . zz zl . smart card . core .* Ċ import Ġcom . zz zl . smart card . entity . Card Result Ċ import Ġcom . zz zl . smart card . entity . Command Ap du Ċ import Ġcom . zz zl . smart card . utils . Log Util Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ Ċ object ĠSmart Card : ĠIS mart Card { ĊĊĠĠĠ Ġprivate Ġval Ġsmart Card : ĠIS mart Card Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSE Service Google () ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSE Service SIM al liance () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( command : ĠString , Ġtarget SW : ĠString ): ĠCard Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcard Result : ĠCard Result ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Result Ġ= Ġsmart Card . execute ( command , target SW ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcard Result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( commands : ĠList < Command Ap du >): ĠList < Card Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcard Result : ĠList < Card Result > ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Result Ġ= Ġsmart Card . execute ( commands ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcard Result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute With Channel Opened ( command : ĠString , Ġtarget SW : ĠString ): ĠCard Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcard Result : ĠCard Result ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Result Ġ= Ġsmart Card . execute With Channel Opened ( command , target SW ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcard Result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute With Channel Opened ( commands : ĠList < Command Ap du >): ĠList < Card Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcard Result : ĠList < Card Result > ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Result Ġ= Ġsmart Card . execute With Channel Opened ( commands ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcard Result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose Channel () Ġ{ ĊĠĠĠĠĠĠĠ Ġsmart Card . close Channel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose Service () Ġ{ ĊĠĠĠĠĠĠĠ Ġsmart Card . close Service () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchange Reader Type ( reader Type : ĠReader Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsmart Card . change Reader Type ( reader Type ) ĊĠĠĠ Ġ} Ċ Ċ }