package Ġcom . d md irc . kt irc . model čĊč Ċ /** čĊ Ġ* ĠDescri bes Ġthe Ġstate Ġof Ġcapability Ġneg otiation Ġwith Ġthe Ġserver . čĊ Ġ*/ č Ċ class ĠCap abilities State Ġ{ čĊčĊĠĠĠ Ġ/** ĠThe Ġcurrent Ġneg otiation Ġstate . Ġ*/ čĊĠĠĠ Ġvar Ġneg otiation State : ĠCap abilities Neg otiation State Ġ= ĠCap abilities Neg otiation State . AW A IT ING _ LIST čĊĠĠĠĠĠĠĠ Ġinternal Ġset čĊčĊĠĠĠ Ġ// ĠTODO : ĠThese Ġshould Ġonly Ġbe Ġmutable Ġinternally čĊĠĠĠ Ġ/** ĠThe Ġcapabilities Ġthat Ġwere Ġadvert ised Ġby Ġthe Ġserver . Ġ*/ čĊĠĠĠ Ġval Ġadvert ised Capabilities Ġ= ĠHashMap < String , ĠString >() čĊĠĠĠ Ġ/** ĠThe Ġcapabilities Ġthat Ġwe Ġhave Ġagreed Ġto Ġenable . Ġ*/ čĊĠĠĠ Ġval Ġenabled Capabilities Ġ= ĠHashMap < Capability , ĠString >() čĊčĊĠĠĠ Ġinternal Ġfun Ġreset () Ġ{ čĊĠĠĠĠĠĠĠ Ġneg otiation State Ġ= ĠCap abilities Neg otiation State . AW A IT ING _ LIST čĊĠĠĠĠĠĠĠ Ġadvert ised Capabilities . clear () čĊĠĠĠĠĠĠĠ Ġenabled Capabilities . clear () čĊĠĠĠ Ġ} čĊč Ċ } čĊč Ċ /** čĊ Ġ* ĠThe Ġstate Ġof Ġneg oti ations Ġwith Ġthe Ġserver . čĊ Ġ*/ č Ċ enum Ġclass ĠCap abilities Neg otiation State Ġ{ čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠWe Ġhave Ġrequested Ġa Ġlist Ġof Ġcapabilities Ġand Ġare Ġawait ing Ġa Ġreply . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ ĠA WAIT ING _ LIST , čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠWe Ġhave Ġsent Ġa Ġlist Ġof Ġcapabilities Ġto Ġenable , Ġand Ġare Ġawait ing Ġan Ġacknowledge ment . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ ĠA WAIT ING _ ACK , čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠWe Ġare Ġattempting Ġto Ġauthenticate Ġwith ĠSAS L . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ ĠAUTH ENT IC ATING , čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠNeg otiation Ġhas Ġcompleted . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ ĠFIN ISHED čĊč Ċ } čĊč Ċ /** čĊ Ġ* ĠIRC v 3 Ġcapabilities Ġsupported Ġby Ġthe Ġclient . čĊ Ġ*/ č Ċ @ Suppress (" unused ") č Ċ sealed Ġclass ĠCap ability ( var arg Ġval Ġnames : Ġ ĠString ) Ġ{ čĊĠĠĠ Ġ// ĠCap abilities Ġthat Ġintroduce Ġextra Ġcommands : čĊĠĠĠ Ġ/** ĠAllows Ġauthentication Ġusing ĠSAS L Ġvia Ġthe ĠAUTH ENT ICATE Ġcommand . Ġ*/ čĊĠĠĠ Ġobject ĠS asl Authentication Ġ: ĠCap ability (" sas l ") čĊčĊĠĠĠ Ġ// ĠCap abilities Ġthat Ġenable Ġmore Ġinformation Ġin Ġmessage Ġtags : čĊĠĠĠ Ġ/** ĠGeneric Ġsupport Ġfor Ġmessage Ġtags , Ġincluding Ġclient - only Ġtags . Ġ*/ čĊĠĠĠ Ġobject ĠDraft Message Tags 3 3 Ġ: ĠCap ability (" message - tags ", Ġ" draft / message - tags - 0 . 2 ") Ġ// ĠTODO : ĠAdd Ġprocessor Ġfor ĠTAG MSG čĊčĊĠĠĠ Ġ/** ĠMessages Ġare Ġtagged Ġwith Ġthe Ġserver Ġtime Ġthey Ġorigin ated Ġat . Ġ*/ čĊĠĠĠ Ġobject ĠServer Time Message Tag Ġ: ĠCap ability (" server - time ") čĊčĊĠĠĠ Ġ/** ĠMessages Ġare Ġtagged Ġwith Ġthe Ġsender 's Ġaccount Ġname . Ġ*/ čĊĠĠĠ Ġobject ĠUser Account Message Tag Ġ: ĠCap ability (" account - tag ") čĊčĊĠĠĠ Ġ// ĠCap abilities Ġthat Ġextend Ġexisting Ġcommands Ġto Ġsupply Ġextra Ġinformation : čĊĠĠĠ Ġ/** ĠHost s Ġare Ġincluded Ġfor Ġusers Ġin ĠNAMES Ġmessages . Ġ*/ čĊĠĠĠ Ġobject ĠHost s In Names Reply Ġ: ĠCap ability (" user host - in - names ") čĊčĊĠĠĠ Ġ/** ĠMultiple Ġmode Ġprefixes Ġare Ġreturned Ġper - user Ġin ĠNAMES Ġmessages . Ġ*/ čĊĠĠĠ Ġobject ĠMultiple User Mode Prefixes Ġ: ĠCap ability (" multi - prefix ") čĊčĊĠĠĠ Ġ/** ĠThe Ġuser 's Ġaccount Ġand Ġreal Ġname Ġare Ġprovided Ġwhen Ġthey Ġjoin Ġa Ġchannel . Ġ*/ čĊĠĠĠ Ġobject ĠAccount And Real Name In Join Messages Ġ: ĠCap ability (" extended - join ") čĊčĊĠĠĠ Ġ// ĠCap abilities Ġthat Ġaffect Ġhow Ġmessages Ġare Ġsent / received : čĊĠĠĠ Ġ/** ĠMessages Ġcan Ġbe Ġsent Ġin Ġbatches , Ġand Ġpotentially Ġhandled Ġdifferently Ġby Ġthe Ġclient . Ġ*/ čĊĠĠĠ Ġobject ĠBatch Ġ: ĠCap ability (" batch ") čĊčĊĠĠĠ Ġ/** ĠMessages Ġsent Ġby Ġthe Ġclient Ġare Ġecho 'd Ġback Ġon Ġsuccessful Ġdelivery . Ġ*/ čĊĠĠĠ Ġobject ĠEcho Messages Ġ: ĠCap ability (" echo - message ") čĊčĊĠĠĠ Ġ/** ĠAllows Ġus Ġto Ġlabel Ġall Ġoutgoing Ġmessages Ġand Ġhave Ġthe Ġserver Ġidentify Ġthe Ġresponses Ġto Ġthem . Ġ*/ čĊĠĠĠ Ġobject ĠL abeled Response Ġ: ĠCap ability (" draft / labeled - response ") čĊčĊĠĠĠ Ġ// ĠCap abilities Ġthat Ġnotify Ġus Ġof Ġchanges Ġto Ġother Ġclients : čĊĠĠĠ Ġ/** ĠReceive Ġa Ġnotification Ġwhen Ġa Ġuser 's Ġaccount Ġchanges . Ġ*/ čĊĠĠĠ Ġobject ĠAccount Change Messages Ġ: ĠCap ability (" account - notify ") čĊčĊĠĠĠ Ġ/** ĠReceive Ġa Ġnotification Ġwhen Ġa Ġuser 's Ġaway Ġstate Ġchanges . Ġ*/ čĊĠĠĠ Ġobject ĠA way State Messages Ġ: ĠCap ability (" away - notify ") čĊčĊĠĠĠ Ġ/** ĠReceive Ġa Ġnotification Ġwhen Ġa Ġuser 's Ġhost Ġchanges , Ġinstead Ġof Ġa Ġquit / join . Ġ*/ čĊĠĠĠ Ġobject ĠHost Change Messages Ġ: ĠCap ability (" ch ghost ") čĊč Ċ } čĊč Ċ internal Ġval Ġcapabilities : ĠMap < String , ĠCap ability > Ġby Ġlazy Ġ{ čĊĠĠĠ ĠCap ability :: class . nested Classes čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . object Instance Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance ( Capability :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . names . map Ġ{ Ġname Ġ-> Ġname Ġto Ġit Ġ} Ġ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap () č Ċ } čĊ