/* Ċ Ġ* Ġ( C ) ĠCopyright ĠIBM ĠDe ut sch land ĠGmbH Ġ 2 0 2 1 Ċ Ġ* Ġ( C ) ĠCopyright ĠIBM ĠCorp . Ġ 2 0 2 1 Ċ Ġ*/ Ċ Ċ package Ġde . r ki . cov pass . sdk . dependencies Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ import Ġcom . ens ody . reactiv est ate . Dependency Accessor Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġde . r ki . cov pass . http . http Config Ċ import Ġde . r ki . cov pass . http . pin PublicKey Ċ import Ġde . r ki . cov pass . sdk . R Ċ import Ġde . r ki . cov pass . sdk . cert .* Ċ import Ġde . r ki . cov pass . sdk . cert . models . Certificate List Mapper Ċ import Ġde . r ki . cov pass . sdk . cert . models . D sc List Ċ import Ġde . r ki . cov pass . sdk . crypto . read Pem Asset Ċ import Ġde . r ki . cov pass . sdk . crypto . read Pem Key Asset Ċ import Ġde . r ki . cov pass . sdk . rules .* Ċ import Ġde . r ki . cov pass . sdk . rules . boost er . Boost er Rule Ċ import Ġde . r ki . cov pass . sdk . rules . boost er . Cov Pass Boost er Rules Repository Ċ import Ġde . r ki . cov pass . sdk . rules . boost er . local . Boost er Rules Dao Ċ import Ġde . r ki . cov pass . sdk . rules . boost er . local . Cov Pass Boost er Rules Local DataSource Ċ import Ġde . r ki . cov pass . sdk . rules . boost er . remote . Boost er Rule Initial Ċ import Ġde . r ki . cov pass . sdk . rules . boost er . remote . Boost er Rule Remote Ċ import Ġde . r ki . cov pass . sdk . rules . boost er . remote . to Boost er Rule Ċ import Ġde . r ki . cov pass . sdk . rules . domain . rules . Cov Pass Get Rules UseCase Ċ import Ġde . r ki . cov pass . sdk . rules . local . Cov Pass Database Ċ import Ġde . r ki . cov pass . sdk . rules . local . countries . Countries Dao Ċ import Ġde . r ki . cov pass . sdk . rules . local . countries . Cov Pass Countries Local DataSource Ċ import Ġde . r ki . cov pass . sdk . rules . local . rules . Cov Pass Rules Dao Ċ import Ġde . r ki . cov pass . sdk . rules . local . rules . Cov Pass Rules Local DataSource Ċ import Ġde . r ki . cov pass . sdk . rules . local . value sets . Cov Pass Value Sets Dao Ċ import Ġde . r ki . cov pass . sdk . rules . local . value sets . Cov Pass Value Sets Local DataSource Ċ import Ġde . r ki . cov pass . sdk . rules . remote . rules . Cov Pass Rule Initial Ċ import Ġde . r ki . cov pass . sdk . rules . remote . rules . Cov Pass Rule Remote Ċ import Ġde . r ki . cov pass . sdk . rules . remote . rules . to Cov Pass Rule Ċ import Ġde . r ki . cov pass . sdk . rules . remote . value sets . Cov Pass Value Set Initial Ċ import Ġde . r ki . cov pass . sdk . rules . remote . value sets . Cov Pass Value Set Remote Ċ import Ġde . r ki . cov pass . sdk . rules . remote . value sets . to Cov Pass Value Set Ċ import Ġde . r ki . cov pass . sdk . storage . Cb or Shared Prefs Store Ċ import Ġde . r ki . cov pass . sdk . storage . D sc Repository Ċ import Ġde . r ki . cov pass . sdk . storage . Rules Update Repository Ċ import Ġde . r ki . cov pass . sdk . utils . read Text Asset Ċ import Ġdg ca . verifier . app . engine .* Ċ import Ġkotlinx . serialization . cb or . Cb or Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġjava . security . cert . X 5 0 9 Certificate Ċ Ċ /** Ċ Ġ* ĠGlobal Ġvar Ġfor Ġmaking Ġthe Ġ[ Sdk Dependencies ] Ġaccessible . Ċ Ġ*/ Ċ private Ġlateinit Ġvar Ġ_ sdk Deps : ĠS dk Dependencies Ċ Ċ @ Dependency Accessor Ċ public Ġvar Ġsdk Deps : ĠS dk Dependencies ĊĠĠĠ Ġget () Ġ= Ġ_ sdk Deps ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ sdk Deps Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġvalue . init () ĊĠĠĠ Ġ} Ċ Ċ @ Opt In ( Dependency Accessor :: class ) Ċ public Ġval ĠLifecycle Owner . sdk Deps : ĠS dk Dependencies ĊĠĠĠ Ġget () Ġ= Ġde . r ki . cov pass . sdk . dependencies . sdk Deps Ċ Ċ /** Ċ Ġ* ĠAccess Ġto Ġvarious Ġdependencies Ġfor Ġcov pass - sdk Ġmodule . Ċ Ġ*/ Ċ public Ġabstract Ġclass ĠS dk Dependencies Ġ{ ĊĊĠĠĠ Ġpublic Ġabstract Ġval Ġapplication : ĠApplication ĊĊĠĠĠ Ġpublic Ġopen Ġval Ġtrust Service Host : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġapplication . getString ( R . string . trust _ service _ host ). take If Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" You Ġhave Ġto Ġset Ġ@ string / trust _ service _ host Ġor Ġoverride Ġtrust Service Host ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠhttpClient Ġby Ġlazy Ġ{ Ġhttp Config . ktor Client () Ġ} ĊĊĠĠĠ Ġpublic Ġopen Ġval Ġbackend Ca : ĠList < X 5 0 9 Certificate > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġapplication . read Pem Asset (" cov pass - sdk / backend - ca . pem ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġd sc List : ĠD sc List Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdecoder . decode D sc List ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . read Text Asset (" cov pass - sdk / dsc - list . json ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġd sc List Service : ĠD sc List Service Ġby Ġlazy Ġ{ ĠD sc List Service ( httpClient , Ġtrust Service Host ) Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġd sc Repository : ĠD sc Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠD sc Repository ( Cb or Shared Prefs Store (" dsc _ cert _ prefs ", Ġcb or ), Ġd sc List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġrules Update Repository : ĠRules Update Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRules Update Repository ( Cb or Shared Prefs Store (" rules _ update _ prefs ", Ġcb or )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġvalidator : ĠCert Validator Ġby Ġlazy Ġ{ ĠCert Validator ( dsc List . to Trusted Certs (), Ġcb or ) Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġdecoder : ĠD sc List Decoder Ġby Ġlazy Ġ{ ĠD sc List Decoder ( publicKey . first ()) Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠpublicKey Ġby Ġlazy Ġ{ Ġapplication . read Pem Key Asset (" cov pass - sdk / dsc - list - signing - key . pem ") Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ Q RC oder ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġval Ġqr Coder : ĠQ RC oder Ġby Ġlazy Ġ{ ĠQ RC oder ( validator ) Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġcb or : ĠC bor Ġ= Ġdefault Cb or ĊĊĠĠĠ Ġpublic Ġval Ġjson : ĠJson Ġ= Ġdefault Json ĊĊĠĠĠ Ġinternal Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġhttp Config . pin PublicKey ( backend Ca ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġcertificate List Mapper : ĠCertificate List Mapper Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠCertificate List Mapper ( qr Coder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcert Logic Deps : ĠCert Logic Deps Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠCert Logic Deps ( application ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġd cc Rules Host : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġapplication . getString ( R . string . dcc _ rules _ host ). take If Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" You Ġhave Ġto Ġset Ġ@ string / dcc _ rules _ host Ġor Ġoverride Ġd cc Rules Host ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Rules Remote DataSource : ĠC ov Pass Rules Remote DataSource Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Rules Remote DataSource ( httpClient , Ġd cc Rules Host ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Value Sets Remote DataSource : ĠC ov Pass Value Sets Remote DataSource Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Value Sets Remote DataSource ( httpClient , Ġd cc Rules Host ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġboost er Rules Remote DataSource : ĠBoost er Rules Remote DataSource Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠBoost er Rules Remote DataSource ( httpClient , Ġd cc Rules Host ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcountries Remote DataSource : ĠC ov Pass Countries Remote DataSource Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Countries Remote DataSource ( httpClient , Ġd cc Rules Host ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Database : ĠC ov Pass Database Ġby Ġlazy Ġ{ Ġcreate Db (" cov pass - database ") Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠRoom Database > Ġcreate Db ( name : ĠString ): ĠT Ġ= ĊĠĠĠĠĠĠĠ ĠRoom . database Builder ( application , ĠT :: class . java , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fallback To Dest ruct ive Migration () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Rules Local DataSource : ĠC ov Pass Rules Local DataSource Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Rules Local DataSource ( cov Pass Rules Dao ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Value Sets Local DataSource : ĠC ov Pass Value Sets Local DataSource Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Value Sets Local DataSource ( cov Pass Value Sets Dao ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Boost er Rules Local DataSource : ĠC ov Pass Boost er Rules Local DataSource Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Boost er Rules Local DataSource ( boost er Rule Dao ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Countries Local DataSource : ĠC ov Pass Countries Local DataSource Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Countries Local DataSource ( countries Dao ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Rules Dao : ĠC ov Pass Rules Dao Ġby Ġlazy Ġ{ Ġcov Pass Database . cov Pass Rules Dao () Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Value Sets Dao : ĠC ov Pass Value Sets Dao Ġby Ġlazy Ġ{ Ġcov Pass Database . cov Pass Value Sets Dao () Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġboost er Rule Dao : ĠBoost er Rules Dao Ġby Ġlazy Ġ{ Ġcov Pass Database . boost er Rules Dao () Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcountries Dao : ĠCount ries Dao Ġby Ġlazy Ġ{ Ġcov Pass Database . countries Dao () Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġeu Rule Path : ĠString Ġby Ġlazy Ġ{ Ġ" cov pass - sdk / eu - rules . json " Ġ} ĊĠĠĠ Ġprivate Ġval Ġcov Pass Rules Initial : ĠList < Cov Pass Rule Initial > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Json . decode FromString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . read Text Asset ( eu Rule Path ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Rules Remote : ĠList < Cov Pass Rule Remote > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Json . decode FromString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . read Text Asset ( eu Rule Path ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġbundled Rules : ĠList < Cov Pass Rule > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġcov Pass Rules Remote . zip ( cov Pass Rules Initial ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . first . to Cov Pass Rule ( it . second . hash ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġeu Value Sets Path : ĠString Ġby Ġlazy Ġ{ Ġ" cov pass - sdk / eu - value - sets . json " Ġ} ĊĠĠĠ Ġprivate Ġval Ġcov Pass Value Sets Remote : ĠList < Cov Pass Value Set Remote > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Json . decode FromString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . read Text Asset ( eu Value Sets Path ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcov Pass Value Sets Initial : ĠList < Cov Pass Value Set Initial > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Json . decode FromString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . read Text Asset ( eu Value Sets Path ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġbundled Value Sets : ĠList < Cov Pass Value Set > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġcov Pass Value Sets Remote . zip ( cov Pass Value Sets Initial ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . first . to Cov Pass Value Set ( it . second . hash ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġboost er Rules Path : ĠString Ġby Ġlazy Ġ{ Ġ" cov pass - sdk / eu - boost er - rules . json " Ġ} ĊĠĠĠ Ġpublic Ġval Ġboost er Rules Remote : ĠList < Boost er Rule Remote > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Json . decode FromString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . read Text Asset ( boost er Rules Path ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġboost er Rules Initial : ĠList < Boost er Rule Initial > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Json . decode FromString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . read Text Asset ( boost er Rules Path ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġbundled Boost er Rules : ĠList < Boost er Rule > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġboost er Rules Remote . zip ( boost er Rules Initial ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . first . to Boost er Rule ( it . second . hash ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġbundled Countries : ĠList < String > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Json . decode FromString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . read Text Asset (" cov pass - sdk / eu - countries . json ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġcov Pass Rules Repository : ĠC ov Pass Rules Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Rules Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcov Pass Rules Remote DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcov Pass Rules Local DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrules Update Repository ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġcov Pass Value Sets Repository : ĠC ov Pass Value Sets Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Value Sets Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcov Pass Value Sets Remote DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcov Pass Value Sets Local DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrules Update Repository ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġcov Pass Boost er Rules Repository : ĠC ov Pass Boost er Rules Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Boost er Rules Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboost er Rules Remote DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcov Pass Boost er Rules Local DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrules Update Repository ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġcov Pass Countries Repository : ĠC ov Pass Countries Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Countries Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcountries Remote DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcov Pass Countries Local DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrules Update Repository ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġget Rules UseCase : ĠC ov Pass Get Rules UseCase Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠC ov Pass Get Rules UseCase ( cov Pass Rules Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġrules Validator : ĠRules Validator Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRules Validator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Rules UseCase , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcert Logic Deps . cert Logic Engine , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcov Pass Value Sets Repository ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġboost er Cert Logic Engine : ĠBoost er Cert Logic Engine Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠBoost er Cert Logic Engine ( cert Logic Deps . json Logic Validator ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġboost er Rules Validator : ĠBoost er Rules Validator Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠBoost er Rules Validator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboost er Cert Logic Engine , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcov Pass Boost er Rules Repository ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ public Ġclass ĠCert Logic Deps ( ĊĠĠĠ Ġprivate Ġval Ġapplication : ĠApplication Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠobjectMapper : ĠObjectMapper Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠObjectMapper (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind And Register Modules () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġjson Schema : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġapplication . read Text Asset (" cov pass - sdk / json - schema - v 1 . json ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġjson Logic Validator : ĠJson Logic Validator Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠDefault Json Logic Validator () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġaffected Fields Data Retriever : ĠAff ected Fields Data Retriever Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠDefault Affected Fields Data Retriever ( object Mapper . read Tree ( json Schema ), ĠobjectMapper ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġval Ġcert Logic Engine : ĠCert Logic Engine Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠDefault Cert Logic Engine ( affected Fields Data Retriever , Ġjson Logic Validator ) ĊĠĠĠ Ġ} Ċ } Ċ