package Ġpl . cd br . epic . model Ċ Ċ import Ġcom . fasterxml . jackson . core . Json Generator Ċ import Ġcom . fasterxml . jackson . core . Json Parser Ċ import Ġcom . fasterxml . jackson . core . type . Type Reference Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Context Ċ import Ġcom . fasterxml . jackson . databind . Json Deserializer Ċ import Ġcom . fasterxml . jackson . databind . Json Serializer Ċ import Ġcom . fasterxml . jackson . databind . Serializer Provider Ċ import Ġcom . fasterxml . jackson . databind . annotation . Json Deserialize Ċ import Ġcom . fasterxml . jackson . databind . annotation . Json Serialize Ċ import Ġcom . fasterxml . jackson . module . kotlin . jackson Type Ref Ċ import Ġkotlin . reflect . full . create Instance Ċ Ċ @ Json Deserialize ( using Ġ= ĠPackage Deserializer :: class ) Ċ data Ġclass ĠPackage ( val Ġname : ĠString ) Ċ Ċ class ĠPackage Deserializer Ġ: ĠJson Deserializer < Package >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( p : ĠJson Parser , Ġctxt : ĠDeserial ization Context ): ĠPackage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpack Ġ= Ġp . readValue As < Map < String , ĠString >>( jackson Type Ref < Map < String , ĠString >> ()) ĊĠĠĠĠĠĠĠ Ġreturn ĠPack ager . of ( pack [" name "] Ġ?: Ġ" none ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠPack ager Ġ{ ĊĠĠĠ Ġprivate Ġval Ġinitial Ġ= ĠlistOf (" DIP - 4 ", Ġ" DIP - 8 ", Ġ" DIP - 1 0 ", Ġ" DIP - 1 2 ", Ġ" DIP - 1 4 ", Ġ" DIP - 1 6 ", Ġ" DIP - 1 8 ", Ġ" DIP - 2 0 ", Ġ" TO - 9 2 ", Ġ" TO - 2 2 0 ") ĊĊĠĠĠ Ġval Ġpack s Ġ= Ġmutable ListOf < Package >() ĊĊĠĠĠ Ġfun Ġinitial Data () Ġ= Ġinitial . map (:: Package ) ĊĊĠĠĠ Ġfun Ġof ( name : ĠString ): ĠPackage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġpack s . find Ġ{ Ġit . name Ġ== Ġname Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( p Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew P Ġ= ĠPackage ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpack s Ġ+= Ġnew P ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew P ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload ( packages : ĠCollection < Package >) Ġ{ ĊĠĠĠĠĠĠĠ Ġpackages . forEach Ġ{ Ġof ( it . name ) Ġ} ĊĠĠĠ Ġ} Ċ }