package Ġcom . and ry oga . safe box . ui . common Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . constraint layout . motion . widget . Motion Layout Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Notification Manager Compat Ċ import Ġandroidx . databinding . Observable Field Ċ Ċ object ĠUtils Ġ{ ĊĠĠĠ Ġfun Ġswitch Visibility ( var arg Ġviews : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġviews . forEach Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( view . visibility ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . IN VISIBLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Soft Keyboard ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġactivity . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġif Ġ( activity . current Focus Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( activity . current Focus !!. window Token , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Motion Layout Transition ( ĊĠĠĠĠĠĠĠ Ġmotion Layout : ĠMotion Layout , ĊĠĠĠĠĠĠĠ Ġend State : ĠInt , ĊĠĠĠĠĠĠĠ Ġstart State : ĠInt Ġ= Ġmotion Layout . currentState , ĊĠĠĠĠĠĠĠ Ġduration : ĠInt Ġ= Ġ 5 0 0 ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( motion Layout . currentState Ġ!= Ġend State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmotion Layout . set Transition ( start State , Ġend State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmotion Layout . set Transition Duration ( duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmotion Layout . transition ToEnd () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlongest Common Substring ( string 1 : ĠString , Ġstring 2 : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatrix Ġ= ĠArray ( string 1 . length Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt Array ( string 2 . length Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar ĠmaxLength Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġmatrix . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 1 Ġuntil Ġmatrix [ 0 ]. size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext 1 Ġ= Ġstring 1 [ i Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext 2 Ġ= Ġstring 2 [ j Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text 1 Ġ!= Ġtext 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix [ i ][ j ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix [ i ][ j ] Ġ= Ġmatrix [ i Ġ- Ġ 1 ][ j Ġ- Ġ 1 ] Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matrix [ i ][ j ] Ġ> ĠmaxLength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxLength Ġ= Ġmatrix [ i ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠmaxLength ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠThis Ġis Ġan Ġextension Ġfunction Ġto Ġget Ġobservable Ġfield Ġdata ĊĠĠĠ Ġ* ĠUse Ġit Ġonly Ġif Ġyou Ġknow Ġthat Ġdata Ġwill Ġnever Ġbe Ġnull ĊĠĠĠ Ġ* Ġinstead Ġof Ġusing Ġ!! , Ġuse Ġthis Ġutil Ġfunction */ ĊĠĠĠ Ġfun ĠObservable Field < String >. getValue OrEmpty (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . get () Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Status Notification ( context : ĠContext , Ġnotification Options : ĠNotification Options ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġa Ġchannel Ġif Ġnecessary ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe ĠNotification Channel , Ġbut Ġonly Ġon ĠAPI Ġ 2 6 + Ġbecause ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe ĠNotification Channel Ġclass Ġis Ġnew Ġand Ġnot Ġin Ġthe Ġsupport Ġlibrary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠNotification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Options . channelId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Options . channel Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Options . channel Import ance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . description Ġ= Ġnotification Options . channel Description ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġchannel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ? ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager ?. create Notification Channel ( channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġnotification ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( context , Ġnotification Options . channelId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( notification Options . notification Small Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( notification Options . notification Title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( notification Options . notification Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Compat . Big TextStyle (). big Text ( notification Options . notification Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( notification Options . notification Priority ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set V ibrate ( Long Array ( 0 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠShow Ġthe Ġnotification ĊĠĠĠĠĠĠĠ ĠNotification Manager Compat . from ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. notify ( notification Options . notification Id , Ġbuilder . build ()) ĊĠĠĠ Ġ} Ċ } Ċ