/** Ċ Ġ* ĠB read Wallet Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠA hs an ĠBut t Ġ< ah san . but t @ bread wallet . com > Ġon Ġ 0 4 / 2 8 / 2 0 . Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġb read wallet ĠLLC Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġcom . x wallet . bread box Ċ Ċ import Ġcom . bread wallet . crypto . Network Ċ import Ġcom . bread wallet . crypto . System Ċ import Ġcom . bread wallet . crypto . errors . Account Initialization C ant Create Error Ċ import Ġcom . bread wallet . crypto . errors . Account Initialization Error Ċ import Ġcom . bread wallet . crypto . errors . Account Initialization Multiple H ed era Accounts Error Ċ import Ġcom . x wallet . tools . security . Br d User Manager Ċ Ċ class ĠDefault Network Initializer ( private Ġval Ġuser Manager : ĠB rd User Manager ) Ġ: ĠNetwork Initializer Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis Supported ( currency Id : ĠString ) Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinitialize ( ĊĠĠĠĠĠĠĠ Ġsystem : ĠSystem , ĊĠĠĠĠĠĠĠ Ġnetwork : ĠNetwork , ĊĠĠĠĠĠĠĠ Ġcreate IfNeeded : ĠBoolean ĊĠĠĠ Ġ): ĠNetwork State Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( system . account IsInitialized ( system . account , Ġnetwork )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNetwork State . Initialized ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġsystem . account Initialize ( system . account , Ġnetwork , Ġcreate IfNeeded ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Manager . update Account ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . Initialized ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠAccount Initialization C ant Create Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . Action Needed ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠAccount Initialization Multiple H ed era Accounts Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġe . accounts . sorted By Ġ{ Ġit . balance . or ( 0 ) Ġ} [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem . account Initialize Using H ed era ( system . account , Ġnetwork , Ġaccount ). or Null () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . Error ( message Ġ= Ġ" Initialization Ġfailed Ġusing Ġone Ġof Ġmultiple ĠH ed era Ġaccounts .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Manager . update Account ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . Initialized ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠAccount Initialization Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ