package Ġgray matter . sec . common Ċ Ċ import Ġorg . hash ids . Hash ids Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . atomic . Atomic Long Ċ Ċ class ĠOrdered Id Ġprivate Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġa : ĠLong , ĊĠĠĠ Ġprivate Ġval Ġb : ĠLong Ċ ) Ġ: ĠComparable < Ordered Id > Ġ{ ĊĊĠĠĠ Ġconstructor () Ġ: Ġthis ( System . currentTimeMillis (), Ġgenerate Next Id Seq . increment AndGet () Ġ% ĠLong . MAX _ VALUE ) ĊĊĠĠĠ Ġprivate Ġval Ġvalue Ġ= Ġhash Ids . encode ( a , Ġb ) ĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠOrdered Id ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcomp arable . compare ( this , Ġother ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ== Ġnull Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ=== Ġthis Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġis ĠOrdered Id Ġ-> Ġa Ġ== Ġother . a Ġ&& Ġb Ġ== Ġother . b ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObjects . hash ( a , Ġb ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġvalue ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġof ( string : ĠString ): ĠOrdered Id Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrequire NotNull ( try Parse ( string )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" It Ġdoes Ġnot Ġseem Ġ{$ string } Ġvalue Ġhas Ġbeen Ġgenerated Ġas Ġa Ġresult Ġof Ġvalidation Ġoperation ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtry Parse ( string : ĠString ): ĠOrdered Id ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( a , b ) Ġ= Ġhash Ids . decode ( string ). take If Ġ{ Ġit . size Ġ== Ġ 2 Ġ} Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ ĠOrdered Id ( a , b ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġgenerate Next Id Seq Ġ= ĠAtomic Long ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġcomp arable Ġ= Ġcompare By ( Ordered Id :: a ). then By ( Ordered Id :: b ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhash Ids Ġ= ĠHash ids (" 9 9 3 9 7 6 8 AE 5 1 0 2 0 0 E 7 C 8 7 3 5 0 6 5 FD 9 5 AD 8 1 A 2 9 D 9 8 B ") ĊĠĠĠ Ġ} Ċ } Ċ