package Ġnet . b jo ern pe ters en . music bot . sys volume Ċ Ċ import Ġnet . b jo ern pe ters en . music bot . api . config . Config Serializer Ċ import Ġnet . b jo ern pe ters en . music bot . api . config . Serialization Exception Ċ import Ġjava . math . Round ingMode Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . text . Decimal Format Symbols Ċ import Ġjava . util . Locale Ċ import Ġkotlin . math . round ToInt Ċ Ċ internal Ġenum Ġclass ĠValue Mode ( val Ġdescription : ĠString ) Ġ{ ĊĠĠĠ ĠPercent (" Percent Ġ( 0 - 1 0 0 )") Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto Percent ( value : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue . toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfrom Percent ( percent : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpercent . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĊĠĠĠ ĠDecimal (" Decimal Ġ( 0 . 0 - 1 . 0 )") Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto Percent ( value : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( value . toFloat () Ġ* Ġ 1 0 0 ). round ToInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfrom Percent ( percent : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDecimal Format ("# 0 . 0 ## ", ĠDecimal Format Symbols . getInstance ( Locale . US )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġrounding Mode Ġ= ĠRound ingMode . HALF _ UP Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( percent . toFloat () Ġ/ Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĊĠĠĠ ĠSix teen Bit (" 1 6 - bit Ġ( 0 - 6 5 5 3 5 )") Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto Percent ( value : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecimal Ġ= Ġvalue . toFloat () Ġ/ Ġ 6 5 5 3 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCon verting Ġback Ġto Ġstring Ġisn 't Ġgreat , Ġbut Ġit 's Ġprobably Ġacceptable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDecimal . to Percent ( decimal . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfrom Percent ( percent : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( 6 5 5 . 3 5 Ġ* Ġpercent ). round ToInt (). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}; ĊĊĠĠĠ Ġabstract Ġfun Ġto Percent ( value : ĠString ): ĠInt ĊĠĠĠ Ġabstract Ġfun Ġfrom Percent ( percent : ĠInt ): ĠString ĊĊĠĠĠ Ġobject ĠSerializer Ġ: ĠConfig Serializer < Value Mode > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġserialize ( obj : ĠValue Mode ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobj . name ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdeserialize ( string : ĠString ): ĠValue Mode Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValue Mode . valueOf ( string ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSerialization Exception () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ