package Ġcom . hi enn v . flutter _ call kit _ incoming Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroidx . annotation . Nullable Ċ Ċ import Ġio . flutter . embedding . engine . plugins . Flutter Plugin Ċ import Ġio . flutter . embedding . engine . plugins . activity . Activity Aware Ċ import Ġio . flutter . embedding . engine . plugins . activity . Activity Plugin Binding Ċ import Ġio . flutter . plugin . common . Event Channel Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . plugin . common . Method Channel . Result Ċ Ċ /** ĠFlutter Call kit Incoming Plugin Ġ*/ Ċ class ĠFlutter Call kit Incoming Plugin Ġ: ĠFlutter Plugin , ĠMethod Call Handler , ĠActivity Aware Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Static Field Leak ") ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠFlutter Call kit Incoming Plugin ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġpublic Ġfun ĠgetInstance (): ĠFlutter Call kit Incoming Plugin Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( instance Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠFlutter Call kit Incoming Plugin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġevent Handler Ġ= ĠEvent Callback Handler () ĊĊĠĠĠĠĠĠĠ Ġfun Ġsend Event ( event : ĠString , Ġbody : ĠMap < String , ĠAny >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Handler . send ( event , Ġbody ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshare Plugin With Register (@ NonNull Ġflutter Plugin Binding : ĠFlutter Plugin . Flutter Plugin Binding , Ġ@ Nullable Ġhandler : ĠMethod Call Handler ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠFlutter Call kit Incoming Plugin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance !!. context Ġ= Ġflutter Plugin Binding . application Context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance !!. call kit Notification Manager Ġ= ĠCall kit Notification Manager ( flutter Plugin Binding . application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance !!. channel Ġ= ĠMethod Channel ( flutter Plugin Binding . binary Messenger , Ġ" flutter _ call kit _ incoming ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance !!. channel ?. set MethodCall Handler ( handler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance !!. events Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Channel ( flutter Plugin Binding . binary Messenger , Ġ" flutter _ call kit _ incoming _ events ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance !!. events ?. set Stream Handler ( event Handler ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/// ĠThe ĠMethod Channel Ġthat Ġwill Ġthe Ġcommunication Ġbetween ĠFlutter Ġand Ġnative ĠAndroid ĊĠĠĠ Ġ/// ĊĠĠĠ Ġ/// ĠThis Ġlocal Ġreference Ġserves Ġto Ġregister Ġthe Ġplugin Ġwith Ġthe ĠFlutter ĠEngine Ġand Ġunregister Ġit ĊĠĠĠ Ġ/// Ġwhen Ġthe ĠFlutter ĠEngine Ġis Ġdet ached Ġfrom Ġthe ĠActivity ĊĠĠĠ Ġprivate Ġvar Ġactivity : ĠActivity ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcontext : ĠContext ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcall kit Notification Manager : ĠCall kit Notification Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġchannel : ĠMethod Channel ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġevents : ĠEvent Channel ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Engine (@ NonNull Ġflutter Plugin Binding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġflutter Plugin Binding . application Context ĊĠĠĠĠĠĠĠ Ġcall kit Notification Manager Ġ= ĠCall kit Notification Manager ( flutter Plugin Binding . application Context ) ĊĠĠĠĠĠĠĠ Ġchannel Ġ= ĠMethod Channel ( flutter Plugin Binding . binary Messenger , Ġ" flutter _ call kit _ incoming ") ĊĠĠĠĠĠĠĠ Ġchannel ?. set MethodCall Handler ( this ) ĊĠĠĠĠĠĠĠ Ġevents Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Channel ( flutter Plugin Binding . binary Messenger , Ġ" flutter _ call kit _ incoming _ events ") ĊĠĠĠĠĠĠĠ Ġevents ?. set Stream Handler ( event Handler ) Ċ Ġ// ĠĠĠĠĠĠ Ġshare Plugin With Register ( flutter Plugin Binding , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġshow Incoming Notification ( data : ĠData ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . from Ġ= Ġ" notification " ĊĠĠĠĠĠĠĠ Ġcall kit Notification Manager ?. show Incoming Notification ( data . to Bundle ()) ĊĠĠĠĠĠĠĠ Ġ// send ĠBroadcast Receiver ĊĠĠĠĠĠĠĠ Ġcontext ?. send Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCall kit Incoming Broadcast Receiver . get Intent Incoming ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġstart Call ( data : ĠData ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. send Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCall kit Incoming Broadcast Receiver . get Intent Start ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġend Call ( data : ĠData ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. send Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCall kit Incoming Broadcast Receiver . get Intent Ended ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġend All Calls () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalls Ġ= ĠgetData Active Calls ( context ) ĊĠĠĠĠĠĠĠ Ġcalls . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. send Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall kit Incoming Broadcast Receiver . get Intent Ended ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġremove All Calls ( context ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" show Call kit Incoming " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠData ( call . arguments ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . from Ġ= Ġ" notification " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall kit Notification Manager ?. show Incoming Notification ( data . to Bundle ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// send ĠBroadcast Receiver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. send Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall kit Incoming Broadcast Receiver . get Intent Incoming ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success (" OK ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" show Miss Call Notification " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠData ( call . arguments ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . from Ġ= Ġ" notification " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall kit Notification Manager ?. show Miss Call Notification ( data . to Bundle ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success (" OK ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start Call " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠData ( call . arguments ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. send Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall kit Incoming Broadcast Receiver . get Intent Start ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success (" OK ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" end Call " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠData ( call . arguments ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. send Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall kit Incoming Broadcast Receiver . get Intent Ended ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success (" OK ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" end All Calls " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalls Ġ= ĠgetData Active Calls ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalls . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . is Accepted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. send Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall kit Incoming Broadcast Receiver . get Intent Ended ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. send Broadcast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall kit Incoming Broadcast Receiver . get Intent Decl ine ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove All Calls ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success (" OK ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" active Calls " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( getActive Calls ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" getDevice Push Token Vo IP " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" error ", Ġerror . message , Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Engine (@ NonNull Ġbinding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchannel ?. set MethodCall Handler ( null ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Activity ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . activity Ġ= Ġbinding . activity ĊĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġbinding . activity . application Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Activity For Config Changes () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Re attached To Activity For Config Changes ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . activity Ġ= Ġbinding . activity ĊĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġbinding . activity . application Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Activity () Ġ{} ĊĊĊĠĠĠ Ġclass ĠEvent Callback Handler Ġ: ĠEvent Channel . Stream Handler Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġevent Sink : ĠEvent Channel . Event Sink ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Listen ( arguments : ĠAny ?, Ġsink : ĠEvent Channel . Event Sink ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Sink Ġ= Ġsink ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsend ( event : ĠString , Ġbody : ĠMap < String , ĠAny >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" event " Ġto Ġevent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" body " Ġto Ġbody ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Sink ?. success ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel ( arguments : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Sink Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ