package Ġcom . dur hack . sharp shot . util Ċ Ċ import Ġjavafx . geometry . Point 2 D Ċ import Ġjava . math . BigInteger Ċ Ċ fun ĠChar . as BigInteger () Ġ= ĠBigInteger ( toInt (). toString ()) Ċ fun ĠBigInteger . as Char () Ġ= Ġto Int (). to Char () Ċ Ċ inline Ġfun Ġ< re ified ĠK , Ġre ified ĠR > ĠMap < K , Ġ* >. filter Type (): ĠMap < K , ĠR > Ġ{ ĊĠĠĠ Ġval Ġdest Ġ= Ġmutable Map Of < K , ĠR >() ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġthis ) Ġif Ġ( value Ġis ĠR ) Ġdest . put ( key , Ġvalue ) ĊĠĠĠ Ġreturn Ġdest Ċ } Ċ Ċ fun Ġ< T > ĠIterable < T >. pair Duplicates (): ĠList < Pair < T , ĠT >> Ġ{ ĊĠĠĠ Ġval Ġseen Ġ= Ġmutable Map Of < T , ĠT >() ĊĠĠĠ Ġval Ġpairs Ġ= Ġmutable ListOf < Pair < T , ĠT >>() ĊĊĠĠĠ ĠforEach Ġ{ Ġelem Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġo th Ġ= Ġseen [ elem ] ĊĠĠĠĠĠĠĠ Ġif Ġ( oth Ġ== Ġnull ) Ġseen [ elem ] Ġ= Ġelem ĊĠĠĠĠĠĠĠ Ġelse Ġpairs . add ( elem Ġto Ġo th ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġpairs Ċ } Ċ Ċ fun Ġ< T : ĠComparable < T >> ĠT . clamp ( min : ĠT ? Ġ= Ġnull , Ġmax : ĠT ? Ġ= Ġnull ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġmin Ġ!= Ġnull Ġ&& Ġthis Ġ< Ġmin Ġ-> Ġmin ĊĠĠĠĠĠĠĠ Ġmax Ġ!= Ġnull Ġ&& Ġthis Ġ> Ġmax Ġ-> Ġmax ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis ĊĠĠĠ Ġ} Ċ } Ċ Ċ operator Ġfun ĠPoint 2 D . div ( oth : ĠPoint 2 D ): ĠPoint 2 D Ġ= ĠPoint 2 D ( x Ġ/ Ġo th . x , Ġy Ġ/ Ġo th . y ) Ċ operator Ġfun ĠPoint 2 D . times ( oth : ĠNumber ): ĠPoint 2 D Ġ= ĠPoint 2 D ( x Ġ* Ġo th . toDouble (), Ġy Ġ* Ġo th . toDouble ()) Ċ fun ĠPoint 2 D . clamp ( min : ĠDouble , Ġmax : ĠDouble ): ĠPoint 2 D Ġ= ĠPoint 2 D ( x . clamp ( min , Ġmax ), Ġy . clamp ( min , Ġmax ))