package Ġcom . al vin h kh . bu set a Ċ Ċ import Ġandroid . app . Application Ċ Ċ import Ġandroidx . multi dex . Multi Dex Ċ import Ġandroidx . preference . Preference Manager Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ Ċ import Ġcom . al vin h kh . bu set a . utils . Night Mode Util Ċ /* import Ġcom . crash ly t ics . android . Crash ly t ics Ċ import Ġcom . crash ly t ics . android . answers . Answers Ċ import Ġcom . crash ly t ics . android . core . Crash ly t ics Core Ċ import Ġcom . google . firebase . analytics . Firebase Analytics Ċ import Ġcom . google . firebase . remote config . Firebase Remote Config Ċ import Ġcom . google . firebase . remote config . Firebase Remote Config Settings Ċ Ċ import Ġio . fabric . sdk . android . Fabric */ Ċ import Ġorg . os md roid . config . Configuration Ċ Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġtim ber . log . Tim ber Ċ Ċ import Ġokhttp 3 . tls . Handshake Certificates Ċ import Ġjava . security . cert . X 5 0 9 Certificate Ċ Ċ import Ġjava . security . cert . Certificate Factory Ċ Ċ import Ġokhttp 3 . logging . Http Logging Interceptor ĊĊ Ċ class ĠApp Ġ: ĠApplication () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġbuilder . add Network Interceptor ( UserAgent Interceptor ()) ĊĠĠĠĠĠĠĠ ĠhttpClient Ġ= Ġbuilder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 2 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 2 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 4 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġbuilder 2 Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġbuilder 2 . add Network Interceptor ( UserAgent Interceptor ()) ĊĠĠĠĠĠĠĠ ĠhttpClient 2 Ġ= Ġbuilder 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 2 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 2 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 4 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġ// ĠK MB ĠE TA Ġclient ĊĊĠĠĠĠĠĠĠ Ġval Ġam Ġ= Ġassets ĊĊĠĠĠĠĠĠĠ Ġ// ĠInter mediate Ġcert Ġis Ġmissing Ġin Ġk mb Ġserver Ġso Ġwe Ġneed Ġto Ġload Ġit Ġfor Ġverification ĊĠĠĠĠĠĠĠ Ġval Ġintermediate Cert Ġ= Ġam . open (" g dig 2 crt . pem "). use { Ġin Stream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcf Ġ= ĠCertificate Factory . getInstance (" X . 5 0 9 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcf . generate Certificate ( in Stream ) Ġas ĠX 5 0 9 Certificate ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcertificates Ġ= ĠHand shake Certificates . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Trusted Certificate ( intermediate Cert ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Platform Trusted Certificates () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġlogging Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġlogging . level Ġ= ĠHttp Logging Interceptor . Level . NONE ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder 3 Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġbuilder 3 . add Network Interceptor ( UserAgent Interceptor ()). add Interceptor ( logging ) ĊĊĠĠĠĠĠĠĠ ĠhttpClient 3 Ġ= Ġbuilder 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ssl Socket Factory ( certificates . ssl Socket Factory (), Ġcertificates . trust Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 1 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 1 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 2 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġ// val Ġcrash ly t ics Ġ= ĠCrash ly t ics . Builder () ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ. core ( Crash ly t ics Core . Builder (). disabled ( Build Config . DEBUG ). build ()) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ// val Ġfabric Ġ= ĠFabric . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ. k its ( crash ly t ics , ĠAn swers ()) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ. debug gable ( Build Config . DEBUG ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ// Fabric . with ( fabric ) ĊĠĠĠĠĠĠĠ ĠTim ber . plant ( Tim ber . Debug Tree ()) ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . plant ( Tim ber . Debug Tree ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . plant ( Crash ly t ics Tree ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Analytics . getInstance ( this ). set Analytics Collection Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠNight Mode Util . update ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġuser Ġagent Ġto Ġprevent Ġgetting Ġb anned Ġfrom Ġthe Ġo sm Ġservers ĊĠĠĠĠĠĠĠ ĠConfiguration . getInstance (). load ( this , ĠPreference Manager . getDefault SharedPreferences ( this )) ĊĊĠĠĠĠĠĠĠ Ġ/* Ġvar Ġcache Expiration Ġ= Ġ 3 6 0 0 L ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache Expiration Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfirebase Remote Config Ġ= ĠFirebase Remote Config . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġconfig Settings Ġ= ĠFirebase Remote Config Settings . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMinimum Fetch Interval InSeconds ( cache Expiration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġfirebase Remote Config . set Config Settings Async ( config Settings ) ĊĠĠĠĠĠĠĠ Ġfirebase Remote Config . set Defaults Async ( R . xml . remote _ config _ defaults ) ĊĠĠĠĠĠĠĠ Ġfirebase Remote Config . fetch ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAfter Ġconfig Ġdata Ġis Ġsuccessfully Ġfetched , Ġit Ġmust Ġbe Ġactivated Ġbefore Ġnewly Ġfetched ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġvalues Ġare Ġreturned . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirebase Remote Config . activate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattach Base Context ( base : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . attach Base Context ( base ) ĊĠĠĠĠĠĠĠ ĠMulti Dex . install ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* private Ġclass ĠCrash ly t ics Tree Ġ: ĠTim ber . Tree () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlog ( priority : ĠInt , Ġtag : ĠString ?, Ġmessage : ĠString , Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( priority Ġ== ĠLog . VERBOSE Ġ|| Ġpriority Ġ== ĠLog . DEBUG ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( message )) ĠCrash ly t ics . log ( priority , Ġtag , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t Ġ!= Ġnull ) ĠCrash ly t ics . log Exception ( t ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlateinit Ġvar ĠhttpClient : ĠOk HttpClient ĊĊĠĠĠĠĠĠĠ Ġlateinit Ġvar ĠhttpClient 2 : ĠOk HttpClient ĊĊĠĠĠĠĠĠĠ Ġlateinit Ġvar ĠhttpClient 3 : ĠOk HttpClient ĊĠĠĠ Ġ} Ċ }