package Ġno . nav . su . se . bak over . domain . op pd rag Ċ Ċ import Ġarrow . core . Either Ċ import Ġarrow . core . Non Empty List Ċ import Ġarrow . core . left Ċ import Ġarrow . core . non Empty ListOf Ċ import Ġarrow . core . right Ċ import Ġno . nav . su . se . bak over . common . Tid sp unkt Ċ import Ġno . nav . su . se . bak over . common . between Ċ import Ġno . nav . su . se . bak over . common . er F Ã¸ r ste Dag IM Ã¥ ned Ċ import Ġno . nav . su . se . bak over . common . peri ode . Per i ode Ċ import Ġno . nav . su . se . bak over . common . start OfMonth Ċ import Ġno . nav . su . se . bak over . domain . Fn r Ċ import Ġno . nav . su . se . bak over . domain . Nav Ident B ru ker Ċ import Ġno . nav . su . se . bak over . domain . S aks nummer Ċ import Ġno . nav . su . se . bak over . domain . ber eg ning . B ere g ning Ċ import Ġno . nav . su . se . bak over . domain . ber eg ning . Sl Ã¥ Sam men E kv ival ente M Ã¥ ned s ber eg ning er Til B ere g ning sper iod er Ċ import Ġno . nav . su . se . bak over . domain . gr un nl ag . G run nl ag Ċ import Ġno . nav . su . se . bak over . domain . gr un nl ag . G run nl ag . Uf Ã¸ re gr un nl ag . Companion . sl Ã¥ Sam men Per i ode Og Uf Ã¸ re grad Ċ import Ġno . nav . su . se . bak over . domain . op pd rag . U tb et aling . Companion . h ent Over send te U tb et al inger U ten Fe il Ċ import Ġno . nav . su . se . bak over . domain . op pd rag . av stem ming . Av stem m ings n Ã¸ kk el Ċ import Ġjava . time . Clock Ċ import Ġjava . time . LocalDate Ċ import Ġjava . util . UUID Ċ import Ġkotlin . contracts . Experimental Contracts Ċ import Ġkotlin . contracts . contract Ċ Ċ sealed Ġclass ĠU tb et al ings str ateg i Ġ{ ĊĠĠĠ Ġabstract Ġval Ġs ak Id : ĠUUID ĊĠĠĠ Ġabstract Ġval Ġs aks nummer : ĠS aks nummer ĊĠĠĠ Ġabstract Ġval Ġfn r : ĠF nr ĊĠĠĠ Ġabstract Ġval Ġut bet al inger : ĠList < U tb et aling > ĊĠĠĠ Ġabstract Ġval Ġbe handler : ĠNav Ident B ru ker ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠS je kk Ġom Ġvi Ġno en Ġg ang Ġhar Ġfor s Ã¸ kt ĠÃ¥ Ġopp h Ã¸ re Ġy t els en Ġi Ġperiod en Ġf ra Ġ[ dat o For Stan E ller Re akt iver ing ] Ġtil Ġsist e Ġut bet aling . ĊĠĠĠĠ Ġ* ĠH vis Ġdet te Ġer Ġtil f elle Ġkan Ġvi Ġik ke Ġtill ate Ġst ans Ġav Ġy t els en Ġmed Ġden ne Ġdat o en , Ġda Ġen ĠpÃ¥ f Ã¸ l gende Ġre akt iver ing ĊĠĠĠĠ Ġ* Ġi Ġv Ã¦ r ste Ġfall Ġkan Ġf Ã¸ re Ġtil Ġdo bb elt - ut bet al inger . ĊĠĠĠĠ Ġ* ĠTODO Ġj m : ĠM idl ert id ig Ġs per re Ġin nt il ĠT Ã ĺ B Ġhar Ġf ik set Ġfe ilen , Ġse Ġhttps :// jira . ade o . no / browse / TO B - 1 7 7 2 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġun ng Ã¥ Bug Med Re akt iver ing Av Opp h Ã¸ r IO pp drag ( ĊĠĠĠĠĠĠĠ Ġdat o For Stan E ller Re akt iver ing : ĠLocalDate , ĊĠĠĠ Ġ): ĠEither < Unit , ĠUnit > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ut bet al inger . flatMap Ġ{ Ġit . ut bet al ings lin jer Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < U tb et al ings lin je . End ring . Opp h Ã¸ r >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . vir k ning st id sp unkt . between ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPer i ode . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf ra Og Med Ġ= Ġdat o For Stan E ller Re akt iver ing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtil Og Med Ġ= Ġut bet al inger . max Of Ġ{ Ġit . sen este D ato () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUnit . left () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠUnit . right () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠSt ans ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġs ak Id : ĠUUID , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġs aks nummer : ĠS aks nummer , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġfn r : ĠF nr , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġut bet al inger : ĠList < U tb et aling >, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġbe handler : ĠNav Ident B ru ker , ĊĠĠĠĠĠĠĠ Ġval Ġst ans D ato : ĠLocalDate , ĊĠĠĠĠĠĠĠ Ġval Ġclock : ĠClock , ĊĠĠĠ Ġ) Ġ: ĠU tb et al ings str ateg i () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġgener er (): ĠEither < Fe il , ĠU tb et aling . U tb et aling For Sim uler ing > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsist e Over send te U tb et al ings lin je Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsist e Over send te U tb et aling ()?. s iste U tb et al ings lin je () Ġ?: Ġreturn ĠFe il . F ant In gen U tb et al inger . left () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! har Over send te U tb et al inger Et ter ( st ans D ato ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFe il . In gen U tb et al inger Et ter St ans D ato . left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ!( LocalDate . now ( clock ). start OfMonth () Ġ== Ġst ans D ato Ġ|| ĠLocalDate . now ( clock ). plus Months ( 1 ). start OfMonth () Ġ== Ġst ans D ato ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFe il . St ans D ato Er Ik ke F Ã¸ r ste D ato I In ne v Ã¦ ren de E ller N este M Ã¥ ned . left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsist e Over send te U tb et al ings lin je Ġis ĠU tb et al ings lin je . End ring . St ans Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFe il . S iste U tb et aling Er En St ans . left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsist e Over send te U tb et al ings lin je Ġis ĠU tb et al ings lin je . End ring . Opp h Ã¸ r Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFe il . S iste U tb et aling Er Opp h Ã¸ r . left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠTODO Ġj m : Ġkan Ġf j ern es Ġet ter Ġhttps :// jira . ade o . no / browse / TO B - 1 7 7 2 Ġer Ġf ik set . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun ng Ã¥ Bug Med Re akt iver ing Av Opp h Ã¸ r IO pp drag ( st ans D ato ). is Left () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFe il . K an Ik ke Stan se Opp h Ã¸ rte Period er . left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠU tb et aling . U tb et aling For Sim uler ing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp rett et Ġ= ĠT id sp unkt . now ( clock ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ak Id Ġ= Ġs ak Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs aks nummer Ġ= Ġs aks nummer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfn r Ġ= Ġfn r , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġut bet al ings lin jer Ġ= Ġnon Empty ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠU tb et al ings lin je . End ring . St ans ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġut bet al ings lin je Ġ= Ġsist e Over send te U tb et al ings lin je , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvir k ning st id sp unkt Ġ= Ġst ans D ato , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclock Ġ= Ġclock , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠU tb et aling . U tb et al ings Type . ST ANS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe handler Ġ= Ġbe handler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġav stem m ings n Ã¸ kk el Ġ= ĠAv stem m ings n Ã¸ kk el ( Tid sp unkt . now ( clock )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). right () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsealed Ġclass ĠFe il Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠIn gen U tb et al inger Et ter St ans D ato Ġ: ĠFe il () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠSt ans D ato Er Ik ke F Ã¸ r ste D ato I In ne v Ã¦ ren de E ller N este M Ã¥ ned Ġ: ĠFe il () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠS iste U tb et aling Er En St ans Ġ: ĠFe il () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠS iste U tb et aling Er Opp h Ã¸ r Ġ: ĠFe il () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠK an Ik ke Stan se Opp h Ã¸ rte Period er Ġ: ĠFe il () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠF ant In gen U tb et al inger Ġ: ĠFe il () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠN y ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġs ak Id : ĠUUID , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġs aks nummer : ĠS aks nummer , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġfn r : ĠF nr , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġut bet al inger : ĠList < U tb et aling >, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġbe handler : ĠNav Ident B ru ker , ĊĠĠĠĠĠĠĠ Ġval Ġbere g ning : ĠBere g ning , ĊĠĠĠĠĠĠĠ Ġval Ġclock : ĠClock , ĊĠĠĠĠĠĠĠ Ġval Ġu f Ã¸ re gr un nl ag : ĠList < G run nl ag . Uf Ã¸ re gr un nl ag >, ĊĠĠĠ Ġ) Ġ: ĠU tb et al ings str ateg i () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġgenerate (): ĠU tb et aling . U tb et aling For Sim uler ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġut bet al ings lin jer Ġ= Ġcreate U tb et aling sper iod er ( ber eg ning , Ġu f Ã¸ re gr un nl ag ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠU tb et al ings lin je . Ny ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf ra Og Med Ġ= Ġit . f ra Og Med , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtil Og Med Ġ= Ġit . til Og Med , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ri ge U tb et al ings lin je Id Ġ= Ġsist e Over send te U tb et aling ()?. s iste U tb et al ings lin je ()?. id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbel Ã¸ p Ġ= Ġit . bel Ã¸ p , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu f Ã¸ re grad Ġ= Ġit . uf Ã¸ re grad , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . zip With Next Ġ{ Ġa , Ġb Ġ-> Ġb . link ( a ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠU tb et aling . U tb et aling For Sim uler ing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ak Id Ġ= Ġs ak Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs aks nummer Ġ= Ġs aks nummer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġut bet al ings lin jer Ġ= ĠNon Empty List . fromList Unsafe ( ut bet al ings lin jer ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfn r Ġ= Ġfn r , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠU tb et aling . U tb et al ings Type . NY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe handler Ġ= Ġbe handler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġav stem m ings n Ã¸ kk el Ġ= ĠAv stem m ings n Ã¸ kk el ( Tid sp unkt . now ( clock )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate U tb et aling sper iod er ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbere g ning : ĠBere g ning , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu f Ã¸ re gr un nl ag : ĠList < G run nl ag . Uf Ã¸ re gr un nl ag >, ĊĠĠĠĠĠĠĠ Ġ): ĠList < U tb et aling sp eri ode > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsl Ã¥ tt Sam men M Ã¥ ned s ber eg ning er Ġ= ĠSl Ã¥ Sam men E kv ival ente M Ã¥ ned s ber eg ning er Til B ere g ning sper iod er ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbere g ning . getM Ã¥ ned s ber eg ning er (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). ber eg ning sper iod er ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsl Ã¥ tt Sam men Uf Ã¸ re gr un nl ag Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu f Ã¸ re gr un nl ag . sl Ã¥ Sam men Per i ode Og Uf Ã¸ re grad () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmÃ¥ ned sper iod er Ġ= Ġsl Ã¥ tt Sam men M Ã¥ ned s ber eg ning er . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . peri ode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . til M Ã¥ ned sper iod er () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. distinct () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġu f Ã¸ re gr un nl ag Period er Ġ= Ġsl Ã¥ tt Sam men Uf Ã¸ re gr un nl ag . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . til M Ã¥ ned sper iod er () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. distinct () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġu f Ã¸ re gr un nl ag In ne holder Alle M Ã¥ ned sper iod er Ġ= Ġu f Ã¸ re gr un nl ag Period er . contains All ( m Ã¥ ned sper iod er ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! uf Ã¸ re gr un nl ag In ne holder Alle M Ã¥ ned sper iod er ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠU tb et aling Strategy Exception (" Uf Ã¸ re gr un n la get Ġin ne holder Ġik ke Ġalle Ġbere g ning sper iod ene . ĠG run nl ag sper iod ene : Ġ$ uf Ã¸ re gr un nl ag Period er , Ġbere g ning sper iod ene : Ġ$ m Ã¥ ned sper iod er ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsl Ã¥ tt Sam men Uf Ã¸ re gr un nl ag . flatMap Ġ{ Ġg run nl ag Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsl Ã¥ tt Sam men M Ã¥ ned s ber eg ning er . map NotNull Ġ{ ĠmÃ¥ ned s bere ging Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmÃ¥ ned s bere ging . peri ode . sn itt ( gr un nl ag . first )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrip le ( m Ã¥ ned s bere ging , Ġg run nl ag . second , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠU tb et aling sp eri ode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf ra Og Med Ġ= Ġit . third . f ra Og Med , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtil Og Med Ġ= Ġit . third . til Og Med , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbel Ã¸ p Ġ= Ġit . first . get Sum Yt else (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu f Ã¸ re grad Ġ= Ġit . second , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠO pp h Ã¸ r ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġs ak Id : ĠUUID , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġs aks nummer : ĠS aks nummer , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġfn r : ĠF nr , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġut bet al inger : ĠList < U tb et aling >, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġbe handler : ĠNav Ident B ru ker , ĊĠĠĠĠĠĠĠ Ġval Ġopp h Ã¸ rs D ato : ĠLocalDate , ĊĠĠĠĠĠĠĠ Ġval Ġclock : ĠClock , ĊĠĠĠ Ġ) Ġ: ĠU tb et al ings str ateg i () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġgenerate (): ĠU tb et aling . U tb et aling For Sim uler ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsist e U tb et al ings lin je Ġ= Ġsist e Over send te U tb et aling ()?. s iste U tb et al ings lin je ()?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( op ph Ã¸ rs D ato . is Before ( it . til Og Med )) Ġ{ Ġ" D ato Ġfor Ġopp h Ã¸ r ĠmÃ¥ Ġv Ã¦ re Ġtid lig ere Ġen n Ġtil Og Med Ġfor Ġsist e Ġut bet al ings lin je " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( op ph Ã¸ rs D ato . er F Ã¸ r ste Dag IM Ã¥ ned ()) Ġ{ Ġ" Yt else Ġkan Ġkun Ġopp h Ã¸ res Ġf ra Ġf Ã¸ r ste Ġdag Ġi ĠmÃ¥ ned en " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠU tb et aling Strategy Exception (" In gen Ġover send te Ġut bet al inger ĠÃ¥ Ġopp h Ã¸ re ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠU tb et aling . U tb et aling For Sim uler ing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ak Id Ġ= Ġs ak Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs aks nummer Ġ= Ġs aks nummer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġut bet al ings lin jer Ġ= Ġnon Empty ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠU tb et al ings lin je . End ring . Opp h Ã¸ r ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġut bet al ings lin je Ġ= Ġsist e U tb et al ings lin je , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvir k ning st id sp unkt Ġ= Ġopp h Ã¸ rs D ato , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclock Ġ= Ġclock , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfn r Ġ= Ġfn r , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠU tb et aling . U tb et al ings Type . OP PH Ã ĺ R , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe handler Ġ= Ġbe handler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġav stem m ings n Ã¸ kk el Ġ= ĠAv stem m ings n Ã¸ kk el ( Tid sp unkt . now ( clock )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠG jen op pta ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġs ak Id : ĠUUID , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġs aks nummer : ĠS aks nummer , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġfn r : ĠF nr , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġut bet al inger : ĠList < U tb et aling >, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġbe handler : ĠNav Ident B ru ker , ĊĠĠĠĠĠĠĠ Ġval Ġclock : ĠClock , ĊĠĠĠ Ġ) Ġ: ĠU tb et al ings str ateg i () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġgener er (): ĠEither < Fe il , ĠU tb et aling . U tb et aling For Sim uler ing > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsist e Over send te U tb et al ings lin je Ġ= Ġsist e Over send te U tb et aling ()?. s iste U tb et al ings lin je () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠFe il . F ant In gen U tb et al inger . left () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s iste Over send te U tb et al ings lin je Ġ! is ĠU tb et al ings lin je . End ring . St ans ) Ġreturn ĠFe il . S iste U tb et aling Er Ik ke St ans . left () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠTODO Ġj m : Ġkan Ġf j ern es Ġet ter Ġhttps :// jira . ade o . no / browse / TO B - 1 7 7 2 Ġer Ġf ik set . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠI Ġsam me Ġo mg ang ĠmÃ¥ Ġvi Ġta Ġstill ing Ġtil Ġhv ordan Ġvi ĠÃ ¸ n sk er Ġat Ġdet te Ġskal Ġfun ger er Ġfor Ġoss , Ġs pes iel t Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġtil f eller Ġh vor Ġperiod en Ġsom Ġg jen op pt as Ġin ne holder Ġopp h Ã¸ r Ġ( sk al Ġalt Ġet ter Ġden ne Ġdat o en Ġre akt iver es ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġu an set t , Ġeller Ġskal Ġkun Ġet Ġs pes ifi kt Ġopp h Ã¸ r Ġre akt ivers ). ĠDefault Ġopp f Ã¸ r sel Ġer Ġat Ġkun Ġmatch Ġmed Ġdat o Ġre akt ivers . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( un ng Ã¥ Bug Med Re akt iver ing Av Opp h Ã¸ r IO pp drag ( s iste Over send te U tb et al ings lin je . vir k ning st id sp unkt ). is Left ()) Ġreturn ĠFe il . K an Ik ke G jen op pta Opp h Ã¸ rte Per i ode . left () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠU tb et aling . U tb et aling For Sim uler ing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ak Id Ġ= Ġs ak Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs aks nummer Ġ= Ġs aks nummer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġut bet al ings lin jer Ġ= Ġnon Empty ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠU tb et al ings lin je . End ring . Re akt iver ing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġut bet al ings lin je Ġ= Ġsist e Over send te U tb et al ings lin je , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvir k ning st id sp unkt Ġ= Ġsist e Over send te U tb et al ings lin je . vir k ning st id sp unkt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclock Ġ= Ġclock , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfn r Ġ= Ġfn r , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠU tb et aling . U tb et al ings Type . GJ EN OP PT A , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe handler Ġ= Ġbe handler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġav stem m ings n Ã¸ kk el Ġ= ĠAv stem m ings n Ã¸ kk el ( Tid sp unkt . now ( clock )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). right () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsealed Ġclass ĠFe il Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠF ant In gen U tb et al inger Ġ: ĠFe il () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠS iste U tb et aling Er Ik ke St ans Ġ: ĠFe il () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠK an Ik ke G jen op pta Opp h Ã¸ rte Per i ode Ġ: ĠFe il () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Opt In ( Experimental Contracts :: class ) ĊĠĠĠ Ġprotected Ġinline Ġfun Ġvalidate ( value : ĠBoolean , Ġlazy Message : Ġ() Ġ-> ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturns () Ġimplies Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġlazy Message () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠU tb et aling Strategy Exception ( message . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġsist e Over send te U tb et aling (): ĠU tb et aling ? Ġ= ĊĠĠĠĠĠĠĠ Ġut bet al inger . h ent Over send te U tb et al inger U ten Fe il (). last OrNull () ĊĊĠĠĠ Ġprotected Ġfun Ġhar Over send te U tb et al inger Et ter ( value : ĠLocalDate ) Ġ= Ġut bet al inger . h ent Over send te U tb et al inger U ten Fe il () ĊĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . ut bet al ings lin jer Ġ} ĊĠĠĠĠĠĠĠ Ġ. any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . til Og Med . isEqual ( value ) Ġ|| Ġit . til Og Med . is After ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠU tb et aling Strategy Exception ( msg : ĠString ) Ġ: ĠRuntimeException ( msg ) Ċ } Ċ