package Ġcom . m uka . baidu _ ocr Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroidx . annotation . NonNull Ċ import Ġcom . baidu . ocr . sdk . OCR Ċ import Ġcom . baidu . ocr . sdk . On Result Listener Ċ import Ġcom . baidu . ocr . sdk . exception . O CRE rror Ċ import Ġcom . baidu . ocr . sdk . model .* Ċ import Ġcom . baidu . ocr . ui . camera . Camera Activity Ċ import Ġcom . m uka . baidu _ ocr . File Util . get Save File Ċ 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 . 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 Ċ import Ġio . flutter . plugin . common . Plugin Registry Ċ import Ġio . flutter . plugin . common . Plugin Registry . Registrar Ċ import Ġjava . io . File ĊĊ Ċ /** ĠB aid u O cr Plugin Ġ*/ Ċ public Ġclass ĠB aid u O cr Plugin Ġ: ĠFlutter Plugin , ĠMethod Call Handler , ĠActivity Aware , ĠPlugin Registry . Activity Result Listener Ġ{ ĊĠĠĠ Ġ/// Ġ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 Ġlateinit Ġvar Ġchannel : ĠMethod Channel ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġactivity : ĠActivity ĊĊĠĠĠ Ġprivate Ġvar Ġresult Map Ġ= ĠHashMap < String , ĠResult >() ĊĊĠĠĠ Ġprivate Ġ Ġvar Ġbank FilePath Ġ= Ġ"" ĊĊĠĠĠ Ġ// èº«ä»½ è¯ģ ĊĠĠĠ Ġprivate Ġval ĠREQUEST _ CODE _ CAMERA Ġ= Ġ 1 0 2 ĊĊĠĠĠ Ġ// éĵ¶ è¡Į åį¡ è¯ĨåĪ« ĊĠĠĠ Ġprivate Ġval ĠREQUEST _ CODE _ BANK CARD Ġ= Ġ 1 1 1 ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Engine (@ NonNull Ġflutter Plugin Binding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchannel Ġ= ĠMethod Channel ( flutter Plugin Binding . get Flutter Engine (). dart Executor , Ġ" com . m uka . baidu _ ocr ") ĊĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( this ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Activity () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Re attached To Activity For Config Changes ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . activity Ġ= Ġbinding . activity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Activity ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . activity Ġ= Ġbinding . activity ĊĠĠĠĠĠĠĠ Ġbinding . add Activity Result Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Activity For Config Changes () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠThis Ġstatic Ġfunction Ġis Ġoptional Ġand Ġequivalent Ġto Ġon Attached To Engine . ĠIt Ġsupports Ġthe Ġold ĊĠĠĠ Ġ// Ġpre - Flutter - 1 . 1 2 ĠAndroid Ġprojects . ĠYou Ġare Ġencour aged Ġto Ġcontinue Ġsupporting ĊĠĠĠ Ġ// Ġplugin Ġregistration Ġvia Ġthis Ġfunction Ġwhile Ġapps Ġmigrate Ġto Ġuse Ġthe Ġnew ĠAndroid ĠAPIs ĊĠĠĠ Ġ// Ġpost - flutter - 1 . 1 2 Ġvia Ġhttps :// flutter . dev / go / android - project - migration . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠIt Ġis Ġencour aged Ġto Ġshare Ġlogic Ġbetween Ġon Attached To Engine Ġand Ġregister With Ġto Ġkeep ĊĠĠĠ Ġ// Ġthem Ġfunction ally Ġequivalent . ĠOnly Ġone Ġof Ġon Attached To Engine Ġor Ġregister With Ġwill Ġbe Ġcalled ĊĠĠĠ Ġ// Ġdepending Ġon Ġthe Ġuser 's Ġproject . Ġon Attached To Engine Ġor Ġregister With Ġmust Ġboth Ġbe Ġdefined ĊĠĠĠ Ġ// Ġin Ġthe Ġsame Ġclass . ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġregister With ( regist rar : ĠRegist rar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠMethod Channel ( regist rar . messenger (), Ġ" com . m uka . baidu _ ocr ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( B aid u O cr Plugin ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall ( call : ĠMethod Call , Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" init " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Key : ĠString Ġ= Ġcall . argument < String >(" app Key "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecret Key : ĠString Ġ= Ġcall . argument < String >(" secret Key "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠO CR . getInstance ( activity ). init AccessToken With Ak Sk ( object Ġ: ĠOn Result Listener < AccessToken > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Result ( res : ĠAccess Token ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠO CRE rror ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġactivity , Ġapp Key , Ġsecret Key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" id Card OC RO n line Front " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Card OC RO n line Front Call ( call , Ġresult ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" id Card OC RO n line Back " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Card OC RO n line Back Call ( call , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" bank Card OC RO n line " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbank Card OC RO n line Call ( call , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/// Ġ èº«ä»½ è¯ģ æŃ£ éĿ¢ æĭ į çħ§ è¯ĨåĪ« ĊĠĠĠ Ġprivate Ġfun Ġid Card OC RO n line Front Call ( call : ĠMethod Call , Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠCamera Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Camera Activity . KEY _ OUTPUT _ FILE _ PATH , Ġget Save File ( activity . application Context , true ," id Card OC RO n line Front Call "). absolute Path ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Camera Activity . KEY _ CONTENT _ TYPE , ĠCamera Activity . CONTENT _ TYPE _ ID _ CARD _ FRONT ) ĊĠĠĠĠĠĠĠ Ġactivity . startActivity For Result ( intent , ĠREQUEST _ CODE _ CAMERA ) ĊĠĠĠĠĠĠĠ Ġresult Map [ Camera Activity . CONTENT _ TYPE _ ID _ CARD _ FRONT ] Ġ= Ġresult ĊĠĠĠ Ġ} Ġ/// Ġ èº«ä»½ è¯ģ åıį éĿ¢ æĭ į çħ§ è¯ĨåĪ« ĊĊĠĠĠ Ġprivate Ġfun Ġid Card OC RO n line Back Call ( call : ĠMethod Call , Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠCamera Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Camera Activity . KEY _ OUTPUT _ FILE _ PATH , Ġget Save File ( activity . application Context , true ," id Card OC RO n line Back Call "). absolute Path ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Camera Activity . KEY _ CONTENT _ TYPE , ĠCamera Activity . CONTENT _ TYPE _ ID _ CARD _ BACK ) ĊĠĠĠĠĠĠĠ Ġactivity . startActivity For Result ( intent , ĠREQUEST _ CODE _ CAMERA ) ĊĠĠĠĠĠĠĠ Ġresult Map [ Camera Activity . CONTENT _ TYPE _ ID _ CARD _ BACK ] Ġ= Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/// Ġ éĵ¶ è¡Į åį¡ è¯ĨåĪ« ĊĠĠĠ Ġprivate Ġfun Ġbank Card OC RO n line Call ( call : ĠMethod Call , Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠCamera Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġbank FilePath Ġ= Ġget Save File ( activity , true ," bank Card OC RO n line Call "). absolute Path ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Camera Activity . KEY _ OUTPUT _ FILE _ PATH , Ġbank FilePath ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Camera Activity . KEY _ CONTENT _ TYPE , ĠCamera Activity . CONTENT _ TYPE _ BANK _ CARD ) ĊĠĠĠĠĠĠĠ Ġactivity . startActivity For Result ( intent , ĠREQUEST _ CODE _ BANK CARD ) ĊĠĠĠĠĠĠĠ Ġresult Map [ java . lang . String . valueOf ( REQUEST _ CODE _ BANK CARD )] Ġ= Ġresult ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Engine (@ NonNull Ġbinding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ èº«ä»½ è¯ģ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ=== ĠREQUEST _ CODE _ CAMERA Ġ&& ĠresultCode Ġ=== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcontentType : ĠString ? Ġ= Ġdata . getString Extra ( Camera Activity . KEY _ CONTENT _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( contentType )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Camera Activity . CONTENT _ TYPE _ ID _ CARD _ FRONT Ġ== ĠcontentType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= Ġget Save File ( activity . application Context , Ġfalse ," id Card OC RO n line Front Call "). absolute Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ èº«ä»½ è¯ģ æŃ£ éĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrec ID Card ( ID Card Params . ID _ CARD _ SIDE _ FRONT , ĠfilePath , ĠcontentType ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Camera Activity . CONTENT _ TYPE _ ID _ CARD _ BACK Ġ== ĠcontentType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= Ġget Save File ( activity . application Context , Ġfalse , Ġ" id Card OC RO n line Back Call "). absolute Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ èº«ä»½ è¯ģ åıį éĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrec ID Card ( ID Card Params . ID _ CARD _ SIDE _ BACK , ĠfilePath , ĠcontentType ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ è¯ĨåĪ« æĪĲåĬŁ åĽŀè°ĥ ï¼Į éĵ¶ è¡Į åį¡ è¯ĨåĪ« ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ=== ĠREQUEST _ CODE _ BANK CARD Ġ&& ĠresultCode Ġ=== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Ġ= ĠBank Card Params () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam . image File Ġ= ĠFile ( bank FilePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO CR . getInstance ( activity ). re cognize Bank Card ( param , Ġobject Ġ: ĠOn Result Listener < Bank Card Result > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Result ( result : ĠBank Card Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdata Ġ= ĠHashMap < String , ĠString ?> () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" bank Card Number "] Ġ= Ġresult . bank Card Number ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" bank Card Type "] Ġ= Ġresult . bank Card Type . name ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" bank Name "] Ġ= Ġresult . bank Name ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" filePath "] Ġ= Ġbank FilePath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult 1 Ġ= Ġresult Map [ REQUEST _ CODE _ BANK CARD . toString ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 1 ?. success ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠO CRE rror ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult 1 Ġ= Ġresult Map [ REQUEST _ CODE _ BANK CARD . toString ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 1 ?. success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrec ID Card ( id Card Side : ĠString , ĠfilePath : ĠString , ĠcontentType : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparam Ġ= ĠID Card Params () ĊĠĠĠĠĠĠĠ Ġparam . image File Ġ= ĠFile ( filePath ) ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® èº«ä»½ è¯ģ æŃ£ åıį éĿ¢ ĊĠĠĠĠĠĠĠ Ġparam . id Card Side Ġ= Ġid Card Side ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® æĸ¹åĲĳ æ£Ģæµĭ ĊĠĠĠĠĠĠĠ Ġparam . is Detect Direction Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® åĽ¾åĥı åıĤæķ° åİĭç¼© è´¨ éĩı 0 - 1 0 0 , Ġ è¶Ĭ å¤§ åĽ¾åĥı è´¨ éĩı è¶Ĭ å¥½ ä½Ĩæĺ¯ è¯·æ±Ĥ æĹ¶éĹ´ è¶Ĭ éķ¿ ãĢĤ Ġä¸į è®¾ç½® åĪĻ é»ĺè®¤ åĢ¼ä¸º 2 0 ĊĠĠĠĠĠĠĠ Ġparam . image Quality Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠ ĠO CR . getInstance ( activity ). re cognize ID Card ( param , Ġobject Ġ: ĠOn Result Listener < ID Card Result ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Result ( result : ĠID Card Result ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult 1 : ĠResult ? Ġ= Ġresult Map [ contentType ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdata Ġ= ĠHashMap < String , ĠString ?> () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" name "] Ġ= Ġresult . name ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" gender "] Ġ= Ġresult . gender ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" eth nic "] Ġ= Ġresult . eth nic ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" birthday "] Ġ= Ġresult . birthday ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" address "] Ġ= Ġresult . address ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" number "] Ġ= Ġresult . id Number ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" sign Date "] Ġ= Ġresult . sign Date ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" expiry Date "] Ġ= Ġresult . expiry Date ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" issue Authority "] Ġ= Ġresult . issue Authority ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" filePath "] Ġ= ĠfilePath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 1 ?. success ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠO CRE rror ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult 1 : ĠResult ? Ġ= Ġresult Map [ contentType ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult 1 ?. error ( error . errorCode . toString (), Ġerror . message , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ