package Ġde . r ki . cor on aw arn app . bug reporting . c ensors . dc ct icket ing Ċ Ċ import Ġde . r ki . cor on aw arn app . bug reporting . c ensors . Bug C ensor Ċ import Ġde . r ki . cor on aw arn app . dc ct icket ing . core . transaction . D cc Ticket ing Validation Condition Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . flow . update Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠD cc Ticket ing Jwt C ensor Ġ@ Inject Ġconstructor () Ġ: ĠBug C ensor Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġjwt Flow Ġ= ĠMutable State Flow < Set < String >>( value Ġ= Ġempty Set ()) ĊĠĠĠ Ġprivate Ġval Ġvc Flow Ġ= ĠMutable State Flow < Set < D cc Ticket ing Validation Condition >>( value Ġ= Ġempty Set ()) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġcheck Log ( message : ĠString ): ĠBug C ensor . C ensor Container ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnew Message Ġ= ĠBug C ensor . C ensor Container ( message ) ĊĠĠĠĠĠĠĠ Ġjwt Flow . first (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġc ensor Jwt ( it , Ġnew Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvc Flow . first (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġc ensor Vc ( it , Ġnew Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnew Message . null If Empty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Jwt ( raw Jwt : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjwt Flow . update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . plus ( raw Jwt ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Vc ( vc : ĠD cc Ticket ing Validation Condition ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvc Flow . update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . plus ( vc ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġc ensor Vc ( ĊĠĠĠĠĠĠĠ Ġvc : ĠD cc Ticket ing Validation Condition , ĊĠĠĠĠĠĠĠ Ġmessage : ĠBug C ensor . C ensor Container ĊĠĠĠ Ġ): ĠBug C ensor . C ensor Container Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnew Message Ġ= Ġmessage ĊĠĠĠĠĠĠĠ Ġvc . g nt ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġit . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / given Name " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvc . f nt ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġit . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / family Name " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvc . dob ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġit . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / date OfBirth " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvc . coa ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġit . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / country Of Arrival " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvc . ro a ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġit . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / region Of Arrival " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvc . cod ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġit . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / country Of Depart ure " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvc . rod ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġit . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / region Of Depart ure " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvc . category ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Indexed Ġ{ Ġindex , Ġcategory Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġcategory . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / category $ index " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvc . validation Clock ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġit . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / validation Clock " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvc . valid From ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġit . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / valid From " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvc . valid To ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġit . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplacement Ġ= Ġ" ticket ing / valid To " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnew Message ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġc ensor Jwt ( ĊĠĠĠĠĠĠĠ Ġraw Jwt : ĠString , ĊĠĠĠĠĠĠĠ Ġmessage : ĠBug C ensor . C ensor Container ĊĠĠĠ Ġ): ĠBug C ensor . C ensor Container Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnew Message Ġ= Ġmessage ĊĠĠĠĠĠĠĠ Ġnew Message Ġ= Ġnew Message . c ensor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Replace Ġ= Ġraw Jwt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ticket ing / raw Jwt " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Message ĊĠĠĠ Ġ} Ċ } Ċ