/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠNam hy un , ĠGu Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġio . github . nam hy un gu . keymap . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . location . Location Ċ import Ġandroid . util . Typed Value Ċ import Ġandroidx . activity . Component Activity Ċ import Ġandroidx . annotation . Attr Res Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġcom . firebase . ge of ire . Geo Fire Utils Ċ import Ġcom . firebase . ge of ire . Geo Location Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcom . google . firebase . firestore . Document Reference Ċ import Ġcom . google . firebase . firestore . Document Snapshot Ċ import Ġcom . google . firebase . firestore . Query Ċ import Ġcom . google . firebase . firestore . Query Snapshot Ċ import Ġcom . na ver . maps . map . Map Fragment Ċ import Ġcom . na ver . maps . map . N aver Map Ċ import Ġkotlinx . coroutines . C ancellable Continuation Ċ import Ġkotlinx . coroutines . Completion Handler Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . channels . await Close Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . callback Flow Ċ import Ġkotlinx . coroutines . suspend C ancellable Coroutine Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Callback Ċ import Ġokhttp 3 . Response Ċ import Ġjava . io . IOException Ċ import Ġkotlin . coroutines . resume Ċ import Ġkotlin . coroutines . resume With Exception Ċ import Ġkotlin . coroutines . suspend Coroutine Ċ Ċ @ Opt In ( Experimental Cor outines Api :: class ) Ċ fun ĠQuery . as Flow (): ĠFlow < Query Snapshot ?> Ġ{ ĊĠĠĠ Ġreturn Ġcallback Flow Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Snapshot Listener Ġ{ Ġsnapshot , Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( snapshot ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġawait Close Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNo - op ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Experimental Cor outines Api :: class ) Ċ fun ĠDocument Reference . as Flow (): ĠFlow < Document Snapshot ?> Ġ{ ĊĠĠĠ Ġreturn Ġcallback Flow Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Snapshot Listener Ġ{ Ġsnapshot , Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( snapshot ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġawait Close Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNo - op ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ suspend Ġfun Ġ< R > ĠTask < R >. await (): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġsuspend Coroutine Ġ{ Ġcont Ġ-> ĊĠĠĠĠĠĠĠ Ġadd On Success Listener Ġ{ Ġcont . resume ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġadd On Failure Listener Ġ{ Ġe Ġ-> Ġcont . resume With Exception ( e ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ suspend Ġinline Ġfun ĠCall . await (): ĠResponse Ġ{ ĊĠĠĠ Ġreturn Ġsuspend C ancellable Coroutine Ġ{ Ġcontinuation Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= ĠContinu ation Callback ( this , Ġcontinuation ) ĊĠĠĠĠĠĠĠ Ġenqueue ( callback ) ĊĠĠĠĠĠĠĠ Ġcontinuation . invoke On Cancellation ( callback ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠContinu ation Callback ( ĊĠĠĠ Ġprivate Ġval Ġcall : ĠCall , ĊĠĠĠ Ġprivate Ġval Ġcontinuation : ĠC ancellable Continuation < Response >, Ċ ) Ġ: ĠCallback , ĠCompletion Handler Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontinuation . resume ( response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! call . is Canceled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinuation . resume With Exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( cause : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . cancel () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ(_ : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ suspend Ġfun ĠMap Fragment . await Map (): ĠN aver Map Ġ{ ĊĠĠĠ Ġreturn Ġsuspend Coroutine Ġ{ Ġcont Ġ-> ĊĠĠĠĠĠĠĠ Ġget Map Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcont . resume ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠContext . getColor From Attr (@ Attr Res Ġattr : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġtyped Value Ġ= ĠTyped Value () ĊĠĠĠ Ġtheme . resolve Attribute ( attr , Ġtyped Value , Ġtrue ) ĊĠĠĠ Ġreturn Ġtyped Value . data Ċ } Ċ Ċ fun ĠComponent Activity . check Self Permissions ( permissions : ĠList < String >): ĠBoolean Ġ{ ĊĠĠĠ Ġpermissions . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , Ġit ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ fun ĠLocation . to Geo hash (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠGeo Fire Utils . get Geo Hash For Location ( Geo Location ( latitude , Ġlongitude )) Ċ }