package Ġcom . ab t asty . flag ship qa . ui . mod ifications Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . ab t asty . flag ship . main . Flag ship Ċ import Ġcom . ab t asty . flag ship . model . Modification Ċ import Ġcom . ab t asty . flag ship qa . R Ċ import Ġorg . json . JSONObject Ċ import Ġjava . lang . Exception Ċ import Ġjava . lang . Number FormatException Ċ import Ġkotlin . reflect . K Property 1 Ċ Ċ class ĠMod ification ViewModel ( val Ġapp Context : ĠApplication ) Ġ: ĠAndroid ViewModel ( app Context ) Ġ{ ĊĊĊĠĠĠ Ġvar Ġtypes Ġ= Ġarray ListOf < String >(" Boolean ", Ġ" String ", Ġ" Number ", Ġ" Json ") ĊĠĠĠ Ġvar Ġmodifications Ġ= ĠMutable LiveData < String >(). apply Ġ{ Ġthis . value Ġ= Ġ" {\ n \ n }" Ġ} ĊĠĠĠ Ġvar Ġvalue Ġ= ĠMutable LiveData < Any >(). apply Ġ{ Ġthis . value Ġ= Ġ"" Ġ} ĊĠĠĠ Ġvar Ġinfo Ġ= ĠMutable LiveData < JSONObject >(). apply Ġ{ Ġthis . value Ġ= ĠJSONObject () Ġ} ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġload Modification () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< R > Ġread Instance Property ( instance : ĠAny , ĠpropertyName : ĠString ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperty Ġ= Ġinstance :: class . members ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġit . name Ġ== ĠpropertyName Ġ} Ġas ĠK Property 1 < Any , Ġ*> ĊĠĠĠĠĠĠĠ Ġreturn Ġproperty . get ( instance ) Ġas ĠR ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Modification () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvisitor Modification Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Instance Property < HashMap < String , ĠMod ification >>( Flag ship . Companion , Ġ" mod ifications ") ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJSONObject ("{} ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġvisitor Modification ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson . put ( e . key , Ġe . value . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmodifications . value Ġ= Ġjson . toString ( 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Modification ( key : ĠString , Ġdefault : ĠString , Ġtype : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue . value Ġ= Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" String " Ġ-> ĠFlag ship . get Modification ( key , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Boolean " Ġ-> ĠFlag ship . get Modification ( key , Ġdefault . toLowerCase (). to Boolean ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Number " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlag ship . get Modification ( key , Ġdefault . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlag ship . get Modification ( key , Ġdefault . toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlag ship . get Modification ( key , Ġdefault . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlag ship . get Modification ( key , Ġdefault . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" Json " Ġ-> Ġ{ Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlag ship . get Modification () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" unknown " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinfo . value Ġ= ĠFlag ship . get Modification Info ( key ) Ġ?: ĠJSONObject () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġactivate ( key Ġ: ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFlag ship . activate Modification ( key ) ĊĠĠĠĠĠĠĠ ĠToast . makeText ( app Context , Ġ" Activation Ġsent ", ĠToast . LENGTH _ SHORT ). show (); ĊĠĠĠ Ġ} Ċ }