package Ġdk . cache t . car p . deployments . domain . users Ċ Ċ import Ġdk . cache t . car p . common . application . UUID Ċ import Ġdk . cache t . car p . deployments . application . users . Active Part icipation Invitation Ċ import Ġdk . cache t . car p . deployments . application . users . Part icipation Ċ import Ġdk . cache t . car p . deployments . application . users . Study Invitation Ċ import Ġkotlinx . serialization . Serializable ĊĊ Ċ /** Ċ Ġ* ĠA Ġparticipant , Ġuniquely Ġidentified Ġby Ġ[ part icipation ], Ġlinked Ġto Ġan Ġaccount Ġidentified Ġby Ġ[ accountId ], Ċ Ġ* Ġwhich Ġwas Ġinv ited Ġto Ġa Ġstudy Ġdeployment Ġ( using Ġ[ inv itation ]) Ġusing Ġthe Ġdevices Ġwith Ġ[ assigned Primary Device Role Names ]. Ċ Ġ*/ Ċ @ Serializable Ċ data Ġclass ĠAccount Part icipation ( ĊĠĠĠ Ġval Ġparticip ation : ĠPart icipation , ĊĠĠĠ Ġval Ġassigned Primary Device Role Names : ĠSet < String >, ĊĠĠĠ Ġval ĠaccountId : ĠUUID , ĊĠĠĠ Ġval Ġinv itation : ĠStudy Invitation Ċ ) ĊĊ Ċ /** Ċ Ġ* ĠFilter Ġthe Ġgiven Ġ[ inv itations ] Ġto Ġonly Ġreturn Ġthose Ġthat Ġhave Ġactive Ġstudy Ġdeployments . Ċ Ġ* ĠThis Ġsubset Ġis Ġreturned Ġas Ġ[ Active Part icipation Invitation ] s , Ċ Ġ* Ġapp ending Ġthe Ġcurrent Ġdevice Ġregistration Ġstatus Ġto Ġthe Ġdevices Ġthe Ġparticipant Ġwas Ġinv ited Ġto Ġuse . Ċ Ġ* Ċ Ġ* Ġ@ throws ĠIllegalArgumentException Ġwhen Ġa Ġparticipant Ġgroup Ġfor Ġone Ġof Ġthe Ġ[ inv itations ] Ġis Ġmissing Ġin Ġ[ groups ], Ċ Ġ* Ġor Ġwhen Ġthe Ġdevice Ġroles Ġspecified Ġin Ġ[ inv itations ] Ġdo Ġnot Ġmatch Ġthe Ġassigned Ġdevices . Ċ Ġ*/ Ċ internal Ġfun Ġfilter Active Part icipation Inv itations ( ĊĠĠĠ Ġinv itations : ĠSet < Account Part icipation >, ĊĠĠĠ Ġgroups : ĠList < Participant Group > Ċ ): ĠSet < Active Part icipation Invitation > Ġ= Ġinv itations ĊĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatching Group Ġ= Ġgroups . first OrNull Ġ{ Ġg Ġ-> Ġg . study Deployment Id Ġ== Ġit . part icipation . study Deployment Id Ġ} ĊĠĠĠĠĠĠĠ Ġrequire NotNull ( Ġmatching Group Ġ) Ġ{ Ġ" No Ġdeployment Ġis Ġpassed Ġto Ġpair Ġwith Ġone Ġof Ġthe Ġgiven Ġinv itations ." Ġ} ĊĠĠĠĠĠĠĠ Ġit Ġto Ġmatching Group ĊĠĠĠ Ġ} ĊĠĠĠ Ġ. filter Ġ{ Ġ(_, Ġgroup ) Ġ-> Ġ! group . is Study Deployment Stopped Ġ} ĊĠĠĠ Ġ. map Ġ{ Ġ( inv itation , Ġgroup ) Ġ-> ĊĠĠĠĠĠĠĠ ĠActive Part icipation Invitation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinv itation . part icipation , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinv itation . inv itation , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinv itation . assigned Primary Device Role Names . map Ġ{ Ġgroup . get Assigned Primary Device ( Ġit Ġ) Ġ}. toSet () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}. toSet () Ċ