package Ġcz . pe k ost udio . ui utils Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠL uk as ĠU rb ane k Ġon Ġ 2 4 / 0 4 / 2 0 2 0 . Ċ Ġ*/ Ċ Ċ fun Ġrun Delayed ( duration : ĠLong , Ġon Ui Thread : ĠBoolean Ġ= Ġtrue , Ġblock : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġ( if Ġ( on Ui Thread ) ĠHandler ( Looper . get Main Looper ()) Ġelse ĠHandler ()). post Delayed ({ ĊĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠ Ġ}, Ġduration ) Ċ } Ċ Ċ fun Ġrun On Ui Thread ( block : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Ġ{ ĊĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< T , ĠR > ĠT . run If ( condition : ĠBoolean , Ġblock : ĠT . () Ġ-> ĠR ): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( condition ) Ġblock () Ġelse Ġnull Ċ } Ċ Ċ inline Ġfun Ġ< T , ĠR > ĠT . let If ( condition : ĠBoolean , Ġblock : Ġ( T ) Ġ-> ĠR ): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( condition ) Ġblock ( this ) Ġelse Ġnull Ċ } Ċ Ċ inline Ġfun Ġ< T > ĠT . apply If ( condition : ĠBoolean , Ġblock : ĠT . () Ġ-> ĠUnit ): ĠT Ġ{ ĊĠĠĠ Ġif Ġ( condition ) Ġblock () ĊĠĠĠ Ġreturn Ġthis Ċ } Ċ Ċ inline Ġfun Ġ< T > ĠT . also If ( condition : ĠBoolean , Ġblock : Ġ( T ) Ġ-> ĠUnit ): ĠT Ġ{ ĊĠĠĠ Ġif Ġ( condition ) Ġblock ( this ) ĊĠĠĠ Ġreturn Ġthis Ċ }