package Ġdev . st alla . model . podcast index Ċ Ċ import Ġdev . st alla . builder . Geo graphic Location Builder Ċ import Ġdev . st alla . builder . valid ating . Valid ating Geo graphic Location Builder Ċ import Ġdev . st alla . model . BuilderFactory Ċ import Ġdev . st alla . model . Type Factory Ċ import Ġdev . st alla . model . podcast index . Geo graphic Location . Factory . CR S _ W GS 8 4 Ċ import Ġdev . st alla . model . podcast index . Geo graphic Location . Parameter Ċ import Ġdev . st alla . parser . Geo graphic Location Parser Ċ import Ġdev . st alla . util . Internal API Ċ import Ġdev . st alla . util . as Un modifiable Ċ import Ġdev . st alla . util . contains MediaType Separator Symbol Ċ import Ġjava . util . Locale Ċ import Ġkotlin . contracts . contract Ċ import Ġkotlin . math . absolute Value Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa ĠGeo graphic ĠLocation Ġ(' geo ' ĠURI ) Ġas Ġdefined Ġby Ġ[ RFC Ġ 5 8 7 0 ]( https :// tools . ietf . org / html / rfc 5 8 7 0 ). Ċ Ġ* Ċ Ġ* ĠNote Ġthat Ġthis Ġclass Ġonly Ġensures Ġsynt act ically Ġvalid Ġgeo ĠURI Ġconstructs , Ċ Ġ* Ġbut Ġdoes Ġnot Ġensure Ġthat Ġthe Ġcoordinate Ġvalues Ġare Ġvalid Ġwithin Ġthe Ġcoordinate Ċ Ġ* Ġreference Ġsystem Ġ([ crs ]), Ġbes ides Ġthe Ġcomparison Ġrules Ġthat Ġapply Ġfor ĠW GS - 8 4 . Ċ Ġ* Ċ Ġ* ĠDirect Ġinstantiation Ġin ĠJava Ġis Ġdis cour aged . ĠUse Ġthe Ġ[ builder ][ Geo graphic Location . Factory . builder ] Ġmethod Ċ Ġ* Ġto Ġobtain Ġa Ġ[ Geo graphic Location ] Ġinstance Ġfor Ġexpress ive Ġconstruction Ġinstead . Ċ Ġ* Ċ Ġ* ĠUse Ġthe Ġ[ of ][ Geo graphic Location . Factory . of ] Ġmethod Ġto Ġobtain Ġan Ġinstance Ġfrom Ġa Ġstring Ġpattern . Ċ Ġ* Ċ Ġ* Ġ@ property Ġlatitude ĠThe Ġlatitude Ġvalue . Ċ Ġ* Ġ@ property Ġlongitude ĠThe Ġlongitude Ġvalue . Ċ Ġ* Ġ@ property Ġalt itude ĠThe Ġalt itude Ġvalue . Ċ Ġ* Ġ@ property Ġc rs ĠThe Ġcoordinate Ġreference Ġsystem Ġ- Ġdefaults Ġto Ġ([ CR S _ W GS 8 4 ]) Ġif Ġnot Ġset . Ċ Ġ* Ġ@ property Ġuncertainty ĠThe Ġamount Ġof Ġuncertainty Ġin Ġthe Ġlocation Ġas Ġa Ġvalue Ġin Ġmeters . Ċ Ġ* Ġ@ property Ġparameters ĠThe Ġlist Ġof Ġgeo ĠURI Ġparameters Ġas Ġ[ Parameter ]. Ċ Ġ* Ċ Ġ* Ġ@ see Ġ[ RFC Ġ 5 8 7 0 ]( https :// tools . ietf . org / html / rfc 5 8 7 0 ) Ċ Ġ* Ġ@ since Ġ 1 . 1 . 0 Ċ Ġ*/ Ċ public Ġclass ĠGeo graphic Location Ġpublic Ġconstructor ( ĊĠĠĠ Ġpublic Ġval Ġlatitude : ĠDouble , ĊĠĠĠ Ġpublic Ġval Ġlongitude : ĠDouble , ĊĠĠĠ Ġpublic Ġval Ġalt itude : ĠDouble ? Ġ= Ġnull , ĊĠĠĠ Ġpublic Ġval Ġc rs : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġpublic Ġval Ġuncertainty : ĠDouble ? Ġ= Ġnull , ĊĠĠĠ Ġpublic Ġval Ġparameters : ĠList < Parameter > Ġ= Ġempty List () Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInstanti ates Ġa Ġnew Ġgeo graphic Ġlocation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġlatitude ĠThe Ġlatitude Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ property Ġlongitude ĠThe Ġlongitude Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ property Ġalt itude ĠThe Ġalt itude Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ property Ġc rs ĠThe Ġcoordinate Ġreference Ġsystem Ġ- Ġdefaults Ġto Ġ([ CR S _ W GS 8 4 ]) Ġif Ġnot Ġset . ĊĠĠĠĠ Ġ* Ġ@ property Ġuncertainty ĠThe Ġamount Ġof Ġuncertainty Ġin Ġthe Ġlocation Ġas Ġa Ġvalue Ġin Ġmeters . ĊĠĠĠĠ Ġ* Ġ@ property Ġparameters ĠThe Ġlist Ġof Ġgeo ĠURI Ġparameters Ġas Ġkey / value Ġpairs . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġlatitude : ĠDouble , ĊĠĠĠĠĠĠĠ Ġlongitude : ĠDouble , ĊĠĠĠĠĠĠĠ Ġalt itude : ĠDouble ?, ĊĠĠĠĠĠĠĠ Ġc rs : ĠString ?, ĊĠĠĠĠĠĠĠ Ġuncertainty : ĠDouble ?, ĊĠĠĠĠĠĠĠ Ġparameters : ĠMap < String , ĠString > ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġlatitude , ĊĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġlongitude , ĊĠĠĠĠĠĠĠ Ġalt itude Ġ= Ġalt itude , ĊĠĠĠĠĠĠĠ Ġc rs Ġ= Ġc rs , ĊĠĠĠĠĠĠĠ Ġuncertainty Ġ= Ġuncertainty , ĊĠĠĠĠĠĠĠ Ġparameters Ġ= Ġparameters . map Ġ{ ĠParameter ( it . key , Ġit . value ) Ġ}. as Un modifiable () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRepresents Ġa Ġsingle Ġvalue Ġparameter . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġkey ĠThe Ġcase - ins ensitive Ġkey Ġof Ġthe Ġparameter . ĊĠĠĠĠ Ġ* Ġ@ property Ġvalue ĠThe Ġvalue Ġof Ġthe Ġparameter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġdata Ġclass ĠParameter ( val Ġkey : ĠString , Ġval Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġother Ġis ĠParameter Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother . key . equals ( key , Ġignore Case Ġ= Ġtrue ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother . value Ġ== Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġkey . toLowerCase ( Locale . ROOT ). hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ+= Ġ 3 1 Ġ* Ġresult Ġ+ Ġvalue . toLowerCase ( Locale . ROOT ). hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġfirst Ġvalue Ġfor Ġthe Ġparameter Ġwith Ġ[ key ] Ġcomparing ĊĠĠĠĠ Ġ* Ġcase - ins ensit ively Ġor Ġ` null ` Ġif Ġno Ġsuch Ġparameters Ġfound . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġparameter ( key : ĠString ): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġparameters . first OrNull Ġ{ Ġit . key . equals ( key , Ġignore Case Ġ= Ġtrue ) Ġ} ?. value ĊĊĠĠĠ Ġ/** ĠCreates Ġa Ġcopy Ġof Ġ` this ` Ġtype Ġwith Ġan Ġadded Ġparameter Ġof Ġ[ key ] Ġand Ġ[ value ]. Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġwith Parameter ( key : ĠString , Ġvalue : ĠString ): ĠGeo graphic Location Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( key . isBlank () Ġ|| Ġkey . contains MediaType Separator Symbol ()) Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġif Ġ( value . isBlank ()) Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġif Ġ( has Parameter ( key , Ġvalue )) Ġreturn Ġthis ĊĊĠĠĠĠĠĠĠ Ġreturn ĠGeo graphic Location ( latitude , Ġlongitude , Ġalt itude , Ġc rs , Ġuncertainty , Ġparameters Ġ+ ĠParameter ( key , Ġvalue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠCreates Ġa Ġcopy Ġof Ġ` this ` Ġtype Ġwithout Ġany Ġparameters .*/ ĊĠĠĠ Ġpublic Ġfun Ġwithout Parameters (): ĠGeo graphic Location Ġ= ĠGeo graphic Location ( latitude , Ġlongitude , Ġalt itude ) ĊĊĠĠĠ Ġ/** ĠChecks Ġif Ġ` this ` Ġtype Ġmatches Ġa Ġ[ pattern ] Ġtype Ġtaking Ġparameters Ġinto Ġaccount . Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġmatches ( pattern : ĠGeo graphic Location ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturns ( true ) Ġimplies Ġ( pattern Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpattern Ġ== Ġnull Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== Ġpattern Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch P ole W GS 8 4 ( pattern ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Date Line W GS 8 4 ( pattern ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ== Ġpattern . latitude Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude Ġ== Ġpattern . longitude Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalt itude Ġ== Ġpattern . altitude Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc rs . equals ( pattern . crs , Ġignore Case Ġ= Ġtrue ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuncertainty Ġ== Ġpattern . unc ert ainty Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatch ( parameters , Ġpattern . parameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠChecks Ġif Ġ` this ` Ġtype Ġmatches Ġa Ġ[ pattern ] Ġtype Ġtaking Ġparameters Ġinto Ġaccount . Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġmatches ( pattern : ĠString ): ĠBoolean Ġ= Ġmatches ( of ( pattern )) ĊĊĠĠĠ Ġprivate Ġfun Ġmatch ( parameters 1 : ĠList < Parameter >, Ġparameters 2 : ĠList < Parameter >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( param 1 Ġin Ġparameters 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġparameter ( param 1 . key , Ġparameters 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= Ġparam 1 . match ( param 1 . key , Ġvalue 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! matches ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠParameter . match ( key : ĠString , Ġvalue : ĠString ?): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġfalse Ġelse Ġthis Ġ== ĠParameter ( key , Ġvalue ) ĊĊĠĠĠ Ġprivate Ġfun Ġparameter ( key : ĠString , Ġelements : ĠList < Parameter >): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġelements . first OrNull Ġ{ Ġit . key . equals ( key , Ġignore Case Ġ= Ġtrue ) Ġ} ?. value ĊĊĠĠĠ Ġprivate Ġfun Ġhas Parameter ( key : ĠString , Ġvalue : ĠString ): ĠBoolean Ġ= Ġwhen Ġ( parameters . size ) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠ 1 Ġ-> Ġparameters [ 0 ]. let Ġ{ Ġparam Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam . key . equals ( key , Ġignore Case Ġ= Ġtrue ) Ġ&& Ġparam . value . equals ( value , Ġignore Case Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġparameters . any Ġ{ Ġparam Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam . key . equals ( key , Ġignore Case Ġ= Ġtrue ) Ġ&& Ġparam . value . equals ( value , Ġignore Case Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString ?. is W GS 8 4 (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturns ( false ) Ġimplies ( this @ is W GS 8 4 Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis Ġ== Ġnull Ġ|| Ġthis . equals ( CR S _ W GS 8 4 , Ġignore Case Ġ= Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠDouble . is P ole W GS 8 4 (): ĠBoolean Ġ= Ġthis . absolute Value Ġ== ĠMAX _ LAT IT UDE ĊĊĠĠĠ Ġprivate Ġfun ĠDouble . is Date Line W GS 8 4 (): ĠBoolean Ġ= Ġthis . absolute Value Ġ== ĠMAX _ LONG IT UDE ĊĊĠĠĠ Ġprivate Ġfun Ġis W GS 8 4 ( other : ĠGeo graphic Location ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġc rs . is W GS 8 4 () Ġ&& Ġother . crs . is W GS 8 4 () ĊĊĠĠĠ Ġ// ĠIn ĠW GS - 8 4 's Ġspecial Ġ" po les " Ġrule , Ġlongitude Ġis Ġto Ġbe Ġignored ĊĠĠĠ Ġprivate Ġfun Ġmatch P ole W GS 8 4 ( other : ĠGeo graphic Location ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġis W GS 8 4 ( other ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( latitude . is P ole W GS 8 4 () Ġ|| Ġother . latitude . is P ole W GS 8 4 ()) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ== Ġother . latitude Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalt itude Ġ== Ġother . altitude Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuncertainty Ġ== Ġother . unc ert ainty Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch ( parameters , Ġother . parameters ) ĊĊĠĠĠ Ġ// ĠIn ĠW GS - 8 4 's Ġspecial Ġ" date Ġline " Ġrule , Ġlongitude Ġ 1 8 0 Ġdegrees Ġ== Ġ- 1 8 0 Ġdegrees ĊĠĠĠ Ġprivate Ġfun Ġmatch Date Line W GS 8 4 ( other : ĠGeo graphic Location ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġis W GS 8 4 ( other ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude . is Date Line W GS 8 4 () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother . longitude . is Date Line W GS 8 4 () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ== Ġother . latitude Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalt itude Ġ== Ġother . altitude Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuncertainty Ġ== Ġother . unc ert ainty Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch ( parameters , Ġother . parameters ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġappend (" geo :$ latitude ,$ longitude ") ĊĠĠĠĠĠĠĠ Ġif Ġ( altitude Ġ!= Ġnull ) Ġappend (", $ altitude ") ĊĠĠĠĠĠĠĠ Ġif Ġ( crs Ġ!= Ġnull ) Ġappend (" ;$ CR S _ PARAM =$ crs ") ĊĠĠĠĠĠĠĠ Ġif Ġ( unc ert ainty Ġ!= Ġnull ) Ġappend (" ;$ UNC ER TAIN TY _ PARAM =$ unc ert ainty ") ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġparameters ) Ġappend (" ;$ key =$ value ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠGeo graphic Location ĊĊĠĠĠĠĠĠĠ Ġif Ġ( latitude Ġ!= Ġother . latitude ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( longitude Ġ!= Ġother . longitude ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( altitude Ġ!= Ġother . altitude ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( crs Ġ!= Ġother . crs ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( unc ert ainty Ġ!= Ġother . unc ert ainty ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( parameters Ġ!= Ġother . parameters ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġlatitude . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġlongitude . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( altitude ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( crs ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( unc ert ainty ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġparameters . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠProvides Ġa Ġbuilder Ġand Ġa Ġfactory Ġfor Ġthe Ġ[ Geo graphic Location ] Ġclass . Ġ*/ ĊĠĠĠ Ġpublic Ġcompanion Ġobject ĠFactory Ġ: ĠBuilder Factory < Geo graphic Location , ĠGeo graphic Location Builder >, ĠType Factory < Geo graphic Location > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe ĠWorld ĠGe ode tic ĠSystem Ġ 1 9 8 4 Ġcoordinate Ġreference Ġsystem Ġused Ġby ĠGPS . Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġconst Ġval ĠCR S _ W GS 8 4 : ĠString Ġ= Ġ" W GS 8 4 " ĊĊĠĠĠĠĠĠĠ Ġ@ Internal API ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠCR S _ PARAM Ġ= Ġ" crs " ĊĊĠĠĠĠĠĠĠ Ġ@ Internal API ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠUN CER TAIN TY _ PARAM Ġ= Ġ" u " ĊĊĠĠĠĠĠĠĠ Ġ@ Internal API ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠMAX _ LAT IT UDE Ġ= Ġ 9 0 . 0 ĊĊĠĠĠĠĠĠĠ Ġ@ Internal API ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠMAX _ LONG IT UDE Ġ= Ġ 1 8 0 . 0 ĊĊĠĠĠĠĠĠĠ Ġ/** ĠReturns Ġa Ġbuilder Ġimplementation Ġfor Ġbuilding Ġ[ Geo graphic Location ] Ġmodel Ġinstances . Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuilder (): ĠGeo graphic Location Builder Ġ= ĠValid ating Geo graphic Location Builder () ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġof ( raw Value : ĠString ?): ĠGeo graphic Location ? Ġ= Ġraw Value ?. let Ġ{ Ġvalue Ġ-> ĠGeo graphic Location Parser . parse ( value ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ