package Ġcore x change . user flows Ċ Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . states . F ung ible Token Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . utilities . held By Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . utilities . iss ued By Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . utilities . of Ċ import Ġcom . r 3 . cord a . lib . tokens . money . Fi at Currency Ċ import Ġcom . r 3 . cord a . lib . tokens . workflows . flows . rpc . Issue Tokens Ċ import Ġcore x change .* Ċ import Ġcore x change . states . User State Ċ import Ġnet . cord a . core . contracts .* Ċ import Ġnet . cord a . core . crypto . Secure Hash Ċ import Ġnet . cord a . core . flows . Flow Logic Ċ import Ġnet . cord a . core . node . services . Vault Ċ import Ġnet . cord a . core . node . services . query By Ċ import Ġnet . cord a . core . node . services . vault . Query Criteria Ċ 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 Ġorg . apache . http . client . methods . HttpGet Ċ import Ġorg . apache . http . impl . client . HttpClient Builder Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . InputStream Reader Ċ Ċ abstract Ġclass ĠUser Functions Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġprogress Tracker Ġ= ĠProgress Tracker ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCRE ATING , ĠVERIFY ING , ĠSIGN ING , ĠNOT AR IZ ING , ĠFIN AL IZ ING ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġf ung ible Token State (): ĠList < State And Ref < F ung ible Token >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠQuery Criteria . Vault Query Criteria ( status Ġ= ĠVault . State Status . UN CON SU MED ) ĊĠĠĠĠĠĠĠ Ġreturn Ġservice Hub . vault Service . query By < F ung ible Token >( query ). states ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmerge F ung ible Tokens ( currency : ĠString ): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġf ung ible Token State (). filter Ġ{ Ġit . state . data . token Type . token Identifier Ġ== Ġcurrency Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġtotal Amount : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( states Ġin Ġinput ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf ung ible States Ġ= Ġstates . state . data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquantity Ġ= Ġf ung ible States . amount . quantity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Amount Ġ+= Ġquantity ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġfinal Amount Ġ= Ġtotal Amount . div ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= ĠF iat Currency . getInstance ( currency ) ĊĊĠĠĠĠĠĠĠ Ġfor ( state Ġin Ġinput ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf ung ible States Ġ= Ġstate . state . data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquantity Ġ= Ġf ung ible States . amount . quantity Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsub Flow ( Re deem F ung ible Tokens ( Amount ( quantity , ĠTokenType ( currency , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf ung ible States . token Type . fraction Digits )), fung ible States . issuer )) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Issue Tokens ( listOf ( final Amount Ġof Ġtokens Ġissued By Ġour Identity Ġheld By Ġour Identity ))) ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġverify And Sign ( transaction : ĠTransaction Builder ): ĠSigned Transaction ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction . verify ( service Hub ) ĊĠĠĠĠĠĠĠ Ġreturn Ġservice Hub . sign Initial Transaction ( transaction ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinput User Ref Using Linear ID ( id : ĠUnique Identifier ): ĠState And Ref < User State > ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcriteria Ġ= ĠQuery Criteria . Linear State Query Criteria ( linear Id Ġ= ĠlistOf ( id )) ĊĠĠĠĠĠĠĠ Ġreturn Ġservice Hub . vault Service . query By < User State >( criteria Ġ= Ġcriteria ). states . single () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstring To Linear ID ( id : ĠString ): ĠUnique Identifier ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUnique Identifier . fromString ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstring To State Ref ( state Ref : ĠString ): ĠState Ref ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠState Ref ( tx hash Ġ= ĠSecure Hash . parse ( state Ref ), Ġindex Ġ= Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreturn External Php (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠExternal ĠData ĊĠĠĠĠĠĠĠ Ġval Ġhttp client Ġ= ĠHttpClient Builder . create (). build () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠHttp Get (" https :// api . ex ch anger ates api . io / latest ? base = USD & symbols = PHP , USD ") ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhttp client . execute ( request ) ĊĠĠĠĠĠĠĠ Ġval Ġinput StreamReader Ġ= ĠInputStreamReader ( response . entity . content ) ĊĊĠĠĠĠĠĠĠ ĠBufferedReader ( input StreamReader ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Buff Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinput Line Ġ= Ġit . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( input Line Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Buff . append ( input Line ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Line Ġ= Ġit . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Whole Object Ġ= Ġgson . fromJson ( string Buff . toString (), ĠJsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrates Ġ= Ġjson Whole Object . get (" rates "). as JsonObject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrates . get (" PHP "). as Double ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }