package Ġcom . j dia z can o . kota . utils Ċ Ċ import Ġcom . j dia z can o . kota . model .* Ċ import Ġcom . j dia z can o . kota . pow . IC url Ċ import Ġcom . j dia z can o . kota . pow . JC url . HASH _ LENGTH Ċ Ċ fun ĠIC url . generate Address ( seed : ĠSeed , Ġlevel : ĠSecurity Level , Ġindex : ĠInt , Ġchecksum : ĠBoolean ): ĠAddress Ġ{ ĊĠĠĠ Ġval Ġtr its Ġ= Ġseed . to Tr its () ĊĠĠĠ Ġval Ġkey Ġ= Ġtr its . key ( index , Ġlevel ) ĊĠĠĠ Ġval Ġdigest s Ġ= Ġdigest ( key , Ġlevel ) ĊĊĠĠĠ Ġval Ġaddress Array Ġ= ĠT rit Array ( HASH _ LENGTH ) ĊĠĠĠ Ġval Ġaddress Tr its Ġ= Ġreset (). ab sor b ( digest s ). squeeze ( address Array ) ĊĊĠĠĠ Ġval Ġaddress String Ġ= Ġaddress Tr its . to Try tes () ĊĊĠĠĠ Ġreturn Ġif Ġ( checksum ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Checksum ( address String ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġaddress String ĊĠĠĠ Ġ}. to Address () Ċ } Ċ Ċ internal Ġfun Ġ< T > ĠIC url . curl ( operation : Ġ() Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠ Ġreset () ĊĠĠĠ Ġreturn Ġoperation () Ċ } Ċ Ċ fun ĠIC url . add Checksum ( address : ĠString ) Ġ= Ġcurl Ġ{ ĊĠĠĠ Ġabsor b ( address . to Tr its ()) ĊĠĠĠ Ġval Ġchecksum Tr its Ġ= ĠT rit Array ( HASH _ LENGTH ) ĊĠĠĠ Ġs queeze ( checksum Tr its ) ĊĊĠĠĠ Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ( address ) ĊĠĠĠĠĠĠĠ Ġappend ( checksum Tr its . to Try tes (). substring ( 7 2 , Ġ 8 1 )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠIC url . digest ( key : ĠT rit Array , Ġlevel : ĠSecurity Level ): ĠT rit Array Ġ{ ĊĠĠĠ Ġval Ġdigest s Ġ= ĠT rit Array ( level Ġ* ĠHASH _ LENGTH _ TR ITS ) ĊĠĠĠ Ġval Ġkey Fragment Ġ= ĠT rit Array ( KEY _ LENGTH ) ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlevel ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( key , Ġi Ġ* ĠKEY _ LENGTH , Ġkey Fragment , Ġ 0 , ĠKEY _ LENGTH ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġ 2 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġ 0 Ġuntil Ġ 2 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ab sor b ( key Fragment , Ġj Ġ* ĠHASH _ LENGTH , ĠHASH _ LENGTH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. squeeze ( key Fragment , Ġj Ġ* ĠHASH _ LENGTH , ĠHASH _ LENGTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcurl Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabsor b ( key Fragment , Ġ 0 , Ġkey Fragment . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs queeze ( digest s , Ġi Ġ* ĠHASH _ LENGTH , ĠHASH _ LENGTH ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġdigest s Ċ }