package Ġorg . ve up ath db . lib . blast . delt ab last . fields ĊĊ Ċ import Ġcom . fasterxml . jackson . databind . node . Object Node Ċ import Ġorg . ve up ath db . lib . blast . common . Flag D ust Ċ import Ġorg . ve up ath db . lib . blast . common . Flag Seg Ċ import Ġorg . ve up ath db . lib . blast . common . fields . Seg Ċ import Ġorg . ve up ath db . lib . blast . util . req D ub Ċ import Ġorg . ve up ath db . lib . blast . util . req Int Ċ import Ġorg . ve up ath db . lib . jackson . Json Ċ Ċ private Ġconst Ġval ĠKey Seg Ġ= Ġ"- seg " Ċ private Ġconst Ġval ĠKey Window Ġ= Ġ" window " Ċ private Ġconst Ġval ĠKey Loc ut Ġ= Ġ" loc ut " Ċ private Ġconst Ġval ĠKey H ic ut Ġ= Ġ" h ic ut " ĊĊ Ċ sealed Ġinterface ĠSeg Delta Ġ: ĠSeg Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġyes (): ĠSeg Delta Ġ= ĠYes Seg D ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġno (): ĠSeg Delta Ġ= ĠNo Seg D ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġof ( window : ĠInt , Ġloc ut : ĠDouble , Ġh ic ut : ĠDouble ): ĠSeg Delta Ġ= ĊĠĠĠĠĠ ĠVal Seg D ( window , Ġloc ut , Ġh ic ut ) ĊĠ Ġ} Ċ } ĊĊ Ċ internal Ġfun ĠParse Seg Delta ( js : ĠObject Node ): ĠSeg Delta Ġ{ ĊĠ Ġval Ġtmp Ġ= Ġjs [ Key Seg ] Ġ?: Ġreturn ĠNo Seg D ĊĊĠ Ġif Ġ( tmp . is Text ual ) Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( js . text Value ()) Ġ{ ĊĠĠĠĠĠ Ġ" yes " Ġ-> ĠYes Seg D ĊĠĠĠĠĠ Ġ" no " Ġ Ġ-> ĠNo Seg D ĊĠĠĠĠĠ Ġelse Ġ Ġ-> Ġthrow ĠIllegalArgumentException ("$ Key Seg Ġmust Ġbe Ġan Ġobject Ġor Ġone Ġof Ġthe Ġstring Ġvalues Ġ\" yes \" Ġor Ġ\" no \" .") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġif Ġ( tmp . isObject ) ĊĠĠĠ Ġreturn Ġparse Seg ( tmp Ġas ĠObject Node ) ĊĊĠ Ġthrow ĠIllegalArgumentException ("$ Key Seg Ġmust Ġbe Ġan Ġobject Ġor Ġone Ġof Ġthe Ġstring Ġvalues Ġ\" yes \" Ġor Ġ\" no \" .") Ċ } ĊĊ Ċ internal Ġobject ĠYes Seg D Ġ: ĠSeg Delta Ġ{ ĊĠ Ġoverride Ġval Ġis Yes Ġget () Ġ= Ġtrue ĊĊĠ Ġoverride Ġval Ġis No Ġget () Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġwindow ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġa Ġ$ Key Seg .$ Key Window Ġvalue Ġfrom Ġ\" yes \" .") ĊĊĠ Ġoverride Ġval Ġloc ut : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġa Ġ$ Key Seg .$ Key Loc ut Ġvalue Ġfrom Ġ\" yes \" .") ĊĊĠ Ġoverride Ġval Ġh ic ut : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġa Ġ$ Key Seg .$ Key H ic ut Ġvalue Ġfrom Ġ\" yes \" .") ĊĊĠ Ġoverride Ġval Ġis Default Ġget () Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠ Ġget () Ġ= ĠFlag Seg ĊĊĠ Ġoverride Ġfun Ġappend Json ( js : ĠObject Node ) Ġ{ ĊĠĠĠ Ġjs . put ( Key Seg , Ġ" yes ") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġappend Cli Segment ( cli : ĠStringBuilder ) Ġ{ ĊĠĠĠ Ġcli . append (" Ġ$ Key Seg Ġyes ") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġappend Cli Parts ( cli : ĠMutable List < String >) Ġ{ ĊĠĠĠ Ġcli . add ( Key Seg ) ĊĠĠĠ Ġcli . add (" yes ") ĊĠ Ġ} Ċ } ĊĊ Ċ internal Ġobject ĠNo Seg D Ġ: ĠSeg Delta Ġ{ ĊĠ Ġoverride Ġval Ġis Yes Ġget () Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġis No Ġget () Ġ= Ġtrue ĊĊĠ Ġoverride Ġval Ġwindow ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġa Ġ$ Key Seg .$ Key Window Ġvalue Ġfrom Ġ\" no \" .") ĊĊĠ Ġoverride Ġval Ġloc ut : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġa Ġ$ Key Seg .$ Key Loc ut Ġvalue Ġfrom Ġ\" no \" .") ĊĊĠ Ġoverride Ġval Ġh ic ut : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġthrow ĠIllegalStateException (" Cannot Ġget Ġa Ġ$ Key Seg .$ Key H ic ut Ġvalue Ġfrom Ġ\" no \" .") ĊĊĠ Ġoverride Ġval Ġis Default Ġget () Ġ= Ġtrue ĊĊĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠ Ġget () Ġ= ĠFlag Seg ĊĊĠ Ġoverride Ġfun Ġappend Json ( js : ĠObject Node ) Ġ{} ĊĊĠ Ġoverride Ġfun Ġappend Cli Segment ( cli : ĠStringBuilder ) Ġ{} ĊĊĠ Ġoverride Ġfun Ġappend Cli Parts ( cli : ĠMutable List < String >) Ġ{} Ċ } ĊĊ Ċ private Ġfun Ġparse Seg ( js : ĠObject Node ): ĠSeg Delta Ġ{ ĊĠ Ġval Ġw n Ġ= Ġjs [ Key Window ] Ġ?: Ġthrow ĠIllegalArgumentException (" Missing Ġrequired Ġkey Ġ$ Key Seg .$ Key Window .") ĊĠ Ġval Ġln Ġ= Ġjs [ Key Loc ut ] Ġ Ġ?: Ġthrow ĠIllegalArgumentException (" Missing Ġrequired Ġkey Ġ$ Key Seg .$ Key Loc ut .") ĊĠ Ġval Ġh n Ġ= Ġjs [ Key H ic ut ] Ġ Ġ?: Ġthrow ĠIllegalArgumentException (" Missing Ġrequired Ġkey Ġ$ Key Seg .$ Key H ic ut .") ĊĊĠ Ġval Ġw Ġ= Ġw n . req Int Ġ{ Ġ"$ Key Seg .$ Key Window " Ġ} ĊĠ Ġval Ġl Ġ= Ġln . req D ub Ġ{ Ġ"$ Key Seg .$ Key Loc ut " Ġ} ĊĠ Ġval Ġh Ġ= Ġh n . req D ub Ġ{ Ġ"$ Key Seg .$ Key H ic ut " Ġ} ĊĊĠ Ġreturn ĠVal Seg D ( w , Ġl , Ġh ) Ċ } ĊĊ Ċ internal Ġdata Ġclass ĠVal Seg D ( ĊĠ Ġoverride Ġval Ġwindow : ĠInt , ĊĠ Ġoverride Ġval Ġloc ut : ĠDouble , ĊĠ Ġoverride Ġval Ġh ic ut : ĠDouble Ċ ) Ġ: ĠSeg Delta Ġ{ ĊĠ Ġoverride Ġval Ġis Yes Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġis No Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġis Default Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠ Ġget () Ġ= ĠFlag Seg ĊĊĠ Ġoverride Ġfun Ġappend Json ( js : ĠObject Node ) Ġ{ ĊĠĠĠ Ġjs . set < Object Node >( Key Seg , ĠJson . new < Object Node > Ġ{ ĊĠĠĠĠĠ Ġput ( Key Window , Ġwindow ) ĊĠĠĠĠĠ Ġput ( Key Loc ut , Ġloc ut ) ĊĠĠĠĠĠ Ġput ( Key H ic ut , Ġh ic ut ) ĊĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġappend Cli Segment ( cli : ĠStringBuilder ) Ġ{ ĊĠĠĠ Ġcli . append (' Ġ') ĊĠĠĠĠĠ Ġ. append ( Key Seg ) ĊĠĠĠĠĠ Ġ. append (" Ġ' ") ĊĠĠĠĠĠ Ġ. append ( window ) ĊĠĠĠĠĠ Ġ. append (' Ġ') ĊĠĠĠĠĠ Ġ. append ( loc ut ) ĊĠĠĠĠĠ Ġ. append (' Ġ') ĊĠĠĠĠĠ Ġ. append ( h ic ut ) ĊĠĠĠĠĠ Ġ. append (' \' ') ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġappend Cli Parts ( cli : ĠMutable List < String >) Ġ{ ĊĠĠĠ Ġcli . add ( Key Seg ) ĊĠĠĠ Ġcli . add ("$ window Ġ$ loc ut Ġ$ h ic ut ") ĊĠ Ġ} Ċ }