package Ġfirebase . lazy config Ċ Ċ import Ġcom . google . firebase . remote config . Firebase Remote Config Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ private Ġfun Ġvalue NotFound ( id : ĠString , Ġdesc : ĠK Property < *> ): ĠNothing Ġ= ĊĠĠĠ Ġnot Found (" Value ", Ġid , Ġdesc ) Ċ private Ġfun ĠbyteArray NotFound ( id : ĠString , Ġdesc : ĠK Property < *> ): ĠNothing Ġ= ĊĠĠĠ Ġnot Found (" ByteArray ", Ġid , Ġdesc ) Ċ private Ġfun Ġlong NotFound ( id : ĠString , Ġdesc : ĠK Property < *> ): ĠNothing Ġ= ĊĠĠĠ Ġnot Found (" Long ", Ġid , Ġdesc ) Ċ private Ġfun Ġint NotFound ( id : ĠString , Ġdesc : ĠK Property < *> ): ĠNothing Ġ= ĊĠĠĠ Ġnot Found (" Integer ", Ġid , Ġdesc ) Ċ private Ġfun Ġdouble NotFound ( id : ĠString , Ġdesc : ĠK Property < *> ): ĠNothing Ġ= ĊĠĠĠ Ġnot Found (" Double ", Ġid , Ġdesc ) Ċ private Ġfun Ġstring NotFound ( id : ĠString , Ġdesc : ĠK Property < *> ): ĠNothing Ġ= ĊĠĠĠ Ġnot Found (" String ", Ġid , Ġdesc ) Ċ private Ġfun Ġboolean NotFound ( id : ĠString , Ġdesc : ĠK Property < *> ): ĠNothing Ġ= ĊĠĠĠ Ġnot Found (" Boolean ", Ġid , Ġdesc ) Ċ private Ġfun Ġnot Found ( type : String , Ġid : ĠString , Ġdesc : ĠK Property < *> ): ĠNothing Ġ= ĊĠĠĠ Ġthrow ĠIllegalStateException ("$ type ĠID Ġ$ id Ġfor Ġ'${ desc . name }' Ġnot Ġfound .") Ċ Ċ fun Ġ< T > Ġfirebase Value ( id : ĠString ) ĊĠĠĠ Ġ= ĠLazy Ġ{ Ġt : ĠT , Ġdesc Ġ-> ĠFirebase Remote Config . getInstance (). getValue ( id ) Ġ?: Ġvalue NotFound ( id , Ġdesc ) Ġ} Ċ Ċ fun Ġ< T > Ġfirebase ByteArray ( id : ĠString ) ĊĠĠĠĠĠĠĠ Ġ= ĠLazy Ġ{ Ġt : ĠT , Ġdesc Ġ-> ĠFirebase Remote Config . getInstance (). get ByteArray ( id ) Ġ?: ĠbyteArray NotFound ( id , Ġdesc ) Ġ} Ċ Ċ fun Ġ< T > Ġfirebase Long ( id : ĠString ) ĊĠĠĠ Ġ= ĠLazy Ġ{ Ġt : ĠT , Ġdesc Ġ-> ĠFirebase Remote Config . getInstance (). getLong ( id ) Ġ?: Ġlong NotFound ( id , Ġdesc ) Ġ} Ċ Ċ fun Ġ< T > Ġfirebase Double ( id : ĠString ) ĊĠĠĠ Ġ= ĠLazy Ġ{ Ġt : ĠT , Ġdesc Ġ-> ĠFirebase Remote Config . getInstance (). getDouble ( id ) Ġ?: Ġdouble NotFound ( id , Ġdesc ) Ġ} Ċ Ċ fun Ġ< T > Ġfirebase String ( id : ĠString ) ĊĠĠĠ Ġ= ĠLazy Ġ{ Ġt : ĠT , Ġdesc Ġ-> ĠFirebase Remote Config . getInstance (). getString ( id ) Ġ?: Ġstring NotFound ( id , Ġdesc ) Ġ} Ċ Ċ fun Ġ< T > Ġfirebase Boolean ( id : ĠString ) ĊĠĠĠ Ġ= ĠLazy Ġ{ Ġt : ĠT , Ġdesc Ġ-> ĠFirebase Remote Config . getInstance (). getBoolean ( id ) Ġ?: Ġboolean NotFound ( id , Ġdesc ) Ġ} Ċ Ċ // ĠLike ĠKotlin 's Ġlazy Ġdelegate Ġbut Ġthe Ġinitializer Ġgets Ġthe Ġtarget Ġand Ġmetadata Ġpassed Ġto Ġit Ċ class ĠLazy < T , ĠV >( private Ġval Ġinitializer : Ġ( T , ĠK Property <* >) Ġ-> ĠV ) Ġ: ĠReadOnly Property < T , ĠV > Ġ{ ĊĠ Ġprivate Ġobject ĠEMPTY ĊĠ Ġprivate Ġvar Ġvalue : ĠAny ? Ġ= ĠEMPTY ĊĊĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠT , Ġproperty : ĠK Property < *> ): ĠV Ġ{ ĊĠĠĠ Ġif Ġ( value Ġ== ĠEMPTY ) Ġ{ ĊĠĠĠĠĠ Ġvalue Ġ= Ġinitializer ( this Ref , Ġproperty ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġreturn Ġvalue Ġas ĠV ĊĠ Ġ} Ċ } Ċ