package Ġcom . template . flow Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġcom . sun . jav aws . progress . Progress Ċ import Ġcom . template . command . Commands Ċ import Ġcom . template . contract . Client Contract Ċ import Ġcom . template . contract . Token Contract Ċ import Ġcom . template . state . Al liance State Ċ import Ġcom . template . state . Client State Ċ import Ġcom . template . state . Partner State Ċ import Ġcom . template . state . Token State Ċ import Ġnet . cord a . core . contracts . Command Ċ import Ġnet . cord a . core . contracts . Unique Identifier Ċ import Ġnet . cord a . core . contracts . require That Ċ import Ġnet . cord a . core . flows .* Ċ import Ġnet . cord a . core . identity . Party Ċ import Ġnet . cord a . core . transactions . Signed Transaction Ċ import Ġnet . cord a . core . transactions . Transaction Builder Ċ import Ġnet . cord a . core . utilities . Progress Tracker Ċ import Ġjava . util .* Ċ Ċ object ĠAdd Client Ġ{ ĊĊĠĠĠ Ġ@ Initi ating Flow ĊĠĠĠ Ġ@ Start able By RPC ĊĠĠĠ Ġclass ĠInit iator ( val ĠphoneNumber : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠF IO : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword : ĠString ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠGENER ATING _ TRANSACTION Ġ: ĠProgress Tracker . Step (" Generating Ġtransaction Ġbased Ġon Ġnew ĠIO U .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠVERIFY ING _ TRANSACTION Ġ: ĠProgress Tracker . Step (" Verify ing Ġcontract Ġconstraints .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠSIGN ING _ TRANSACTION Ġ: ĠProgress Tracker . Step (" Signing Ġtransaction Ġwith Ġour Ġprivate Ġkey .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠG ATHER ING _ SIG S Ġ: ĠProgress Tracker . Step (" Gather ing Ġthe Ġcounter party 's Ġsignature .") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġchild Progress Tracker () Ġ= ĠCollect Signatures Flow . tracker () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠFIN AL ISING _ TRANSACTION Ġ: ĠProgress Tracker . Step (" Ob t aining Ġnot ary Ġsignature Ġand Ġrecording Ġtransaction .") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġchild Progress Tracker () Ġ= ĠFinal ity Flow . tracker () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġtracker () Ġ= ĠProgress Tracker ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGENER ATING _ TRANSACTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVERIFY ING _ TRANSACTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSIGN ING _ TRANSACTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG ATHER ING _ SIG S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFIN AL ISING _ TRANSACTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġprogress Tracker Ġ= Ġtracker () ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot ary Ġ= Ġservice Hub . network Map Cache . not ary Id entities [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Party Ġ= Ġservice Hub . my Info . legal Id entities . get ( 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠGENER ATING _ TRANSACTION ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient State Ġ= ĠClient State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnique Identifier (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Party , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠphoneNumber , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF IO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Command Ġ= ĠCommand ( Commands . Client Add (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient State . participants . map Ġ{ Ġit . own ing Key Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Builder Ġ= ĠTransaction Builder ( not ary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Output State ( client State , ĠClient Contract . CLIENT _ CONTRACT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Command ( tx Command ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠVERIFY ING _ TRANSACTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx Builder . verify ( service Hub ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠSIGN ING _ TRANSACTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpart Signed Tx Ġ= Ġservice Hub . sign Initial Transaction ( tx Builder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠFIN AL ISING _ TRANSACTION ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Final ity Flow ( part Signed Tx )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Initi ated By ( Init iator :: class ) ĊĠĠĠ Ġclass ĠAc ceptor ( val Ġother Party Flow : ĠFlow Session ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsign Transaction Flow Ġ= Ġobject Ġ: ĠSign Transaction Flow ( other Party Flow ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Transaction ( st x : ĠSigned Transaction ) Ġ= Ġrequire That Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġst x . tx . outputs . single (). data Ġas ĠClient State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ðŀ Ñģ Ð½Ð¾Ð² Ð½ÑĭÐµ ĠÐ´Ð°Ð½ Ð½ÑĭÐµ ĠÐ´Ð¾Ð»Ð¶ Ð½Ñĭ ĠÐ±ÑĭÑĤÑĮ ĠÐ·Ð°Ð¿ Ð¾Ð»Ð½ ÐµÐ½ Ñĭ " Ġusing Ġ( output . FI O . isNotEmpty () Ġ&& Ġoutput . password . isNotEmpty () Ġ&& Ġoutput . phoneNumber . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( sign Transaction Flow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }