package Ġpw . bin om . base 6 4 čĊč Ċ import Ġpw . bin om . ByteBuffer č Ċ import Ġpw . bin om . Input č Ċ import Ġpw . bin om . io . Reader č Ċ import Ġkotlin . experimental . or čĊč Ċ class ĠBase 6 4 Decode Input ( val Ġreader : ĠReader ) Ġ: ĠInput Ġ{ čĊĠĠĠ Ġprivate Ġvar Ġcounter Ġ= Ġ 0 čĊĠĠĠ Ġprivate Ġvar Ġvalue Ġ= Ġ 0 . to Byte () čĊčĊĠĠĠ Ġprivate Ġvar Ġbuffer Ġ= ĠChar Array ( 3 2 ) čĊĠĠĠ Ġprivate Ġvar Ġcursor Ġ= Ġbuffer . size čĊĠĠĠ Ġprivate Ġvar Ġlen Ġ= Ġbuffer . size čĊčĊĠĠĠ Ġprivate Ġfun Ġget Char (): ĠChar ? Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ>= Ġlen ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġlen Ġ= Ġreader . read ( buffer ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( len Ġ== Ġ 0 ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġ 0 čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġbuffer [ cursor ++] čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġread ( dest : ĠByteBuffer ): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġdest . remaining čĊčĊĠĠĠĠĠĠĠ Ġwhile Ġ( dest . remaining Ġ> Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġget Char () Ġ?: Ġbreak čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== Ġ'= ') Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter ++ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġchar From Base 6 4 ( c ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( counter ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġthis . value Ġor Ġ( value Ġshl Ġ 2 ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwrite Ġ= Ġthis . value Ġor Ġ( value Ġshr Ġ 4 ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest . put ( write ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue Ġshl Ġ 4 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwrite Ġ= Ġthis . value Ġor Ġ( value Ġshr Ġ 2 ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest . put ( write ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue Ġshl Ġ 6 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwrite Ġ= Ġthis . value Ġor Ġ( value ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest . put ( write ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġ 0 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter ++ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( counter Ġ== Ġ 4 ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ= Ġ 0 čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġlength Ġ- Ġdest . remaining čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ čĊĠĠĠĠĠĠĠ Ġ// Do Ġnothing čĊĠĠĠ Ġ} čĊč Ċ }