@ file : Suppress (" VARIABLE _ IN _ SINGLE TON _ WITHOUT _ THREAD _ LOCAL ") Ċ Ċ package Ġcom . ion spin . kotlin . crypto Ċ Ċ import Ġlibs odium . s odium _ init Ċ import Ġkotlin . native . concurrent . Atomic Int Ċ Ċ actual Ġobject ĠLib s odium Initializer Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġis Platform Initialized Ġ: ĠAtomic Int Ġ= ĠAtomic Int ( 0 ) ĊĊĠĠĠ Ġactual Ġsuspend Ġfun Ġinitialize () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Platform Initialized . compare AndSet ( 0 , Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs odium _ init () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġfun Ġinitialize With Callback ( done : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Platform Initialized . compare AndSet ( 0 , Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs odium _ init () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdone () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġfun Ġis Initialized (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Platform Initialized . value Ġ!= Ġ 0 ĊĠĠĠ Ġ} Ċ } Ċ