package Ġio . github . tak us an 2 3 . jd card reader core Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . n fc . N fc Adapter Ċ import Ġandroid . n fc . Tag Ċ import Ġandroid . n fc . tech . Iso Dep Ċ import Ġio . github . tak us an 2 3 . jd card reader core . data . JD Card DF 1 EF 0 1 Data Ċ import Ġio . github . tak us an 2 3 . jd card reader core . data . JD Card Data Ċ import Ġio . github . tak us an 2 3 . jd card reader core . data . JD Card M FE F 0 1 Data Ċ import Ġkotlin . coroutines . resume Ċ import Ġkotlin . coroutines . resume With Exception Ċ import Ġkotlin . coroutines . suspend Coroutine Ċ Ċ /** Ċ Ġ* Ġ éģ ĭ è» ¢ åħį è¨± è¨¼ ãĤĴ èªŃãģ¿ åıĸ ãĤĭ ãĥ©ãĤ¤ ãĥĸãĥ© ãĥª ãĢĤ èªŃãģ¿ åıĸ ãĤĭ éĸ¢æķ° ãģ¯ ãģĵ ãģĵ ãģ« ãģĤ ãĤĬãģ¾ãģĻ ãĢĤ Ċ Ġ* Ċ Ġ* Ġ éģ ĭ è» ¢ åħį è¨± è¨¼ IC ä» ķ æ§ ĺ æĽ¸ ãģ® URL ãģ¯ ãģĵ ãģĵ ãģ§ãģĻ ãĢĤ https :// www . np a . go . jp / l aws / notification / k out uu / m enk yo / m enk yo 2 0 2 1 0 6 3 0 _ 1 5 0 . pdf Ċ Ġ* Ċ Ġ* ĠãĤ³ ãĥ« ãĥ¼ãĥ ģ ãĥ³ ãģ§ãģĻ ãĢĤ Ċ Ġ* Ġ*/ Ċ object ĠJ D Card Reader Core Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠãĤ « ãĥ¼ãĥī ãģ® èªŃãģ¿ åıĸ ãĤĬ ãĤĴ éĸĭå§ĭ ãģĻãĤĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠActivity ĊĠĠĠĠ Ġ* Ġ@ param Ġcall Back ĠãĤ³ ãĥ¼ãĥ« ãĥĲ ãĥĥãĤ¯ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstart Reader ( activity : ĠActivity , Ġcall Back : Ġ( Tag , ĠN fc Adapter ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġn fc Adapter Ġ= ĠN fc Adapter . getDefault Adapter ( activity ) ĊĠĠĠĠĠĠĠ Ġ// Ġ èªŃãģ¿ åıĸ ãĤĬ ãĤĴ éĸĭå§ĭ ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġn fc Adapter . enable Reader Mode ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġtag Ġ-> Ġcall Back ( tag , Ġn fc Adapter ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN fc Adapter . FLAG _ READ ER _ N FC _ B , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ èªŃãģ¿ åıĸ ãĤĬ ãĤĴ éĸĭå§ĭ ãģĹãģ¦ ãĢģ åĢ¤ ãĤĴ è¿Ķ ãģĻ ãĢĤ åĢ¤ ãĤĴ è¿Ķ ãģĹãģŁ ãĤī åĨħéĥ¨ ãģ® ãĤ³ ãĥ¼ãĥ« ãĥĲ ãĥĥãĤ¯ éĸ¢æķ° ãĤĴ è§£ éĻ¤ ãģĻãĤĭ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠãĤ³ ãĥ« ãĥ¼ãĥ ģ ãĥ³ ãĤĴ åĪ©çĶ¨ ãģĹãģ¦ãģĦãģ¾ãģĻ ãĢĤ å¤± æķ Ĺ ãģĹãģŁ åł´åĲĪãģ¯ [ JD Card Reader Exception ] ãĤĴ åĲ Ĳ ãģį ãģ¾ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠActivity ãĢĤ N FC èªŃãģ¿ åıĸ ãĤĬ ãģ« ä½ķ æķħ ãģĭ å¿ħè¦ģ ĊĠĠĠĠ Ġ* Ġ@ param Ġpin Code 1 Ġæ ļ Ĺ è¨¼ çķª åı· ï¼ ĳ ĊĠĠĠĠ Ġ* Ġ@ param Ġpin Code 2 Ġæ ļ Ĺ è¨¼ çķª åı· ï¼ Ĵ ãĢĤ æľ¬ ç± į ãĤĴ èªŃãģ¿ åĩº ãģĻ åł´åĲĪ ãģ® ãģ¿ å¿ħè¦ģ ĊĠĠĠĠ Ġ* Ġ@ return ĠIC ãĤ« ãĥ¼ãĥī ãģ« åħ¥ ãģ£ãģ¦ ãĤĭ ãĥĩãĥ¼ãĤ¿ ãĢĤ æľ¬ ç± į ãģ¯ [ pin Code 2 ] ãģĮ å¿ħè¦ģ ãģ§ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġstart Get Card Data ( activity : ĠActivity , Ġpin Code 1 : ĠString , Ġpin Code 2 : ĠString ? Ġ= Ġnull ): ĠJ D Card Data Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ èªŃãģ¿ åıĸ ãĤĬ çµĤ ãĤı ãĤĭ ãģ¾ãģ§ ãĤ³ ãĥ« ãĥ¼ãĥ ģ ãĥ³ ä¸Ģ æĻĤ åģľæŃ¢ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuspend Coroutine Ġ{ Ġcallback Coroutine Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Reader ( activity ) Ġ{ Ġtag , Ġn fc Adapter Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiso Dep Ġ= ĠI so Dep . get ( tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiso Dep . connect () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ åħ± éĢļ ãĥĩãĥ¼ãĤ¿ è¦ģ ç´ł ĠMF / EF 0 1 Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġm fe F 0 1 Data : ĠJ D Card M FE F 0 1 Data ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġæ ® ĭ ãĤĬ è© ¦ è¡Į åı¯èĥ½ åĽŀ æķ° Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġretry Count Ġ= Ġ 3 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ è¨ĺ è¼ ī äºĭ éłħ ĠDF 1 / EF 0 1 Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġd F 1 EF 0 1 Data : ĠJ D Card DF 1 EF 0 1 Data ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġæľ¬ ç± į ãĢĤ æļ Ĺ è¨¼ çķª åı· ï¼ Ĵ ãģĮ ãģªãģĦ åł´åĲĪãģ¯ null Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġh onse ki : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ ä¾ĭ å¤ĸ ãĤĴ åĲ Ĳ ãģĦãģ¦ å¾Į å§ĭ æľ« ãĤĴ ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġiso Dep ĠI so Dep ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġthrow Exception And Close ( errorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiso Dep . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn fc Adapter . disable Reader Mode ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Coroutine . resume With Exception ( JD Card Reader Exception ( errorMessage )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMF ãĤĴ éģ¸æĬŀ ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmf Select Command Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠCLA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xA 4 . to Byte (), Ġ// ĠIN S Ġ( SELECT ĠFILE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠP 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠP 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmf Select Command Result Ġ= Ġiso Dep . trans ceive ( mf Select Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mf Select Command Result [ 0 ] Ġ!= Ġ 0 x 9 0 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" MF éģ¸æĬŀ ãģ« å¤± æķ Ĺ ãģĹãģ¾ãģĹãģŁ ãĢĤ ${ mf Select Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ « ãĥ¬ ãĥ³ãĥĪ ãĥĩãĤ£ ãĥ¬ ãĤ¯ãĥĪ ãĥª ãĤĴ åħ± éĢļ ãĥĩãĥ¼ãĤ¿ è¦ģ ç´ł ãģ« è¨Ńå®ļ ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmf Ef 0 1 Select Command Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xA 4 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 2 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 C . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 2 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 2 F . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 1 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmf Ef 0 1 Select Command Result Ġ= Ġiso Dep . trans ceive ( mf Ef 0 1 Select Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mf Ef 0 1 Select Command Result [ 0 ] Ġ!= Ġ 0 x 9 0 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" DF / EF 0 1 ãģ® éģ¸æĬŀ ãģ« å¤± æķ Ĺ ãģĹãģ¾ãģĹãģŁ ãĢĤ ${ mf Select Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ « ãĥ¬ ãĥ³ãĥĪ ãĥĩãĤ£ ãĥ¬ ãĤ¯ãĥĪ ãĥª ãĤĴ èªŃãģ¿ åıĸ ãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmf Ef 0 1 Read Binary Command Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xB 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 1 1 . to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmf Ef 0 1 Read Binary Command Result Ġ= Ġiso Dep . trans ceive ( mf Ef 0 1 Read Binary Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĪĲåĬŁ ãģĹãģŁ åł´åĲĪ ãĢģ æľĢ å¾Į ãģĭãĤī 2 çķª çĽ® ãģ® 1 6 éĢ² æķ° ãģĮ 0 x 9 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mf Ef 0 1 Read Binary Command Result [ mf Ef 0 1 Read Binary Command Result . size Ġ- Ġ 2 ] Ġ== Ġ 0 x 9 0 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ « ãĥ¼ãĥī çĻº è¡Į èĢħ ãĥĩãĥ¼ãĤ¿ ãģ® éķ· ãģķ ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard Publisher Data Length Ġ= Ġmf Ef 0 1 Read Binary Command Result [ 1 ]. toInt () Ġ// Ġ å¤ļ åĪĨ 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åħĪ éł Ń ãģĭãĤī Ġcard Publisher Data Length ĠåĪĨ ãģ® ãĥĲ ãĤ¤ãĥĪ éħį åĪĹ åıĸå¾Ĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard Publisher Data Binary Ġ= Ġmf Ef 0 1 Read Binary Command Result . copyOf Range ( 2 , Ġ 2 Ġ+ Ġcard Publisher Data Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ « ãĥ¼ãĥī çĻº çĭ Ĥ èĢħ ãĥĩãĥ¼ãĤ¿ ãĢģ æľĢ åĪĿ ãģ® 3 ãĥĲ ãĤ¤ãĥĪ ãģĮ ä» ķ æ§ ĺ æĽ¸ ãĥĲãĥ¼ãĤ¸ãĥ§ãĥ³ ï¼Ī SJ IS å¤ī æıĽ å¾Į ç¢ºèªį åı¯èĥ½ ï¼ī ãĢģ æ¬¡ãģ® 4 ãĥĲ ãĤ¤ãĥĪ ãģĮ äº¤ ä»ĺ å¹´ æľĪ æĹ¥ ãĢģ æ¬¡ãģ® 4 ãĥĲ ãĤ¤ãĥĪ ãģĮ æľī åĬ¹ æľŁ éĻĲ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversion Ġ= Ġcard Publisher Data Binary . copyOf Range ( 0 , Ġ 3 ). toString ( charset (" sj is ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpublish Date Ġ= Ġcard Publisher Data Binary . copyOf Range ( 4 , Ġ 7 ). join ToString ( separator Ġ= Ġ"") Ġ{ Ġ"% 0 2 x ". format ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Of Expiry Ġ= Ġcard Publisher Data Binary . copyOf Range ( 8 , Ġ 1 1 ). join ToString ( separator Ġ= Ġ"") Ġ{ Ġ"% 0 2 x ". format ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm fe F 0 1 Data Ġ= ĠJ D Card M FE F 0 1 Data ( version , Ġpublish Date , Ġdate Of Expiry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" DF / EF 0 1 èªŃãģ¿ åıĸ ãĤĬ ãģ« å¤± æķ Ĺ ãģĹãģ¾ãģĹãģŁ ãĢĤ ${ mf Select Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæ ® ĭ ãĤĬ çħ§ åĲĪ åı¯èĥ½ åĽŀ æķ° ãĤĴåıĸå¾Ĺ ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretry Count Verify Command Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 2 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 8 1 . to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretry Count Verify Command Result Ġ= Ġiso Dep . trans ceive ( retry Count Verify Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( retry Count Verify Command Result [ 0 ] Ġ== Ġ 0 x 6 3 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretry Count Hex Ġ= Ġretry Count Verify Command Result . last (). toInt () Ġ- Ġ 0 xC 0 Ġ// Ġ 0 xC 0 ãĤĴ å¼ķ ãģĳ ãģ° æľĢ å¾Į ãģĮ æ® ĭ ãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretry Count Ġ= Ġ"% x ". format ( retry Count Hex ). last (). toString (). toInt () Ġ// Ġf fffff 0 3 ãģ¿ ãģŁ ãģĦ ãģª æĦŁ ãģĺ ãģ« ãģªãĤĭ ãĢģ ãģ®ãģ§ æľĢ å¾Į ãģłãģĳ åıĸå¾Ĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" æ® ĭ ãĤĬ è© ¦ è¡Į åı¯èĥ½ åĽŀ æķ° ãģ® åıĸå¾Ĺ ãģ« å¤± æķ Ĺ ãģĹãģ¾ãģĹãģŁ ãĢĤ ${ retry Count Verify Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæ ļ Ĺ è¨¼ çķª åı· 1 ãĤĴ çħ§ åĲĪ ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin Code 1 Char List Ġ= Ġpin Code 1 . toCharArray () Ġ// Ġ åĲĦ èĩª æļ Ĺ è¨¼ çķª åı· ãĤĴ åħ¥åĬĽ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin Code 1 Encoded List Ġ= Ġpin Code 1 Char List . map Ġ{ Ġto J IS ( it . toString ()[ 0 ]) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin Code 1 Verify Command Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 2 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 8 1 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 4 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġpin Code 1 Encoded List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin Code 1 Verify Command Result Ġ= Ġiso Dep . trans ceive ( pin Code 1 Verify Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin Code 1 Verify Command Result [ pin Code 1 Verify Command Result . size Ġ- Ġ 2 ] Ġ!= Ġ 0 x 9 0 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" æļ Ĺ è¨¼ çķª åı· ï¼ ĳ ãģ® çħ§ åĲĪ ãģ« å¤± æķ Ĺ ãĢĤ ${ pin Code 1 Verify Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ « ãĥ¬ ãĥ³ãĥĪ ãĥĩãĤ£ ãĥ¬ ãĤ¯ãĥĪ ãĥª ãĤĴ DF 1 ãģ¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf 1 Select Command Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xA 4 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 4 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 C . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 1 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xA 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 2 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 1 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 1 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf 1 Select Command Result Ġ= Ġiso Dep . trans ceive ( df 1 Select Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( df 1 Select Command Result [ 0 ] Ġ!= Ġ 0 x 9 0 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" DF 1 ãģ® éģ¸æĬŀ ãģ« å¤± æķ Ĺ ãĢĤ ${ df 1 Select Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¨ĺ è¼ ī äºĭ éłħ ( DF 1 / EF 0 1 ) ãĤĴ èªŃãģ¿ åĩº ãģĻ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf 1 Ef 0 1 Read Binary Command Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xB 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 8 1 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 3 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 7 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf 1 Ef 0 1 Read Binary Command Result Ġ= Ġiso Dep . trans ceive ( df 1 Ef 0 1 Read Binary Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( df 1 Ef 0 1 Read Binary Command Result [ df 1 Ef 0 1 Read Binary Command Result . size Ġ- Ġ 2 ] Ġ== Ġ 0 x 9 0 . to Byte ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Pos Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¨ĺ è¼ ī äºĭ éłħ ãĤĴ ä¸Ĭ ãģĭãĤī éłĨ çķª ãģ« åıĸå¾Ĺ ãģĹãģ¦ãģĦ ãģı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbyte ArrayList Ġ= Ġmutable ListOf < ByteArray >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 3 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( pos , Ġdata ) Ġ= Ġdf 1 Ef 0 1 Read Binary Command Result . getValue Field ( current Pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbyte ArrayList . add ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Pos Ġ= Ġpos ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠJ IS ĠX Ġ 0 2 0 8 Ġ åĪ¶ å®ļ å¹´ çķª åı· ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj is X 0 2 0 8 Ġ= Ġ"% 0 2 x ". format ( byte ArrayList [ 0 ]. last ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĲįåīį ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġbyte ArrayList [ 1 ]. to J IS X 0 2 0 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ èªŃãģ¿ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy omi Ġ= Ġbyte ArrayList [ 2 ]. to J IS X 0 2 0 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éĢļ ç§° åĲį ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtu us you me i Ġ= Ġbyte ArrayList [ 3 ]. to J IS X 0 2 0 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ çµ± ä¸Ģ æ° ı åĲį ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto uit us ime i Ġ= Ġbyte ArrayList [ 4 ]. to J IS X 0 2 0 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ çĶŁ å¹´ æľĪ æĹ¥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbirthday Ġ= Ġbyte ArrayList [ 5 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä½ı æīĢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġbyte ArrayList [ 6 ]. to J IS X 0 2 0 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ äº¤ ä»ĺ å¹´ æľĪ æĹ¥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpublish Date Ġ= Ġbyte ArrayList [ 7 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ çħ§ ä¼ļ çķª åı· ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs you k ai Num Ġ= Ġbyte ArrayList [ 8 ]. to J IS X 0 2 0 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åħį è¨± è¨¼ ãģ® èī² åĮº åĪĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġbyte ArrayList [ 9 ]. to J IS X 0 2 0 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæľī åĬ¹ æľŁ éĻĲ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠendTime At Ġ= Ġbyte ArrayList [ 1 0 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éģ ĭ è» ¢ åħį è¨± ãģ® æĿ¡ä»¶ ãĢĤ ãĥ¡ ãĤ¬ ãĥį ãģªãģ© ãĢĤ æĿ¡ä»¶ ãģªãģĦ åł´åĲĪãģ¯ null ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequirement 1 Ġ= Ġbyte ArrayList [ 1 1 ]. to J IS X 0 2 0 8 (). if Empty Ġ{ Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequirement 2 Ġ= Ġbyte ArrayList [ 1 2 ]. to J IS X 0 2 0 8 (). if Empty Ġ{ Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequirement 3 Ġ= Ġbyte ArrayList [ 1 3 ]. to J IS X 0 2 0 8 (). if Empty Ġ{ Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequirement 4 Ġ= Ġbyte ArrayList [ 1 4 ]. to J IS X 0 2 0 8 (). if Empty Ġ{ Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åħ¬ å®ī å§Ķ åĵ ¡ ä¼ļ åĲį ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpublic Safety Com mission Name Ġ= Ġbyte ArrayList [ 1 5 ]. to J IS X 0 2 0 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éģ ĭ è» ¢ åħį è¨± è¨¼ ãģ® çķª åı· ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard Number Ġ= Ġbyte ArrayList [ 1 6 ]. to J IS X 0 2 0 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä»ĸ ãģ® åħį è¨± ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnir in Ġ= Ġbyte ArrayList [ 1 7 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh ok a Ġ= Ġbyte ArrayList [ 1 8 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn is yu Ġ= Ġbyte ArrayList [ 1 9 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo og ata Ġ= Ġbyte ArrayList [ 2 0 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh ut uu Ġ= Ġbyte ArrayList [ 2 1 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo og at at ok us yu Ġ= Ġbyte ArrayList [ 2 2 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo og ata z ido un ir in Ġ= Ġbyte ArrayList [ 2 3 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh ut u uz ido un ir in Ġ= Ġbyte ArrayList [ 2 4 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk og at at ok us yu Ġ= Ġbyte ArrayList [ 2 5 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg ent uki Ġ= Ġbyte ArrayList [ 2 6 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkann inn Ġ= Ġbyte ArrayList [ 2 7 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo og atan is yu Ġ= Ġbyte ArrayList [ 2 8 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh ut u un is yu Ġ= Ġbyte ArrayList [ 2 9 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo og ata ok us yun is yu Ġ= Ġbyte ArrayList [ 3 0 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk enn in nn is yu Ġ= Ġbyte ArrayList [ 3 1 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġty u ug ata Ġ= Ġbyte ArrayList [ 3 2 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġty u ug atan is yu Ġ= Ġbyte ArrayList [ 3 3 ]. to J IS X 0 2 0 1 DateString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġz y unt yu ug ata Ġ= Ġbyte ArrayList [ 3 4 ]. to J IS X 0 2 0 1 DateString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd F 1 EF 0 1 Data Ġ= ĠJ D Card DF 1 EF 0 1 Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj is X 0 2 0 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy omi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtu us you me i , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto uit us ime i , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbirthday !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublish Date !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs you k ai Num , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime At !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequirement 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequirement 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequirement 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequirement 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Safety Com mission Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnir in , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ok a , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn is yu , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo og ata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ut uu , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo og at at ok us yu , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo og ata z ido un ir in , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ut u uz ido un ir in , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk og at at ok us yu , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg ent uki , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkann inn , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo og atan is yu , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ut u un is yu , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo og ata ok us yun is yu , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk enn in nn is yu , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġty u ug ata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġty u ug atan is yu , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz y unt yu ug ata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" DF 1 / EF 0 1 ãģ® èªŃãģ¿ åĩº ãģĹ ãģ« å¤± æķ Ĺ ãĢĤ ${ df 1 Ef 0 1 Read Binary Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġæ ļ Ĺ è¨¼ çķª åı· ï¼ Ĵ ãģĮ æ¸ ¡ ãģķãĤĮãģ¦ãģĦãĤĭ åł´åĲĪãģ¯ æľ¬ ç± į ãĤĤ åıĸå¾Ĺ ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ ãģª ãģ ľ ãģĭ æľ¬ ç± į ãģ¯ æļ Ĺ è¨¼ çķª åı· ï¼ Ĵ ãģĮ å¿ħè¦ģ ãģª ãģ®ãģ§ ï¼Ī æľ¬ ç± į ãģ£ãģ¦ åįĥ ä»£ çĶ ° åĮº åįĥ ä»£ çĶ ° 1 - 1 ãģ¨ ãģĭ èĩªçĶ± ãģ« æ±º ãĤģ ãĤī ãĤĮãĤĭ ãĤī ãģĹãģĦ ãģ Ń ï¼Ł ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin Code 2 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMF ãĤĴ éģ¸æĬŀ ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin 2 Mf Select Command Result Ġ= Ġiso Dep . trans ceive ( mf Select Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin 2 Mf Select Command Result [ 0 ] Ġ!= Ġ 0 x 9 0 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" MF éģ¸æĬŀ ãģ« å¤± æķ Ĺ ãģĹãģ¾ãģĹãģŁ ãĢĤ ${ pin 2 Mf Select Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠI EF 0 2 ( æļ Ĺ è¨¼ çķª åı· ï¼ Ĵ ) ãĤĴæĮĩå®ļ ãģĹãģŁ VERIFY ãĤ³ãĥŀãĥ³ãĥī ãĤĴ éĢģ ãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin Code 2 Char List Ġ= Ġpin Code 2 . toCharArray () Ġ// Ġ åĲĦ èĩª æļ Ĺ è¨¼ çķª åı· ãĤĴ åħ¥åĬĽ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin Code 2 Encoded List Ġ= Ġpin Code 2 Char List . map Ġ{ Ġto J IS ( it . toString ()[ 0 ]) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin Code 2 Verify Command Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 2 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 8 2 . to Byte (), Ġ// ĠI EF 0 2 éģ¸æĬŀ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 4 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġpin Code 2 Encoded List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin Code 2 Verify Command Result Ġ= Ġiso Dep . trans ceive ( pin Code 2 Verify Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin Code 2 Verify Command Result [ pin Code 2 Verify Command Result . size Ġ- Ġ 2 ] Ġ!= Ġ 0 x 9 0 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" æļ Ĺ è¨¼ çķª åı· ï¼ Ĵ ãģ® çħ§ åĲĪ ãģ« å¤± æķ Ĺ ãĢĤ ${ pin Code 2 Verify Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæľ¬ ç± į ãĤĴ èªŃãģ¿ åĩº ãģĻ ãģŁãĤģ ãģ« DF 1 ãģ¸ ç§» åĭķ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpin 2 Df 1 Select Command Result Ġ= Ġiso Dep . trans ceive ( df 1 Select Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin 2 Df 1 Select Command Result [ 0 ] Ġ!= Ġ 0 x 9 0 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" DF 1 ãģ® éģ¸æĬŀ ãģ« å¤± æķ Ĺ ãĢĤ ${ pin 2 Df 1 Select Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæľ¬ ç± į ï¼Ī DF 1 / EF 0 2 ï¼ī ãĤĴ èªŃãģ¿ åĩº ãģĻ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf 1 Ef 0 2 Read Binary Command Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xB 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 8 2 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 3 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 7 0 . to Byte (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf 1 Ef 0 2 Read Binary Command Result Ġ= Ġiso Dep . trans ceive ( df 1 Ef 0 2 Read Binary Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( df 1 Ef 0 2 Read Binary Command Result [ df 1 Ef 0 2 Read Binary Command Result . size Ġ- Ġ 2 ] Ġ== Ġ 0 x 9 0 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh onse ki Length Ġ= Ġdf 1 Ef 0 2 Read Binary Command Result [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh onse ki Data Ġ= Ġdf 1 Ef 0 2 Read Binary Command Result . copyOf Range ( 2 , Ġ 2 Ġ+ Ġh onse ki Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh onse ki Ġ= Ġh onse ki Data . to J IS X 0 2 0 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Exception And Close (" DF 1 / EF 0 2 ãģ® èªŃãģ¿ åĩº ãģĹ ãģ« å¤± æķ Ĺ ãĢĤ ${ pin 2 Df 1 Select Command Result . to HexString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ãģĬ ãģĭ ãģŁ ãģļ ãģĳ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiso Dep . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn fc Adapter . disable Reader Mode ( activity ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĢ¤ ãĤĴ è¿Ķ ãģĻ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Coroutine . resume ( JD Card Data ( m fe F 0 1 Data !! , Ġretry Count , Ġd F 1 EF 0 1 Data !! , Ġh onse ki )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ 1 6 éĢ² æķ° ãģ« å¤ī æıĽ ãģĻãĤĭ ãĤĦ ãģ¤ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠByteArray . to HexString () Ġ= Ġthis . join ToString Ġ{ Ġ"% 0 2 x ". format ( it ) Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ ¬ ¡ ãģ® ãĥĩãĥ¼ãĤ¿ ãĤĴåıĸå¾Ĺ ãģĻãĤĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġcurrent Pos Ġ ä»Ĭ ãģ® ä½įç½® ãĢĤ åĪĿ åĽŀ æĻĤ ãģ¯ 0 ï¼Ł ĊĠĠĠĠ Ġ* Ġ@ return ĠInt ãģ¯ ãĢģ ä»Ĭ ãģ® ä½įç½® ãĤĴ è¿Ķ ãģĹãģ¾ãģĻ ãĢĤ ï¼ Ĵ åĽŀ çĽ® ä»¥ éĻį ãģĵãģ® éĸ¢æķ° ãĤĴ åĳ¼ ãģ ¶ éļ Ľ ãģ« ä½¿ ãģ£ãģ¦ ãģıãģłãģķãģĦ ãĢģ ByteArray ãģ¯ åĢ¤ ãĥķãĤ£ ãĥ¼ãĥ« ãĥī ãģ§ãģĻ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠByteArray . getValue Field ( current Pos : ĠInt ): ĠPair < Int , ĠByteArray > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ éķ· ãģķ ãĤĴ èªŃãģ¿ åıĸ ãĤĭ ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġthis [ current Pos Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Pos Ġ+ Ġ 2 Ġ+ Ġlength Ġto Ġcopy Of Range ( current Pos Ġ+ Ġ 2 , Ġcurrent Pos Ġ+ Ġ 2 Ġ+ Ġlength ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠJ IS ĠX Ġ 0 2 0 8 ãģ§ å¤ī æıĽ ãģķãĤĮãģŁ ãĥĲ ãĤ¤ãĥĪ éħį åĪĹ ãĤĴ æĪ » ãģĻ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠByteArray . to J IS X 0 2 0 8 (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ å¤ī æıĽ ãģĻãĤĭ ãĢĤ J IS ãĤ³ãĥ¼ãĥī ãģ§ å¤ī æıĽ ãģ§ãģįãĤĭ ãĢĤ J IS ãĤ³ãĥ¼ãĥī ãģ¯ ãĤ¨ ãĤ¹ ãĤ± ãĥ¼ãĥĹ ãĤ· ãĥ¼ãĤ ± ãĥ³ãĤ¹ ãģ«ãĤĪ ãĤĬ ãĢģ æĸĩåŃĹ éĽĨåĲĪ ãĤĴ åĪĩ ãĤĬ æĽ¿ ãģĪãĤĭ ãģĵãģ¨ ãģĮ ãģ§ãģįãĤĭ ĊĠĠĠĠĠĠĠ Ġval Ġescape Sequence Ġ= Ġbyte ArrayOf ( 0 x 1 B . to Byte (), Ġ 0 x 2 4 . to Byte (), Ġ 0 x 4 2 . to Byte ()) Ġ// ĠJ IS ĠX Ġ 0 2 0 8 ĊĠĠĠĠĠĠĠ Ġreturn ĠString ( escape Sequence Ġ+ Ġthis , Ġcharset (" jis ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠJ IS ĠX Ġ 0 2 0 1 ãģ§ å¤ī æıĽ ãģķãĤĮãģŁ ãĥĲ ãĤ¤ãĥĪ éħį åĪĹ ãĤĴ æĪ » ãģĻ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠByteArray . to J IS X 0 2 0 1 (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ å¤ī æıĽ ãģĻãĤĭ ãĢĤ J IS ãĤ³ãĥ¼ãĥī ãģ§ å¤ī æıĽ ãģ§ãģįãĤĭ ãĢĤ J IS ãĤ³ãĥ¼ãĥī ãģ¯ ãĤ¨ ãĤ¹ ãĤ± ãĥ¼ãĥĹ ãĤ· ãĥ¼ãĤ ± ãĥ³ãĤ¹ ãģ«ãĤĪ ãĤĬ ãĢģ æĸĩåŃĹ éĽĨåĲĪ ãĤĴ åĪĩ ãĤĬ æĽ¿ ãģĪãĤĭ ãģĵãģ¨ ãģĮ ãģ§ãģįãĤĭ ĊĠĠĠĠĠĠĠ Ġval Ġescape Sequence Ġ= Ġbyte ArrayOf ( 0 x 1 B . to Byte (), Ġ 0 x 2 8 . to Byte (), Ġ 0 x 4 2 . to Byte ()) Ġ// ĠASCII ĊĠĠĠĠĠĠĠ Ġreturn ĠString ( escape Sequence Ġ+ Ġthis , Ġcharset (" jis ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJ IS ĠX Ġ 0 2 0 1 ãģ§ å¤ī æıĽ ãģķãĤĮãģŁ ãĥĲ ãĤ¤ãĥĪ éħį åĪĹ ãĤĴ æĪ » ãģĹãģ¦ ãĢģ æĹ¥ ä»ĺ å½¢å¼ı ãģ« ãģĻãĤĭ ĊĠĠĠĠ Ġ* Ġ@ return Ġnull ãģ® åł´åĲĪãģ¯ ä¸į æŃ£ ãģª åĢ¤ ãģ® åł´åĲĪ ï¼Ī ä¾ĭ ãģĪ ãģ° æĻ®éĢļ åħį è¨± ä»¥ å¤ĸ æĮģ ãģ£ ãģ¦ãģĦ ãģªãģĦ åł´åĲĪãģ¯ 0 0 0 0 0 ãģª ãģ®ãģ§ ãģĿãģ® ãģ¨ ãģį ãģ¯ null ãĤĴ è¿Ķ ãģĹãģ¾ãģĻ ãĢĤ ï¼ī ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠByteArray . to J IS X 0 2 0 1 DateString (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġãģ¨ ãĤĬ ãģĤ ãģĪ ãģļ J IS ĠX Ġ 0 2 0 1 ãģ® å¤ī æıĽ å¾Į ãĥĩãĥ¼ãĤ¿ ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Field Ġ= Ġthis . to J IS X 0 2 0 1 () ĊĠĠĠĠĠĠĠ Ġ// Ġ æĮģ ãģ£ãģ¦ ãģªãģĦ åħį è¨± ãģ® åł´åĲĪãģ¯ Ġ( åħĥ åı· ) 0 0 0 0 0 0 Ġ ãģª ãģ®ãģ§ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Field . contains (" 0 0 0 0 0 0 ")) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġg eng o Ġ= Ġwhen Ġ( value Field . first ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 1 ' Ġ-> Ġ" æĺİ æ²» " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 2 ' Ġ-> Ġ" å¤§ æŃ£ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 3 ' Ġ-> Ġ" æĺ Ń åĴĮ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 4 ' Ġ-> Ġ" å¹³ æĪĲ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" ä»¤ åĴĮ " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġyear Ġ= Ġvalue Field . substring ( 1 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġmonth Ġ= Ġvalue Field . substring ( 3 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġvalue Field . substring ( 5 , Ġ 7 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ g eng o Ġ${ year } å¹´ Ġ${ month } æľĪ Ġ${ date } æĹ¥ " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ æķ° åĢ¤ æĸĩåŃĹ ãĤĴ J IS ĠX Ġ 0 2 0 1 ãģ« ãĤ¨ ãĥ³ ãĤ³ãĥ¼ãĥī ãģĻãĤĭ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġto J IS ( c : ĠChar ): ĠByte Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( c ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 0 ' Ġ-> Ġ 0 x 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 1 ' Ġ-> Ġ 0 x 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 2 ' Ġ-> Ġ 0 x 3 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 3 ' Ġ-> Ġ 0 x 3 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 4 ' Ġ-> Ġ 0 x 3 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 5 ' Ġ-> Ġ 0 x 3 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 6 ' Ġ-> Ġ 0 x 3 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 7 ' Ġ-> Ġ 0 x 3 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 8 ' Ġ-> Ġ 0 x 3 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' 9 ' Ġ-> Ġ 0 x 3 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġ}. to Byte () ĊĠĠĠ Ġ} Ċ Ċ }