package Ġtransp osition Ċ Ċ import Ġjava . lang . Index OutOfBoundsException Ċ Ċ object ĠR ail Fence Ġ{ ĊĊĠĠĠ Ġfun Ġen cipher ( plain Text : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupper Case Text Ġ= Ġplain Text . toUpperCase () ĊĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġupper Case Text . toCharArray () ĊĠĠĠĠĠĠĠ Ġval ĠoutputStream 1 Ġ= Ġmutable ListOf < Char >() ĊĠĠĠĠĠĠĠ Ġval ĠoutputStream 2 Ġ= Ġmutable ListOf < Char >() ĊĠĠĠĠĠĠĠ ĠinputStream . forEach Indexed Ġ{ Ġindex , Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( index Ġ% Ġ 2 ) Ġ== Ġ 0 ) ĠoutputStream 1 . add ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠoutputStream 2 . add ( c ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠoutputStream Ġ= ĠoutputStream 1 Ġ+ ĠoutputStream 2 ĊĠĠĠĠĠĠĠ Ġreturn ĠoutputStream . join ToString ("") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdec ipher ( cipher Text : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcipher Length Ġ= Ġcipher Text . length ĊĠĠĠĠĠĠĠ Ġval Ġupper Case Text Ġ= Ġcipher Text . toUpperCase () ĊĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġupper Case Text . toCharArray () ĊĠĠĠĠĠĠĠ Ġval ĠoutputStream Ġ= Ġmutable ListOf < Char >() ĊĠĠĠĠĠĠĠ Ġval Ġmid Point Ġ= Ġwhen Ġ( cipher Length Ġ% Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ( cipher Length ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ( cipher Length Ġ+ Ġ 1 ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġmid Point ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . add ( inputStream [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . add ( inputStream [ index Ġ+ Ġmid Point ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIndex OutOfBoundsException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIgnore ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠoutputStream . join ToString ("") ĊĠĠĠ Ġ} Ċ }