package Ġcom . co def or ces visual izer . contest . list Ċ Ċ import Ġandroidx . compose . foundation . Experimental Foundation Api Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . items Ċ import Ġandroidx . compose . foundation . lazy . remember Lazy List State Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġcom . co def or ces visual izer . contest . R Ċ import Ġcom . co def or ces visual izer . domain . entity . Cont est Ċ Ċ @ Opt In ( Experimental Foundation Api :: class ) Ċ @ Composable Ċ internal Ġfun ĠCont est List ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġcontest List : ĠList < Cont est >, ĊĠĠĠ Ġopen Cont est Details : Ġ( Int ) Ġ-> ĠUnit , ĊĠĠĠ Ġon Open Web Site : Ġ( Int ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġstate Ġ= Ġremember Lazy List State () ĊĊĠĠĠ Ġval Ġupcoming Ġ= Ġcontest List . filter Ġ{ Ġit . scheduled Ġ}. as Re versed () ĊĠĠĠ Ġval Ġpast Ġ= Ġcontest List . filter Ġ{ Ġ! it . scheduled Ġ} ĊĠĠĠ Ġval Ġgrouped Ġ= Ġlinked Map Of < String , ĠList < Cont est >>() ĊĊĠĠĠ Ġif Ġ( up coming . isNotEmpty ()) Ġgrouped [ string Resource ( id Ġ= ĠR . string . up coming )] Ġ= Ġupcoming ĊĠĠĠ Ġgrouped [ string Resource ( id Ġ= ĠR . string . past )] Ġ= Ġpast ĊĊĠĠĠ ĠLazy Column ( modifier Ġ= Ġmodifier , Ġstate Ġ= Ġstate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgrouped . forEach Ġ{ Ġ( title , Ġlist ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsticky Header Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHeader ( modifier Ġ= ĠModifier , Ġtext Ġ= Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems ( list ) Ġ{ Ġcontest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCont est ListItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontest Ġ= Ġcontest , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Cont est Details Ġ= Ġopen Cont est Details , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Open Web Site Ġ= Ġon Open Web Site ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }