package Ġio . horizontal systems . bank wallet . core . managers Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġio . horizontal systems . bank wallet . core . IL ocal Storage Ċ import Ġio . horizontal systems . bank wallet . core . IT or Manager Ċ import Ġio . horizontal systems . tor . Connection Status Ċ import Ġio . horizontal systems . tor . Tor Ċ import Ġio . horizontal systems . tor . Tor Kit Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ Ċ class ĠTor Manager ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġval ĠlocalStorage : ĠI LocalStorage ) ĊĠĠĠ Ġ: ĠIT or Manager Ġ{ ĊĊĠĠĠ Ġinterface ĠListener { ĊĠĠĠĠĠĠĠ Ġfun Ġon Status Change ( tor Status : ĠTor Status ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġtor Observable Ġ= ĠBehavior Subject . create < Tor Status >() ĊĠĠĠ Ġoverride Ġval Ġis Tor Notification Enabled : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġkit . is Notification Enabled ĊĊĠĠĠ Ġprivate Ġval Ġdis pos ables Ġ= ĠComposite Disposable () ĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġkit : ĠTor Kit Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTor Kit ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( localStorage . tor Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis pos ables . add ( kit . tor Info Subject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Status Change ( getStatus ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtor Observable . onNext ( getStatus ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Tor Manager ", Ġ" Tor Ġexception ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġkit . start Tor ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop (): ĠSingle < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġkit . stop Tor () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenable Tor () Ġ{ ĊĠĠĠĠĠĠĠ ĠlocalStorage . tor Enabled Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisable Tor () Ġ{ ĊĠĠĠĠĠĠĠ ĠlocalStorage . tor Enabled Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Listener ( listener : ĠListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġis Tor Enabled : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠlocalStorage . tor Enabled ĊĊĠĠĠ Ġprivate Ġfun ĠgetStatus ( tor info : ĠTor . Info ): ĠTor Status Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( tor info . connection . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Status . CONNECTED Ġ-> Tor Status . Connected ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Status . CONNECT ING Ġ-> Tor Status . Connecting ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Status . CLOSED Ġ-> Tor Status . Closed ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Status . FAILED Ġ-> Tor Status . Failed ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ enum Ġclass ĠTor Status ( val Ġvalue : ĠString ) Ġ{ ĊĠĠĠ ĠConnected (" Connected "), ĊĠĠĠ ĠConnect ing (" Connecting "), ĊĠĠĠ ĠClosed (" Closed "), ĊĠĠĠ ĠFailed (" Failed "); Ċ } Ċ