diff --git a/cmd/goal/clerk.go b/cmd/goal/clerk.go index ac570ffb54..000304fa3e 100644 --- a/cmd/goal/clerk.go +++ b/cmd/goal/clerk.go @@ -1214,6 +1214,12 @@ var dryrunRemoteCmd = &cobra.Command{ if txnResult.Cost != nil { fmt.Fprintf(os.Stdout, "tx[%d] cost: %d\n", i, *txnResult.Cost) } + if txnResult.BudgetConsumed != nil { + fmt.Fprintf(os.Stdout, "tx[%d] budget consumed: %d\n", i, *txnResult.BudgetConsumed) + } + if txnResult.BudgetAdded != nil { + fmt.Fprintf(os.Stdout, "tx[%d] budget added: %d\n", i, *txnResult.BudgetAdded) + } fmt.Fprintf(os.Stdout, "tx[%d] messages:\n", i) for _, msg := range msgs { diff --git a/daemon/algod/api/algod.oas2.json b/daemon/algod/api/algod.oas2.json index 736ce0a268..8e2c69e54c 100644 --- a/daemon/algod/api/algod.oas2.json +++ b/daemon/algod/api/algod.oas2.json @@ -2295,8 +2295,16 @@ "format": "byte" } }, + "budget-added": { + "description": "Budget added during execution of app call transaction.", + "type": "integer" + }, + "budget-consumed": { + "description": "Budget consumed during execution of app call transaction.", + "type": "integer" + }, "cost": { - "description": "Execution cost of app call transaction", + "description": "Net cost of app execution. Field is DEPRECATED and is subject for removal. Instead, use `budget-added` and `budget-consumed.", "type": "integer" } } diff --git a/daemon/algod/api/algod.oas3.yml b/daemon/algod/api/algod.oas3.yml index d71a2dbd9e..0fa09dd559 100644 --- a/daemon/algod/api/algod.oas3.yml +++ b/daemon/algod/api/algod.oas3.yml @@ -1328,8 +1328,16 @@ }, "type": "array" }, + "budget-added": { + "description": "Budget added during execution of app call transaction.", + "type": "integer" + }, + "budget-consumed": { + "description": "Budget consumed during execution of app call transaction.", + "type": "integer" + }, "cost": { - "description": "Execution cost of app call transaction", + "description": "Net cost of app execution. Field is DEPRECATED and is subject for removal. Instead, use `budget-added` and `budget-consumed.", "type": "integer" }, "disassembly": { diff --git a/daemon/algod/api/server/v2/dryrun.go b/daemon/algod/api/server/v2/dryrun.go index eea36a9755..d3b85de39a 100644 --- a/daemon/algod/api/server/v2/dryrun.go +++ b/daemon/algod/api/server/v2/dryrun.go @@ -541,8 +541,17 @@ func doDryrunRequest(dr *DryrunRequest, response *generated.DryrunResponse) { err = fmt.Errorf("cost budget exceeded: budget is %d but program cost was %d", allowedBudget-cumulativeCost, cost) } } - cost64 := uint64(cost) - result.Cost = &cost64 + // The cost is broken up into two fields: budgetAdded and budgetConsumed. + // This is necessary because the fields can only be represented as unsigned + // integers, so a negative cost would underflow. The two fields also provide + // more information, which can be useful for testing purposes. + // cost = budgetConsumed - budgetAdded + netCost := uint64(cost) + budgetAdded := uint64(proto.MaxAppProgramCost * numInnerTxns(delta)) + budgetConsumed := uint64(cost) + budgetAdded + result.Cost = &netCost + result.BudgetAdded = &budgetAdded + result.BudgetConsumed = &budgetConsumed maxCurrentBudget = pooledAppBudget cumulativeCost += cost @@ -624,3 +633,13 @@ func MergeAppParams(base *basics.AppParams, update *basics.AppParams) { base.GlobalStateSchema = update.GlobalStateSchema } } + +// count all inner transactions contained within the eval delta +func numInnerTxns(delta transactions.EvalDelta) (cnt int) { + cnt = len(delta.InnerTxns) + for _, itxn := range delta.InnerTxns { + cnt += numInnerTxns(itxn.EvalDelta) + } + + return +} diff --git a/daemon/algod/api/server/v2/dryrun_test.go b/daemon/algod/api/server/v2/dryrun_test.go index c2722627b6..cfa87cb986 100644 --- a/daemon/algod/api/server/v2/dryrun_test.go +++ b/daemon/algod/api/server/v2/dryrun_test.go @@ -1260,18 +1260,20 @@ func TestDryrunCost(t *testing.T) { msg string numHashes int }{ - {"REJECT", 12}, - {"PASS", 5}, + {"REJECT", 22}, + {"PASS", 16}, } for _, test := range tests { t.Run(test.msg, func(t *testing.T) { - costs := make([]uint64, 2) + expectedCosts := make([]int64, 3) + expectedBudgetAdded := make([]uint64, 3) ops, err := logic.AssembleString("#pragma version 5\nbyte 0x41\n" + strings.Repeat("keccak256\n", test.numHashes) + "pop\nint 1\n") require.NoError(t, err) - approval := ops.Program - costs[0] = 3 + uint64(test.numHashes)*130 + app1 := ops.Program + expectedCosts[0] = 3 + int64(test.numHashes)*130 + expectedBudgetAdded[0] = 0 ops, err = logic.AssembleString("int 1") require.NoError(t, err) @@ -1279,8 +1281,26 @@ func TestDryrunCost(t *testing.T) { ops, err = logic.AssembleString("#pragma version 5 \nint 1 \nint 2 \npop") require.NoError(t, err) - approv := ops.Program - costs[1] = 3 + app2 := ops.Program + expectedCosts[1] = 3 + expectedBudgetAdded[1] = 0 + + ops, err = logic.AssembleString(`#pragma version 6 +itxn_begin +int appl +itxn_field TypeEnum +int DeleteApplication +itxn_field OnCompletion +byte 0x068101 // #pragma version 6; int 1; +itxn_field ApprovalProgram +byte 0x068101 // #pragma version 6; int 1; +itxn_field ClearStateProgram +itxn_submit +int 1`) + require.NoError(t, err) + app3 := ops.Program + expectedCosts[2] = -687 + expectedBudgetAdded[2] = 700 var appIdx basics.AppIndex = 1 creator := randomAddress() @@ -1307,13 +1327,23 @@ func TestDryrunCost(t *testing.T) { }, }, }, + { + Txn: transactions.Transaction{ + Header: transactions.Header{Sender: sender}, + Type: protocol.ApplicationCallTx, + ApplicationCallTxnFields: transactions.ApplicationCallTxnFields{ + ApplicationID: appIdx + 2, + OnCompletion: transactions.OptInOC, + }, + }, + }, }, Apps: []generated.Application{ { Id: uint64(appIdx), Params: generated.ApplicationParams{ Creator: creator.String(), - ApprovalProgram: approval, + ApprovalProgram: app1, ClearStateProgram: clst, LocalStateSchema: &generated.ApplicationStateSchema{NumByteSlice: 1}, }, @@ -1322,7 +1352,16 @@ func TestDryrunCost(t *testing.T) { Id: uint64(appIdx + 1), Params: generated.ApplicationParams{ Creator: creator.String(), - ApprovalProgram: approv, + ApprovalProgram: app2, + ClearStateProgram: clst, + LocalStateSchema: &generated.ApplicationStateSchema{NumByteSlice: 1}, + }, + }, + { + Id: uint64(appIdx + 2), + Params: generated.ApplicationParams{ + Creator: creator.String(), + ApprovalProgram: app3, ClearStateProgram: clst, LocalStateSchema: &generated.ApplicationStateSchema{NumByteSlice: 1}, }, @@ -1340,13 +1379,15 @@ func TestDryrunCost(t *testing.T) { var response generated.DryrunResponse doDryrunRequest(&dr, &response) require.Empty(t, response.Error) - require.Equal(t, 2, len(response.Txns)) + require.Equal(t, 3, len(response.Txns)) for i, txn := range response.Txns { messages := *txn.AppCallMessages require.GreaterOrEqual(t, len(messages), 1) - require.NotNil(t, *txn.Cost) - require.Equal(t, costs[i], *txn.Cost) + cost := int64(*txn.BudgetConsumed) - int64(*txn.BudgetAdded) + require.NotNil(t, cost) + require.Equal(t, expectedCosts[i], cost) + require.Equal(t, expectedBudgetAdded[i], *txn.BudgetAdded) statusMatches := false costExceedFound := false for _, msg := range messages { diff --git a/daemon/algod/api/server/v2/generated/private/routes.go b/daemon/algod/api/server/v2/generated/private/routes.go index abb34906f8..72eb4a7b19 100644 --- a/daemon/algod/api/server/v2/generated/private/routes.go +++ b/daemon/algod/api/server/v2/generated/private/routes.go @@ -311,153 +311,155 @@ func RegisterHandlers(router interface { // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "H4sIAAAAAAAC/+x9a3PcNrbgX0H13Co/ttkt+ZEZqyp1V7ETjzaO47KUubvX9iZo8nQ3RiTAAKDUHa/+", - "+xYOABIkwW7qMcp1XX+y1cTj4ODg4LzxeZKKohQcuFaTo8+TkkpagAaJf9E0FRXXCcvMXxmoVLJSM8En", - "R/4bUVoyvppMJ8z8WlK9nkwnnBbQtDH9pxMJv1dMQjY50rKC6USlayioGVhvS9O6HmmTrETihji2Q5y8", - "mlzt+ECzTIJSfSh/5vmWMJ7mVQZES8oVTc0nRS6ZXhO9Zoq4zoRxIjgQsSR63WpMlgzyTM38In+vQG6D", - "VbrJh5d01YCYSJFDH86XolgwDh4qqIGqN4RoQTJYYqM11cTMYGD1DbUgCqhM12Qp5B5QLRAhvMCrYnL0", - "YaKAZyBxt1JgF/jfpQT4AxJN5Qr05NM0trilBploVkSWduKwL0FVuVYE2+IaV+wCODG9ZuSnSmmyAEI5", - "ef/DS/L06dMXZiEF1RoyR2SDq2pmD9dku0+OJhnV4D/3aY3mKyEpz5K6/fsfXuL8p26BY1tRpSB+WI7N", - "F3LyamgBvmOEhBjXsMJ9aFG/6RE5FM3PC1gKCSP3xDa+000J5/9TdyWlOl2XgnEd2ReCX4n9HOVhQfdd", - "PKwGoNW+NJiSZtAPB8mLT58Pp4cHV3/5cJz8p/vz+dOrkct/WY+7BwPRhmklJfB0m6wkUDwta8r7+Hjv", - "6EGtRZVnZE0vcPNpgaze9SWmr2WdFzSvDJ2wVIrjfCUUoY6MMljSKtfET0wqnhs2ZUZz1E6YIqUUFyyD", - "bGq47+WapWuSUmWHwHbkkuW5ocFKQTZEa/HV7ThMVyFKDFw3wgcu6L8uMpp17cEEbJAbJGkuFCRa7Lme", - "/I1DeUbCC6W5q9T1LitytgaCk5sP9rJF3HFD03m+JRr3NSNUEUr81TQlbEm2oiKXuDk5O8f+bjUGawUx", - "SMPNad2j5vAOoa+HjAjyFkLkQDkiz5+7Psr4kq0qCYpcrkGv3Z0nQZWCKyBi8U9Itdn2/3X681siJPkJ", - "lKIreEfTcwI8FdnwHrtJYzf4P5UwG16oVUnT8/h1nbOCRUD+iW5YURWEV8UCpNkvfz9oQSToSvIhgOyI", - "e+isoJv+pGey4ilubjNtS1AzpMRUmdPtjJwsSUE33x5MHTiK0DwnJfCM8RXRGz4opJm594OXSFHxbIQM", - "o82GBbemKiFlSwYZqUfZAYmbZh88jF8PnkayCsDxgwyCU8+yBxwOmwjNmKNrvpCSriAgmRn5xXEu/KrF", - "OfCawZHFFj+VEi6YqFTdaQBGnHq3eM2FhqSUsGQRGjt16DDcw7Zx7LVwAk4quKaMQ2Y4LwItNFhONAhT", - "MOFuZaZ/RS+ogm+eDV3gzdeRu78U3V3fueOjdhsbJfZIRu5F89Ud2LjY1Oo/QvkL51ZsldifexvJVmfm", - "KlmyHK+Zf5r982ioFDKBFiL8xaPYilNdSTj6yB+bv0hCTjXlGZWZ+aWwP/1U5ZqdspX5Kbc/vRErlp6y", - "1QAya1ij2hR2K+w/Zrw4O9abqNLwRojzqgwXlLa00sWWnLwa2mQ75nUJ87hWZUOt4mzjNY3r9tCbeiMH", - "gBzEXUlNw3PYSjDQ0nSJ/2yWSE90Kf8w/5RlHsOpIWB30aJRwBkLjssyZyk12HvvPpuv5vSDVQ9o02KO", - "N+nR5wC2UooSpGZ2UFqWSS5SmidKU40j/ZuE5eRo8pd5Y1WZ2+5qHkz+xvQ6xU5GELXCTULL8hpjvDMC", - "jdrBJQxnxk/IHyy/Q1GIcbt7hoaY4b05XFCuZ40i0mIE9cn94GZq8G1lGIvvjmI1iHBiGy5AWbnWNnyg", - "SIB6gmgliFYUM1e5WNQ/PDwuywaD+P24LC0+UCYEhuIWbJjS6hEunzZHKJzn5NWMvA7HRgFb8HxrbgUr", - "Y5hLYemuK3d91RYjt4ZmxAeK4HYKOTNb49FghPe7oDhUFtYiN+LOXloxjf/u2oZkZn4f1fnLILEQt8PE", - "heqTw5zVXPCXQGV52KGcPuE4I86MHHf73oxszChxgrkRrezcTzvuDjzWKLyUtLQAui/2EmUcVS/byMJ6", - "S246ktFFYQ7OcEBrCNWNz9re8xCFBEmhA8N3uUjP7+C8L8w4/WOHw5M10Awkyaimwbly5yV+WWPHv2M/", - "5AggIxL9z/gfmhPz2RC+4Yt2WKOpM6RfEdjVM6PgWrHZzmQaoOItSGF1WmJ00WtB+bKZvMcjLFrG8Ijv", - "rRpNsIdfhFl6YyQ7Xgh5M3rpEAInjemPUDNqcFymnZ3FplWZOPxEzAe2QWegxtvSlyJDDHWHj+GqhYVT", - "Tf8FWFBm1LvAQnugu8aCKEqWwx2c1zVV6/4ijD739Ak5/fvx88Mnvz55/o1RSEopVpIWZLHVoMhDJ0YT", - "pbc5POqvDOXZKtfx0b955g1G7XFj4yhRyRQKWvaHsoYoe2nZZsS062OtjWZcdQ3gmGN5Boa9WLQTa2M1", - "oL1iytyJxeJONmMIYVkzS0YcJBnsJabrLq+ZZhsuUW5ldRfKB0gpZMQUgkdMi1TkyQVIxUTEqv3OtSCu", - "hRdIyu7vFlpySRUxc6OVruIZyFmMsvSGI2hMQ6H2Xah26LMNb3DjBqRS0m0P/Xa9kdW5ecfsSxv53uij", - "SAky0RtOMlhUq5bsupSiIJRk2BEvjrciA6N3VOoOuGUzWAOM2YgQBLoQlSaUcJEBKimVivPRARcX2tbR", - "JaBD1qzX9p5egBGIU1qt1ppUJUGDd29rm44JTe2mJHinqgGLYG3Kta3sdNZ9kkugmRGUgROxcGY3ZxDE", - "RVK01mvPiRwXj6gOLbhKKVJQyig4VmzdC5pvZ3dZ78ATAo4A17MQJciSyhsCq4Wm+R5AsU0M3FrscrbK", - "PtTjpt+1gd3Jw22k0ug4lgqMjGdOdw4ahlA4EicXINFm9y/dPz/JTbevKgc86k5SOWMFqkqccqEgFTxT", - "0cFyqnSy79iaRi1xyqwgOCmxk4oDD6jrb6jS1nLLeIaitWU3OI/V480UwwAP3ihm5H/4y6Q/dmr4JFeV", - "qm8WVZWlkBqy2Bo4bHbM9RY29VxiGYxdX19akErBvpGHsBSM75BlV2IRRHVt53Cujf7i0Bpg7oFtFJUt", - "IBpE7ALk1LcKsBt6FQcAMXpY3RMJh6kO5dSuzOlEaVGW5vzppOJ1vyE0ndrWx/qXpm2fuKhu+HomwMyu", - "PUwO8kuLWetPXlMjA+PIpKDn5m5CidaamPswm8OYKMZTSHZRvjmWp6ZVeAT2HNIBZcJFrASzdQ5Hh36j", - "RDdIBHt2YWjBA5rNOyo1S1mJksSPsL1zs0h3gqiFhGSgKTPSdvABGTjy3ro/sT6D7pg3E7RGCaF98HtS", - "aGQ5OVN4YbSBP4ctmkrfWWf0WeDCvgNJMTKqOd2UEwTUu7jMhRw2gQ1Ndb4115xew5ZcggSiqkXBtLbR", - "BW1BUosyCQeIKvg7ZnQmFuvI9TswxuZzikMFy+tvxXRixZbd8J11BJcWOpzAVAqRjzBF95ARhWCUqZqU", - "wuw6c8EsPuLBU1ILSCfEoH2tZp4PVAvNuALyf0RFUspRAKs01DeCkMhm8fo1M5gLrJ7TGaUbDEEOBVi5", - "Er88ftxd+OPHbs+ZIku49BFgpmEXHY8fo5b0TijdOlx3oPGa43YS4e1o+TAXhZPhujxltle1dyOP2cl3", - "ncFrc4k5U0o5wjXLvzUD6JzMzZi1hzSypmq9f+047iijRjB0bN1236UQyzsypMUjAFA5cU5904osK26B", - "qpRTR9DP5Q0aYjmtozxsdPcRwRCANfXWOPfnk+ffTKaN677+bu5k+/VTRKJk2SYWoJHBJrYn7oihNvXA", - "qB5bBVGvGDJmsYzEaIE8z93KOqyDFGDOtFqz0gzZxJNsNbRiUf/vw38/+nCc/CdN/jhIXvyP+afPz64e", - "Pe79+OTq22//X/unp1ffPvr3f4uaFTVbxM2ffze7JJbEsfgNP+HWgbEU0upjWyfmieX9w60lQAalXseC", - "P0sJClmjDeIs9brZVICODaWU4gL4lLAZzLosNluB8sakHOgSgxBRpxBjnKL1cbD05okjwHq4kFF8LEY/", - "6OJD2sTDbJSOfHsHwosdiMg2Pr2yruxXsQwjZ91BUVuloejbu2zXXwek/fdeVu4dKsFzxiEpBIdtNFmE", - "cfgJP8Z62+tuoDMKHkN9u7pEC/4OWO15xmzmbfGLux3w93e1Y/sONr87bsfUGcYMo6kG8pJQkuYMDTmC", - "Ky2rVH/kFFXFgFwj7iSvAA8bD176JnFrRcSY4Ib6yKkyOKwVyKgJfAmRK+sHAG9DUNVqBUp3hOYlwEfu", - "WjFOKs40zlWY/UrshpUg0aczsy0LuiVLmqOt4w+Qgiwq3RYj8dJTmuW5s7uaaYhYfuRUGx6kNPmJ8bMN", - "DucjCD3NcNCXQp7XWIhfUSvgoJhK4nz/tf2K7N8tf+2uAswzsZ89v7lvvu9hjwXeOchPXjkV6+QVytGN", - "xbUH+72Z4QrGkyiRGbmoYBzjtzu0RR4abcAT0KPGdut2/SPXG24I6YLmLDOy003IocviemfRno4O1bQ2", - "omNV8Wv9FAsbWImkpOk5eo0nK6bX1WKWimLuVcv5StRq5jyjUAiO37I5LdlclZDOLw73yLm34Fckwq6u", - "phPHddSdG2LcwLEFdees7Zn+by3Ig9ffn5G52yn1wEbh2qGD8MmINcBFCLUcVmbxNovMhiF/5B/5K1gy", - "zsz3o488o5rOF1SxVM0rBfI7mlOewmwlyJEPOnpFNf3Ieyx+MNEzCPciZbXIWUrOw6u4OZo2eac/wseP", - "HwyBfPz4qef96F+cbqroGbUTJJdMr0WlE5edkEi4pDKLgK7q6HQc2eYW7Zp1StzYliJd9oMbP86qaVmq", - "brBqf/llmZvlB2SoXCim2TKitJCeCRrOaKHB/X0rnMol6aVPbakUKPJbQcsPjOtPJPlYHRw8BdKK3vzN", - "8RpDk9sSWnajGwXTdm1GuHArUMFGS5qUdAUqunwNtMTdx4u6QAtlnhPs1ooa9TEWOFSzAI+P4Q2wcFw7", - "Ag4Xd2p7+TTT+BLwE24htjHcqTH833S/gjjSG29XJxa1t0uVXifmbEdXpQyJ+52ps89Whid7b4xiK24O", - "gUvUWwBJ15CeQ4Y5Q1CUejttdfcOP3fDedbBlM2ts4FumACCJrYFkKrMqJMBKN92I/EVaO3TD97DOWzP", - "RJM/cp3Q+3ZAuBo6qEipwWVkiDU8tm6M7uY75zEGwZalj6vGGEJPFkc1Xfg+wwfZ3pB3cIhjRNEKWB5C", - "BJURRFjiH0DBDRZqxrsV6ceWZ8Sbhb35ImYez/uJa9JIbc4BHK4G47Dt9wIwUVdcKrKgCjIiXI6pDXoO", - "uFil6AoGbE+hlXNkaHHLMoqD7Lv3ojedWHYvtN59EwXZNk7MmqOUAuaLIRU0E3bc/n4ma0jHFcwIlo5w", - "CFvkKCbVEQeW6VDZsjbbXPgh0OIEDJI3AocHo42RULJZU+XTXzFL2J/lUTLAvzCIf1fO1kngsQ5SgeuM", - "LM9zu+e0Z7d1mVs+XcvnaIVG2xH5VtOJC6KKbYfgKABlkMPKLtw29oTSJBQ0G2Tg+Hm5zBkHksSc31Qp", - "kTKbv9xcM24OMPLxY0Ks7YmMHiFGxgHY6CDCgclbEZ5NvroOkNwlRFA/NrqWgr8hHglow5uMyCNKw8IZ", - "HwhM8xyAuoiJ+v7qxO3gMITxKTFs7oLmhs05I2ozSC+DCMXWTr6Qc1E+GhJnd5j+7MVyrTXZq+gmqwll", - "Jg90XKDbAfFuUSK2BQrx5VTfGldDd+mYqQeu7yFcPQxyj24EQMcS0ZTncZrfXg2tfTf3b7KGpU+bZFof", - "mRmj/SH6ie7SAP76huA6W+hd97qOKult12U7USqQn2Ks2JyRvmm0b4BVkANKxElLgkjOYwZzI9gDsttT", - "3y3Q3DEdi/Lto8AfLmHFlIbGdGVuJW+LvW93F8X0byGWw6vTpVya9b0XoubRNs3Quu/CZd77Ci6EhmTJ", - "pNIJ2v2iSzCNflCoUf5gmsYFhbbH3VZCYVmcN+C057BNMpZXcXp18/74ykz7tjbCqGpxDlsUB4Gma7LA", - "yj3ROJwdU9tQrZ0LfmMX/Ibe2XrHnQbT1EwsDbm05/hCzkWH8+5iBxECjBFHf9cGUbqDQeLF/wpyHctY", - "CoQGezgz03C2y/TYO0yZH3uXohRAMXxH2ZGiawm05Z2rYBh9YNQ9poPCN/20gYEzQMuSZZuOIdCOOqgu", - "0mtp+z6xuIMF3F032B4MBEa/WGSqBNXOIW+kW1vCiIdrm43CzFk70ztkCOFUTPkCfH1EGdLGKlH7cHUG", - "NP8Rtv8wbXE5k6vp5HZ2wxiu3Yh7cP2u3t4ontEhZu1ILTfANVFOy1KKC5onzro6RJpSXDjSxObeGHvP", - "rC5uwzv7/vjNOwf+1XSS5kBlUosKg6vCduUXsyqbrj5wQHyBL6PweJndipLB5tdpxKFF9nINrphSII32", - "ij801vbgKDoL7TLul99rb3WOAbvEHQ4CKGv/QGO7su6BtkuAXlCWe6ORh3bAh46LG1dBJMoVwgFu7VoI", - "PETJnbKb3umOn46GuvbwpHCuHeWeClvRTBHBuyFZRoREWxSSakGxdIM1CfSZE6+KxBy/ROUsjRsY+UIZ", - "4uDWcWQaE2w8IIyaESs24IfkFQvGMs3UCEW3A2QwRxSZvgzIEO4WwpWirTj7vQLCMuDafJJ4KjsHFWtl", - "OFNz/zo1skN/LjewNU83w99GxgjLlnRvPARit4ARuql64L6qVWa/0NocY34I7PHX8HaHM/auxB2eakcf", - "jpptyNC67W4KK8f2+Z8hDFtlbH/ZWq+8uvopA3NEy9AylSyl+APieh6qx5GwdV+ohWHU5B/AZ5Hsny6L", - "qa07TTXdZvbB7R6SbkIrVNtDP0D1uPOBTwqLYnjzLOV2q21VyFZcSJxgwliuuR2/IRgHcy/+LaeXCxqr", - "GGKEDAPTceP9bBmStSC+s8e9s3kzVztnRgJHat2W2YSuEmSTUdJPHr6hwGCnHS0qNJIBUm0oE0yt8ytX", - "IjJMxS8pt8VFTT97lFxvBdb4ZXpdConpmCpu884gZQXN45JDhthvp69mbMVsac1KQVC70Q1kaxJbKnL1", - "L61/uUHNyZIcTIPqsG43MnbBFFvkgC0ObYsFVcjJa0NU3cUsD7heK2z+ZETzdcUzCZleK4tYJUgt1KF6", - "U3tuFqAvATg5wHaHL8hD9FkpdgGPDBbd/Tw5OnyBRlf7x0HsAnA1dHdxkwzZyX84dhKnY3Ta2TEM43aj", - "zqLJhbbw+TDj2nGabNcxZwlbOl63/ywVlNMVxMMkij0w2b64m2hI6+CFZ7Zqr9JSbAnT8flBU8OfBmI+", - "DfuzYJBUFAXThfNsKFEYemoKM9pJ/XC2BLCrHuTh8h/RQVh6/0hHibxfo6m932KrRjfuW1pAG61TQm0O", - "bs4a170v+EVOfCY/llOqqyhZ3Ji5zNJRzEFP/pKUknGNikWll8nfSLqmkqaG/c2GwE0W3zyLlJBqV43h", - "1wP83vEuQYG8iKNeDpC9lyFcX/KQC54UhqNkj5oY6+BUDnoy49FinqN3gwV3Dz1WKDOjJIPkVrXIjQac", - "+laEx3cMeEtSrNdzLXq89srunTIrGScPWpkd+uX9GydlFELG6ro0x91JHBK0ZHCBgWvxTTJj3nIvZD5q", - "F24D/Z/refAiZyCW+bMcUwS+q1ie/aPJGelU4ZOUp+uo3X9hOv7aVEmul2zPcbSMyJpyDnl0OHtn/urv", - "1sjt/08xdp6C8ZFtu9X17HI7i2sAb4PpgfITGvQynZsJQqy2g+jrqMt8JTKC8zQ1Kxoq6xcMDCpo/V6B", - "0rGkPfxgIz/QvmP0AlvAiQDPUKqekdf2lZM1kFZKPUqzrKhym54N2QqkMzxWZS5oNiVmnLPvj98QO6vt", - "Y0t+2gJSKxTm2qvo6PVBgZtxMYS+emc8vnn8OLsDLs2qlcYKF0rTooylrpgWZ74B5seEtk4U80LszMgr", - "K2ErL7/ZSQw9LJksjGRaj2Z5PNKE+Y/WNF2j6NriJsMkP77ymadKFRSGr+u81jVq8NwZuF3xM1v7bEqE", - "0S8umbKPW8AFtLNl6tQxpzr57Jn28mTFuaWUKI/eldp4E7R74KxD25tDo5B1EH9NwcUWDrxuIbhT7BUt", - "+tCtKterCG+ziusSpf7RopRywVmKJReC5zRqkN1DGWN8BSOqU3SNUf6IuxMaOVzRWnZ1OJHD4mB1O88I", - "HeL6xsrgq9lUSx32T40vMqypJivQynE2yKa+JKOzlzCuwNUcwjdTAj4pZMv/ghwy6tJLatPvNckIY+cH", - "BOAfzLe3Tj3CoNJzxlEQcmhz8avWooF1/LWRnpgmKwHKraedmq8+mD4zTE/PYPNp5uv+4xjWfWGWbX11", - "/aGOvefOecpM25emLbFRh/XPrTBFO+lxWbpJhwt2RuUBveGDCI54YBJvAg+QW48fjraD3Ha63PE+NYQG", - "F+iwgxLv4R5h1MUrO9V6L2heWYrCFsSGukTzKxmPgPGGcWhepYhcEGn0SsCNwfM60E+lkmorAo7iaWdA", - "c/TSxRia0s5Ee9uhOhuMKME1+jmGt7GpuznAOOoGjeBG+bZ+DMNQdyBMvMRXeBwi+1U0UapyQlSGYced", - "upoxxmEYt6/c274A+segLxPZ7lpSe3KucxMNZZKlIiZvfr+BtLJOaKF8FDJJMTU7uC+iFs2mQmxkG8Iq", - "tR61GCK+2OK/sRJLwyhxXuJrxyl5lzB2vLbA2h6pJ24aYkoUWyXjMYHM/PboaKa+GYU1/e+UxHKxagNy", - "z7VQdrGXcI9ijOV7w7HDvOZe3TDL0+u0Y4wKEr7YPOprdcJcmx3gHdIrJIbW6Lpu+G57wHAF8CneOgOx", - "gUEFGGovNuveGIoQTAcDWql2eSWakqZ8RZ8n2LLdsRFseIEtF25fGoyadoZCCmxEgfnc6z1OJOsJuDj2", - "ToT6WJU+QD/6QDhSUuZ8dw2z6GPWhcz2g5jHBNM1G9xdhAtExUFiK+nVB9xNIb1A5CCY3pZxm41PaD+u", - "HaPorsEi3Cvgrgp3O8RwdKDTcgmpZhd7Ar//wwjLTVDx1IvT9omHIA6c1YEz/kHKa0r5DUC74rJ3whNU", - "zbg1OENhn+ewfaBIixqideWmnlBvki+JGMCKIokhEaFijger/ztbMFM1ZSAWvKPPdoemmNNgQd8gjeGG", - "c3mSJDRMbdgx5YWIKRCj5jJdr5XwgzEgQ7Hh/ZKaw7fXK6xgqupi7PWLk0Ech9ETu/XeLl2+Jobp1yYv", - "n7kJyv/mc3LsLPYl06bkMBoYL6nMfIuoxOyF8WQg2qobv2zDxFkc6GU9M2vCMvohvJE6Bxh8k+ZCMb5K", - "hiKY2pEQ4WNI6O9B2wTWKkW4liBdqXHtH4pNtPBhHLvg2IUK93DPTZCgBqv2WeAGM37fNynNWNyJ2meC", - "nS8rXCCRUFADnQwSj4fn3IXsl/a7j1n1xX06pbQi43p6TfZmDvuAHKZ6SAypfkncbbk/FvYmqgrj3L7k", - "oGJZyNygMjRilVJkVWov6PBggFfpRuf472AlUSk/7a+yJ7DlWPHiTZBZcA7buRWa0jXlTemR9rG2xQjt", - "GoJMvs5u36kWFxdY85VdwOpO4PwzNaHppBQiTwasVif9ZOruGThn6TlkxNwd3pU9UNSXPERjSe2WuFxv", - "ffJwWQKH7NGMEKNLFaXeeg9Fu4xYZ3L+QO+af4OzZpWtb+CUtNlHHo/CsA9v35K/+WF2czUFhvndcio7", - "yJ5s5c1AIrekl5ES12NfMYv4DLplhxuislDEpJQbpq6NOt99RS1C+mHSwR7957yl1dlCOR0/gZBwx9pd", - "YCC9pnbXT6cYuzxcB3K1SkF/naM3oIXbAdyPQXxjmugjd9iioBdjLArxoh6mO5o0LEKwIg5BUMlvh78R", - "CUuskCfI48c4wePHU9f0tyftz0b7evw4ejLvzZjReizNzRujmH8M+ZWt73QghKGzHxXLs32E0QpIaapV", - "YsjFry5050+pl/mrVZH7R9WVDryOGbW7CYiYyFpbkwdTBaEmI6JMXLdZ9Dk7BWklmd5iRpHXqNiv0Uzt", - "17URxr3AWceguxBo+9a9i4hqTDbN8+SvhX3+rjB3PRqxNdbz/35DizIHd1C+fbD4Kzz927Ps4OnhXxd/", - "O3h+kMKz5y8ODuiLZ/TwxdNDePK3588O4HD5zYvFk+zJsyeLZ0+effP8Rfr02eHi2Tcv/vrAvw1uAW3e", - "3f7fWFQ2OX53kpwZYBuc0JLVz3gYMvYFKmmKJ9HoJPnkyP/0P/0Jm6WiaIb3v05ceNxkrXWpjubzy8vL", - "WdhlvkIdLdGiStdzP0//+YR3J3Xojk25wB21URmGFHBTHSkc47f335+ekeN3J7OGYCZHk4PZwewQ60CX", - "wGnJJkeTp/gTnp417vvcEdvk6PPVdDJfA82xOLj5owAtWeo/qUu6WoGcuUqd5qeLJ3Pv+Z9/dvrp1a5v", - "87DozfxzS43P9vTEuiDzzz7dZXfrVj6JM18EHUZCMTylfSBs/hn1wcHf22B81huWXc29+cn1cA/tzD83", - "L19d2VOYQ8x0ZEO5aPBQ1tTo6/hwqrK/moPnI8iZaj+UVlPRSWaox/R6Wb8CFiTPH33oiV92IOJHwqNm", - "6Kg5Ca2ZGmanZQVhPnfNylvtG4b+4SB58enz4fTw4OovhmG7P58/vRppA24eeiWnNTce2fBT5y39JwcH", - "/82eyX12zRXvlLlbbrJIud7vaEZ8dCPOfXh/c59wtMAbxknsxXA1nTy/z9WfcEPyNCfYMsj76W/9L/yc", - "i0vuW5pbvCoKKrf+GKsWU/Bv++FdQVcKNTDJLqiGySdU8WPu/QHmgu8RX5u54CPLX5nLfTGXL+P16SfX", - "POBf/oq/stMvjZ2eWnY3np06Uc4G0M/tCySNhNcrL7uCaCQ/xtTTXe/tdTnsa9C95wMnt2Qxf9pLgv+9", - "z8mzg2f3B0G7NuKPsCVvhSY/oNvrCz2z447PLkmooxllWY/ILfsHpb8T2XYHhgq1Kl3Qa0QuWTBuQO7f", - "Lv23OXrP+53DllhXsDf5u+dt2/LQ1S15wBf7EuFXHvKVh0g7/dP7m/4U5AVLgZxBUQpJJcu35Bdepyzd", - "XK3LsmiYXfvo93ia0UZSkcEKeOIYVrIQ2daXq2kNeA7WNN0TVOaf2zUnrflr0Cz1Cn+vn8LpA73YkpNX", - "PQnGduty2u+22LSjMUZ0wi6IOzXDLi8aUMZ2kblZyEpoYrGQuUV9ZTxfGc+thJfRhycmv0S1CW/I6d7J", - "U5+7G8tup7o/9Rid4089rv9lH3b/yhK+soSbs4TXEDmMeGodk4gQ3U0svX0GgZFXWbdyO4Yv+OZVTiVR", - "MNZMcYwjOuPEfXCJ+1bSoriyOhrlBDZM4UskkQ27W73tK4v7yuK+IK/VfkbTFkSuremcw7agZa3fqHWl", - "M3Fpa95EuSKWg6W5qx2H1dzqSAwtiB+gSXAiP7uMvnyLL6KzzIhxmhVgRKqa15nOPmy1iZs1IzRP+K0Y", - "xwmQVeAstkgiDVIHFKSC2wevOr42B9lbqxPGmOzvFSBHc7hxME6mLWeL28ZIScJby19938jVDlt6/WpV", - "6+/5JWU6WQrpMocQQ/0oDA00n7vqDp1fm7zO3hdMVg1+DGI34r/O6yq90Y/dqJPYVxcU4hs1YWVhmBbu", - "YR2g9eGT2Qos8ua2t4k6OprPMdx+LZSeT66mnzsRSeHHTzX2P9c3r9uFq09X/z8AAP//Jlc5MCqxAAA=", + "H4sIAAAAAAAC/+x9/XPcNrLgv4KafVX+uOGM/JVdqyr1TrGcrC6O47KUfXfP9iUYsmcGKxJgAFCaiU//", + "+xUaAAmS4Az1scpzPf9kawg0Go1Go7vR3fg8SUVRCg5cq8nh50lJJS1Ag8S/aJqKiuuEZeavDFQqWamZ", + "4JND/40oLRlfTaYTZn4tqV5PphNOC2jamP7TiYTfKyYhmxxqWcF0otI1FNQA1tvStK4hbZKVSByIIwvi", + "5HhyteMDzTIJSvWx/JnnW8J4mlcZEC0pVzQ1nxS5ZHpN9Jop4joTxongQMSS6HWrMVkyyDM185P8vQK5", + "DWbpBh+e0lWDYiJFDn08X4liwTh4rKBGql4QogXJYImN1lQTM4LB1TfUgiigMl2TpZB7ULVIhPgCr4rJ", + "4YeJAp6BxNVKgV3gf5cS4A9INJUr0JNP09jklhpkolkRmdqJo74EVeVaEWyLc1yxC+DE9JqRnyqlyQII", + "5eT996/Is2fPXpqJFFRryByTDc6qGT2ck+0+OZxkVIP/3Oc1mq+EpDxL6vbvv3+F45+6CY5tRZWC+GY5", + "Ml/IyfHQBHzHCAsxrmGF69DiftMjsimanxewFBJGroltfKeLEo7/p65KSnW6LgXjOrIuBL8S+zkqw4Lu", + "u2RYjUCrfWkoJQ3QDwfJy0+fn0yfHFz95cNR8p/uzxfPrkZO/1UNdw8Fog3TSkrg6TZZSaC4W9aU9+nx", + "3vGDWosqz8iaXuDi0wJFvetLTF8rOi9oXhk+YakUR/lKKEIdG2WwpFWuiR+YVDw3YspAc9xOmCKlFBcs", + "g2xqpO/lmqVrklJlQWA7csny3PBgpSAb4rX47HZspquQJAavG9EDJ/RflxjNvPZQAjYoDZI0FwoSLfYc", + "T/7EoTwj4YHSnFXqeocVOVsDwcHNB3vYIu244ek83xKN65oRqggl/miaErYkW1GRS1ycnJ1jfzcbQ7WC", + "GKLh4rTOUbN5h8jXI0aEeAshcqAcief3XZ9kfMlWlQRFLteg1+7Mk6BKwRUQsfgnpNos+/86/fktEZL8", + "BErRFbyj6TkBnopseI3doLET/J9KmAUv1Kqk6Xn8uM5ZwSIo/0Q3rKgKwqtiAdKslz8ftCASdCX5EEIW", + "4h4+K+imP+iZrHiKi9sM21LUDCsxVeZ0OyMnS1LQzbcHU4eOIjTPSQk8Y3xF9IYPKmlm7P3oJVJUPBuh", + "w2izYMGpqUpI2ZJBRmooOzBxw+zDh/Hr4dNoVgE6HsggOvUoe9DhsInwjNm65gsp6QoClpmRX5zkwq9a", + "nAOvBRxZbPFTKeGCiUrVnQZwxKF3q9dcaEhKCUsW4bFTRw4jPWwbJ14Lp+CkgmvKOGRG8iLSQoOVRIM4", + "BQPuNmb6R/SCKvjm+dAB3nwdufpL0V31nSs+arWxUWK3ZORcNF/dho2rTa3+I4y/cGzFVon9ubeQbHVm", + "jpIly/GY+adZP0+GSqEQaBHCHzyKrTjVlYTDj/yx+Ysk5FRTnlGZmV8K+9NPVa7ZKVuZn3L70xuxYukp", + "Ww0Qs8Y1ak1ht8L+Y+DFxbHeRI2GN0KcV2U4obRllS625OR4aJEtzOsy5lFtyoZWxdnGWxrX7aE39UIO", + "IDlIu5KahuewlWCwpekS/9kskZ/oUv5h/inLPEZTw8DuoEWngHMWHJVlzlJqqPfefTZfze4Hax7QpsUc", + "T9LDzwFupRQlSM0sUFqWSS5SmidKU42Q/k3CcnI4+cu88arMbXc1DwZ/Y3qdYiejiFrlJqFleQ0Y74xC", + "o3ZICSOZ8RPKByvvUBVi3K6e4SFmZG8OF5TrWWOItARBvXM/uJEaelsdxtK7Y1gNEpzYhgtQVq+1DR8o", + "EpCeIFkJkhXVzFUuFvUPD4/KsqEgfj8qS0sP1AmBoboFG6a0eoTTp80WCsc5OZ6RH0LYqGALnm/NqWB1", + "DHMoLN1x5Y6v2mPk5tBAfKAILqeQM7M0ngxGeb8LjkNjYS1yo+7s5RXT+O+ubchm5vdRnb8MFgtpO8xc", + "aD45ylnLBX8JTJaHHc7pM45z4szIUbfvzdjGQIkzzI14Zed6Wrg76FiT8FLS0iLovthDlHE0vWwji+st", + "pelIQRfFOdjDAa8hVjfea3v3QxQTZIUODt/lIj2/g/2+MHD62w7BkzXQDCTJqKbBvnL7JX5YY8e/Yz+U", + "CCAjGv3P+B+aE/PZML6RixassdQZ8q8I/OqZMXCt2mxHMg3Q8BaksDYtMbbotbB81QzekxGWLGNkxGtr", + "RhPs4Sdhpt44yY4WQt6MXzqMwEnj+iPUQA22y7Szsti0KhNHn4j7wDboAGpuW/paZEihLvgYrVpUONX0", + "X0AFZaDeBRXagO6aCqIoWQ53sF/XVK37kzD23LOn5PTvRy+ePP316YtvjEFSSrGStCCLrQZFHjo1mii9", + "zeFRf2aoz1a5jkP/5rl3GLXhxuAoUckUClr2QVlHlD20bDNi2vWp1iYzzrpGcMy2PAMjXizZifWxGtSO", + "mTJnYrG4k8UYIljWjJIRh0kGe5nputNrhtmGU5RbWd2F8QFSChlxheAW0yIVeXIBUjER8Wq/cy2Ia+EV", + "krL7u8WWXFJFzNjopat4BnIW4yy94Yga01CofQeqBX224Q1tHEAqJd32yG/nG5mdG3fMurSJ750+ipQg", + "E73hJINFtWrprkspCkJJhh3x4HgrMjB2R6XuQFo2wBpkzEKEKNCFqDShhIsM0EipVFyODlxxoW8drwR0", + "KJr12p7TCzAKcUqr1VqTqiTo8O4tbdMxoaldlATPVDXgEaxdubaVHc5en+QSaGYUZeBELJzbzTkEcZIU", + "vfXaSyInxSOmQwuvUooUlDIGjlVb96Lm29lV1jvohIgjwvUoRAmypPKGyGqhab4HUWwTQ7dWu5yvso/1", + "uOF3LWB38HAZqTQ2juUCo+OZ3Z2DhiESjqTJBUj02f1L188PctPlq8qBG3WnqZyxAk0lTrlQkAqeqSiw", + "nCqd7Nu2plFLnTIzCHZKbKci4AFz/Q1V2npuGc9QtbbiBsexdrwZYhjhwRPFQP6HP0z6sFMjJ7mqVH2y", + "qKoshdSQxebAYbNjrLewqccSywB2fXxpQSoF+yAPUSmA74hlZ2IJRHXt53BXG/3JoTfAnAPbKClbSDSE", + "2IXIqW8VUDe8VRxAxNhhdU9kHKY6nFNfZU4nSouyNPtPJxWv+w2R6dS2PtK/NG37zEV1I9czAWZ07XFy", + "mF9aytr75DU1OjBCJgU9N2cTarTWxdzH2WzGRDGeQrKL8822PDWtwi2wZ5MOGBMuYiUYrbM5OvwbZbpB", + "JtizCkMTHrBs3lGpWcpK1CR+hO2du0W6A0Q9JCQDTZnRtoMPKMBR9tb9ib0z6MK8maI1Sgnto9/TQiPT", + "yZnCA6ON/Dls0VX6zl5GnwVX2HegKUagmt1NOUFE/RWXOZDDJrChqc635pjTa9iSS5BAVLUomNY2uqCt", + "SGpRJiGAqIG/Y0TnYrEXuX4Fxvh8ThFUML3+UkwnVm3Zjd9ZR3FpkcMpTKUQ+QhXdI8YUQxGuapJKcyq", + "MxfM4iMePCe1kHRKDPrXauH5QLXIjDMg/0dUJKUcFbBKQ30iCIliFo9fM4I5wOoxnVO6oRDkUIDVK/HL", + "48fdiT9+7NacKbKESx8BZhp2yfH4MVpJ74TSrc11Bxav2W4nEdmOng9zUDgdritTZntNewd5zEq+6wCv", + "3SVmTynlGNdM/9YCoLMzN2PmHvLImqr1/rkj3FFOjQB0bN523aUQyztypMUjANA4cZf6phVZVtwiVSln", + "juA9l3doiOW0jvKw0d2HBEMA1tR749yfT198M5k2V/f1d3Mm26+fIholyzaxAI0MNrE1cVsMrakHxvTY", + "KojeiqFgFstIjBbI89zNrCM6SAFmT6s1Kw3IJp5kq6EVi/p/H/774Yej5D9p8sdB8vJ/zD99fn716HHv", + "x6dX3377/9o/Pbv69tG//1vUrajZIu7+/LtZJbEkTsRv+Am3FxhLIa09tnVqnljeP95aAmRQ6nUs+LOU", + "oFA02iDOUq+bRQXo+FBKKS6ATwmbwawrYrMVKO9MyoEuMQgRbQox5lK03g6W3zxzBFQPJzJKjsX4B6/4", + "kDdxMxujI9/egfJiARHZpqc31pX9KpZh5KzbKGqrNBR9f5ft+uuAtv/e68q9TSV4zjgkheCwjSaLMA4/", + "4cdYb3vcDXRGxWOob9eWaOHfQas9zpjFvC19cbUD+f6uvti+g8Xvwu24OsOYYXTVQF4SStKcoSNHcKVl", + "leqPnKKpGLBr5DrJG8DDzoNXvkncWxFxJjhQHzlVhoa1ARl1gS8hcmR9D+B9CKparUDpjtK8BPjIXSvG", + "ScWZxrEKs16JXbASJN7pzGzLgm7Jkubo6/gDpCCLSrfVSDz0lGZ57vyuZhgilh851UYGKU1+Yvxsg+B8", + "BKHnGQ76UsjzmgrxI2oFHBRTSVzu/2C/ovh301+7owDzTOxnL2/uW+573GOBdw7zk2NnYp0cox7deFx7", + "uN+bG65gPIkymdGLCsYxfrvDW+ShsQY8Az1qfLdu1T9yveGGkS5ozjKjO92EHboirrcX7e7ocE1rITpe", + "FT/XT7GwgZVISpqe463xZMX0ulrMUlHMvWk5X4nazJxnFArB8Vs2pyWbqxLS+cWTPXruLeQViYirq+nE", + "SR11544YBzg2oe6YtT/T/60FefDD6zMydyulHtgoXAs6CJ+MeANchFDrwspM3maR2TDkj/wjP4Yl48x8", + "P/zIM6rpfEEVS9W8UiC/oznlKcxWghz6oKNjqulH3hPxg4meQbgXKatFzlJyHh7Fzda0yTt9CB8/fjAM", + "8vHjp97tR//gdENF96gdILlkei0qnbjshETCJZVZBHVVR6cjZJtbtGvUKXGwLUe67AcHPy6qaVmqbrBq", + "f/plmZvpB2yoXCimWTKitJBeCBrJaLHB9X0rnMkl6aVPbakUKPJbQcsPjOtPJPlYHRw8A9KK3vzNyRrD", + "k9sSWn6jGwXTdn1GOHGrUMFGS5qUdAUqOn0NtMTVx4O6QA9lnhPs1ooa9TEWCKqZgKfH8AJYPK4dAYeT", + "O7W9fJppfAr4CZcQ2xjp1Dj+b7peQRzpjZerE4vaW6VKrxOzt6OzUobF/crU2WcrI5P9bYxiK242gUvU", + "WwBJ15CeQ4Y5Q1CUejttdfcXfu6E86KDKZtbZwPdMAEEXWwLIFWZUacDUL7tRuIr0NqnH7yHc9ieiSZ/", + "5Dqh9+2AcDW0UZFTg8PIMGu4bR2M7uK7y2MMgi1LH1eNMYSeLQ5rvvB9hjeyPSHvYBPHmKIVsDxECCoj", + "hLDMP0CCG0zUwLsV68emZ9SbhT35Im4eL/uJa9Jobe4COJwNxmHb7wVgoq64VGRBFWREuBxTG/QcSLFK", + "0RUM+J5CL+fI0OKWZxSB7Dv3oiedWHYPtN55E0XZNk7MnKOcAuaLYRV0E3au/f1I1pGOM5gRLB3hCLbI", + "UU2qIw6s0KGy5W22ufBDqMUZGCRvFA6PRpsioWazpsqnv2KWsN/Lo3SAf2EQ/66crZPgxjpIBa4zsrzM", + "7e7Tnt/WZW75dC2foxU6bUfkW00nLogqthyCowKUQQ4rO3Hb2DNKk1DQLJDB4+flMmccSBK7/KZKiZTZ", + "/OXmmHFjgNGPHxNifU9kNIQYGwdo4wURAiZvRbg3+eo6SHKXEEE9bLxaCv6GeCSgDW8yKo8ojQhnfCAw", + "zUsA6iIm6vOrE7eDYAjjU2LE3AXNjZhzTtQGSC+DCNXWTr6Qu6J8NKTO7nD92YPlWnOyR9FNZhPqTB7p", + "uEK3A+PdqkRsCRTSy5m+Na2GztIxQw8c30O0ehjkHt0IgY4noinP4yy/vRZa+2zun2SNSJ82ybQ+MjPG", + "+0P8E12lAfr1HcF1ttC77nEdNdLbV5ftRKlAf4qJYrNH+q7RvgNWQQ6oESctDSI5jznMjWIPKG5PfbfA", + "csd0LMq3j4L7cAkrpjQ0ritzKnlf7H1fd1FM/xZiOTw7Xcqlmd97IWoZbdMM7fVdOM17n8GF0JAsmVQ6", + "Qb9fdAqm0fcKLcrvTdO4otC+cbeVUFgWlw047Dlsk4zlVZxf3bg/Hpth39ZOGFUtzmGL6iDQdE0WWLkn", + "GoezY2gbqrVzwm/shN/QO5vvuN1gmpqBpWGX9hhfyL7oSN5d4iDCgDHm6K/aIEl3CEg8+I8h17GMpUBp", + "sJszMw1nu1yPvc2Uedi7DKUAi+EzykKKziWwlnfOgmH0gTH3mA4K3/TTBgb2AC1Llm06jkALddBcpNey", + "9n1icYcKuLoO2B4KBE6/WGSqBNXOIW+0W1vCiIdzm42izFk70zsUCOFQTPkCfH1CGdbGKlH7aHUGNP8R", + "tv8wbXE6k6vp5HZ+wxitHcQ9tH5XL2+UznghZv1IrWuAa5KclqUUFzRPnHd1iDWluHCsic29M/aeRV3c", + "h3f2+ujNO4f+1XSS5kBlUqsKg7PCduUXMyubrj6wQXyBL2PweJ3dqpLB4tdpxKFH9nINrphSoI32ij80", + "3vZgKzoP7TJ+L7/X3+ouBuwUd1wQQFnfDzS+K3s90L4SoBeU5d5p5LEduEPHyY2rIBKVCiGAW18tBDdE", + "yZ2Km97uju+Ohrv2yKRwrB3lngpb0UwRwbshWUaFRF8UsmpBsXSDdQn0hROvisRsv0TlLI07GPlCGebg", + "9uLINCbYeEAZNRArNnAPySsWwDLN1AhDt4NkMEaUmL4MyBDtFsKVoq04+70CwjLg2nySuCs7GxVrZThX", + "c/84NbpDfywH2LqnG/C30THCsiXdEw+R2K1ghNdUPXSPa5PZT7R2x5gfAn/8NW67wxF7R+KOm2rHH46b", + "bcjQun3dFFaO7cs/wxi2ytj+srXeeHX1UwbGiJahZSpZSvEHxO08NI8jYeu+UAvDqMk/gM8i2T9dEVN7", + "d5pqus3og8s9pN2EXqj2Df0A1+PKB3dSWBTDu2cpt0ttq0K24kLiDBPGcs0t/IZhHM69+LecXi5orGKI", + "UTIMTkfN7WfLkawF8Z097Z3Pm7naOTMSXKTWbZlN6CpBNhkl/eThGyoMdtjRqkKjGSDXhjrB1F5+5UpE", + "wFT8knJbXNT0s1vJ9VZgnV+m16WQmI6p4j7vDFJW0DyuOWRI/Xb6asZWzJbWrBQEtRsdIFuT2HKRq39p", + "75cb0pwsycE0qA7rViNjF0yxRQ7Y4oltsaAKJXntiKq7mOkB12uFzZ+OaL6ueCYh02tlCasEqZU6NG/q", + "m5sF6EsATg6w3ZOX5CHeWSl2AY8MFd35PDl88hKdrvaPg9gB4Gro7pImGYqT/3DiJM7HeGlnYRjB7aDO", + "osmFtvD5sODasZts1zF7CVs6Wbd/LxWU0xXEwySKPTjZvria6Ejr0IVntmqv0lJsCdPx8UFTI58GYj6N", + "+LNokFQUBdOFu9lQojD81BRmtIN6cLYEsKse5PHyH/GCsPT3Ix0j8n6dpvZ8i80ar3Hf0gLaZJ0SanNw", + "c9Zc3fuCX+TEZ/JjOaW6ipKljRnLTB3VHLzJX5JSMq7RsKj0MvkbSddU0tSIv9kQusnim+eRElLtqjH8", + "eojfO90lKJAXcdLLAbb3OoTrSx5ywZPCSJTsURNjHezKwZvMeLSYl+jdYMHdoMcqZQZKMshuVYvdaCCp", + "b8V4fAfAW7JiPZ9r8eO1Z3bvnFnJOHvQyqzQL+/fOC2jEDJW16XZ7k7jkKAlgwsMXIsvkoF5y7WQ+ahV", + "uA32f+7Ng1c5A7XM7+WYIfBdxfLsH03OSKcKn6Q8XUf9/gvT8demSnI9ZbuPo2VE1pRzyKPg7Jn5qz9b", + "I6f/P8XYcQrGR7btVtez0+1MrkG8jaZHyg9oyMt0bgYIqdoOoq+jLvOVyAiO09SsaLisXzAwqKD1ewVK", + "x5L28ION/ED/jrELbAEnAjxDrXpGfrCvnKyBtFLqUZtlRZXb9GzIViCd47Eqc0GzKTFwzl4fvSF2VNvH", + "lvy0BaRWqMy1Z9Gx64MCN+NiCH31znh883g4uwMuzayVxgoXStOijKWumBZnvgHmx4S+TlTzQurMyLHV", + "sJXX3+wghh+WTBZGM62hWRmPPGH+ozVN16i6tqTJMMuPr3zmuVIFheHrOq91jRrcdwZvV/zM1j6bEmHs", + "i0um7OMWcAHtbJk6dcyZTj57pj09WXFuOSUqo3elNt6E7B45e6Ht3aFRzDqEv6biYgsHXrcQ3Cn2ihZ9", + "6FaV61WEt1nFdYlS/2hRSrngLMWSC8FzGjXK7qGMMXcFI6pTdJ1Rfou7HRrZXNFadnU4kaPiYHU7Lwgd", + "4frOyuCrWVTLHfZPjS8yrKkmK9DKSTbIpr4ko/OXMK7A1RzCN1MCOSlk6/4FJWT0Si+pXb/XZCOMnR9Q", + "gL8339468wiDSs8ZR0XIkc3Fr1qPBtbx10Z7YpqsBCg3n3Zqvvpg+swwPT2DzaeZr/uPMOz1hZm2vavr", + "gzryN3fupsy0fWXaEht1WP/cClO0gx6VpRt0uGBnVB/QGz5I4MgNTOJd4AFxa/ghtB3stvPKHc9Tw2hw", + "gRd2UOI53GOMunhlp1rvBc0ry1HYgthQl2h+JeMRNN4wDs2rFJEDIo0eCbgwuF8H+qlUUm1VwFEy7Qxo", + "jrd0MYGmtHPR3hZUZ4GRJDhHP8bwMjZ1NwcER92gUdwo39aPYRjuDpSJV/gKjyNkv4omalVOicow7LhT", + "VzMmOIzg9pV72wdAfxv0dSLbXUtqd851TqKhTLJFla1AJzTLYsXavsOvBL+SrELNATaQVnWxq7IkKWZs", + "t1PY+9zmBkoFV1WxYyzf4JbDpSKmR7/FAZSPq26AzwiKXyN6j1+/e//61dHZ62N7Xhiz3KaSGZ1bQmEE", + "orFjlQajOlcKyG8hGX/Dfr91JhxHM6inG2HasKavZ0QMqF9s8d9YQaphBnJ36teO6vIX6Njx2up9G1JP", + "OTdbL1FslYynBB59tydHM/TN9mPT/043ZC5WbUTuuXLMLmEcrlFMDL8251uYBd6rsmZPwDpJG2OohC/N", + "j9ZtnV7YFp544vbKrqHvvq6yvtt7MlwvfYpn9EAkZVAvh1o1wF4GDcVTpoPhv1S7LBxNyU5JiUXOYxBs", + "MIYtrm7fZYw6woYCMGz8hfnc6z1Oge2ZAwh7J0F9ZE8foR992CApKXM3nY2w6FPWBRj3Q77HhB42C9yd", + "hAvbRSCxmfSqKe7mkF7YdpB6YIvezcan/x/V18h4uYUly1fAXc3ydkDm6LCw5RJSzS72hMn/hzEtmhDs", + "qTc+7IMYQdQ8q8OM/POd17SJGoR2RbHvxCeoMXJrdIaCZM9h+0CRFjdEq/BNPaPeJLsUKYD1VxLDIkLF", + "rmmst8R5zpmqOQOp4K9FbXdoSl8Nlj8Okj5uOJZnSULDRJAdQ16ImLk1aizT9VrpURgxMxRJ3y9AOnx6", + "HWO9V1WXrq/f5wxUUWNVd6vjXbrsVkxqqB2EPs8VlP/NZzDZUey7r02BZnTHXlKZ+RZR+8KbLslAbFo3", + "2tsG1bM40st6ZNYEsfQDniNVITBUKc2FYnyVDMV7teNGwqej8HYMPTlY2RXxWoJ0hdm1f1Y30cIHvezC", + "Yxcp3DNHNyGCGqxxaJEbzI9+3ySAYyksah9Vdjd/4QSNsUENdjJI0x4ecxexX9nvPsLXl0IaYUY5fk32", + "5ln78CWmekQMuX5J3Gm5P3L4JqYK49y+e6FiOdvckDJ0+ZVSZFVqD+hwYzSG4diKCDtESVTLT/uz7Cls", + "OdYHeRPkYZzDdm6VpnRNeVOopb2tbelGO4cg77Gz2ndqxcUV1nxlJ7C6Ezz/TEtoOimFyJMBH99JP/W8", + "uwfOWXoOGTFnh7/4HyiBTB6ia6m+xLlcb32qdVkCh+zRjBBjSxWl3vr7nHbRtc7g/IHeNf4GR80qWw3C", + "GWmzjzwes2KfKb+lfPNgdks1BUb43XIoC2RPbvdmIO1d0stIQfCxb75Fbli6RZobprJYxLSUGyb6jdrf", + "fUMtwvphisYe++e8ZdXZskKdWxUh4Y6tu8CdfE3rrp98MnZ6OA+UapWC/jxHL0CLtgO0H0P4xjXRJ+6w", + "R0EvxngU4iVQTHd0aViCYP0ggqiS3578RiQssZ6gII8f4wCPH09d09+etj8b6+vx4+jOvDdnRutpOTdu", + "jGP+MXQLb2+aBwI+OutRsTzbxxit8J2mticGqPzqAp3+lOqiv1oTub9VXaHF67hRu4uAhInMtTV4MFQQ", + "mDMiJsd1m0Uf/1OQVpLpLeZfeYuK/RrNa/+hdsK490rriH0XMK7FOdQZfI3LpnnM/QdhHwsszFmPTmyN", + "rx+83tCizMFtlG8fLP4Kz/72PDt49uSvi78dvDhI4fmLlwcH9OVz+uTlsyfw9G8vnh/Ak+U3LxdPs6fP", + "ny6eP33+zYuX6bPnTxbPv3n51wf+JXWLaPNK+f/GErzJ0buT5Mwg29CElqx+9MSwsS/nSVPcicYmySeH", + "/qf/6XfYLBVFA97/OnHBhJO11qU6nM8vLy9nYZf5Cm20RIsqXc/9OP3HJt6d1IFONkEFV9TGsBhWwEV1", + "rHCE396/Pj0jR+9OZg3DTA4nB7OD2ROsml0CpyWbHE6e4U+4e9a47nPHbJPDz1fTyXwNNMdS6uaPArRk", + "qf+kLulqBXLm6pqany6ezn2cxPyzs0+vdn2bhyWC5p9bZny2pydWUZl/9slBu1u3sm+c+yLoMBKL4SHt", + "c2rzz2gPDv7eRuOz3rDsau7dT66He5Zo/rl5J+zK7sIcYq4jG/hGg2fFpsZex2dmlf3VbDwfb89U+1m5", + "motOMsM9pter+s20oNTA4Yee+mUBEQ8Jt5rho2YntEZqhJ2WFYTZ77Uob7VvBPqHg+Tlp89Ppk8Orv5i", + "BLb788Wzq5E+4OZZXHJaS+ORDT9hsDpas7hBnh4c/Dd7VPj5NWe8U+duXZNFiht/RzPiY0Fx7Cf3N/YJ", + "Rw+8EZzEHgxX08mL+5z9CTcsT3OCLYMsqf7S/8LPubjkvqU5xauioHLrt7FqCQX/EiKeFXSl0AKT7IJq", + "mHxCEz8WNDAgXPD15msLF3yS+qtwuS/h8mW81f30mhv8y5/xV3H6pYnTUyvuxotTp8rZdIO5fa+l0fB6", + "xXhXEM17wAwEuut1wq6E/QF077HFyS1FzJ/27uJ/733y/OD5/WHQriT5I2zJW6HJ93jt9YXu2XHbZ5cm", + "1LGMsqzH5Fb8g9LfiWy7g0KFWpUuRDiilywYNyj3T5f+Sya9xxDPYUvsVbB3+bvHgNv60NUtZcAX+27j", + "VxnyVYZIO/yz+xv+FOQFS4GcQVEKSSXLt+QXXid43dysy7JomF176/dkmrFGUpHBCnjiBFayENnWF/dp", + "ATwH65ruKSrzz+0Kndb9NeiWOsbf64eD+kgvtuTkuKfB2G5dSfvdFpt2LMaITdhFcadl2JVFA8bYLjY3", + "E1kJTSwVMjepr4Lnq+C5lfIyevPE9JeoNeEdOd0zeeoznWO1AKjuDz3G5vhTt+t/2Wfwv4qEryLh5iLh", + "B4hsRty1TkhEmO4mnt6+gMDIq6xb5x7DF3zzKqeSKBjrpjhCiM45cR9S4r6NtCitrI1GOYENU/huS2TB", + "7tZu+yrivoq4L+jWar+gaSsi17Z0zmFb0LK2b9S60pm4tBWColIRi+fS3FXaw9p3dSSGFsQDaBKcyM8u", + "oy/f4vvxLDNqnGYFGJWqlnWmsw9bbeJmDYTmwcMV4zgAigocxZaUpEHqgIJUcPs8WOeuzWH21tqEMSH7", + "ewUo0RxtHI6TaeuyxS1jpIDjrfWv/t3I1Q5fev3GV+vv+SVlOlkK6TKHkEL9KAwNNJ+7WhidX5u8zt4X", + "TFYNfgxiN+K/zuuaxtGP3aiT2FcXFOIbNWFlYZgWrmEdoPXhk1kKLInnlreJOjqczzHcfi2Unk+upp87", + "EUnhx0819T/XJ69bhatPV/8/AAD//75BkK9YsgAA", } // GetSwagger returns the Swagger specification corresponding to the generated code diff --git a/daemon/algod/api/server/v2/generated/private/types.go b/daemon/algod/api/server/v2/generated/private/types.go index 2a0c193e00..17485641d5 100644 --- a/daemon/algod/api/server/v2/generated/private/types.go +++ b/daemon/algod/api/server/v2/generated/private/types.go @@ -316,7 +316,13 @@ type DryrunTxnResult struct { AppCallMessages *[]string `json:"app-call-messages,omitempty"` AppCallTrace *[]DryrunState `json:"app-call-trace,omitempty"` - // Execution cost of app call transaction + // Budget added during execution of app call transaction. + BudgetAdded *uint64 `json:"budget-added,omitempty"` + + // Budget consumed during execution of app call transaction. + BudgetConsumed *uint64 `json:"budget-consumed,omitempty"` + + // Net cost of app execution. Field is DEPRECATED and is subject for removal. Instead, use `budget-added` and `budget-consumed. Cost *uint64 `json:"cost,omitempty"` // Disassembled program line by line. diff --git a/daemon/algod/api/server/v2/generated/routes.go b/daemon/algod/api/server/v2/generated/routes.go index 065a90fffa..fa62e543f5 100644 --- a/daemon/algod/api/server/v2/generated/routes.go +++ b/daemon/algod/api/server/v2/generated/routes.go @@ -788,204 +788,206 @@ func RegisterHandlers(router interface { // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the Swagger specification corresponding to the generated code diff --git a/daemon/algod/api/server/v2/generated/types.go b/daemon/algod/api/server/v2/generated/types.go index 9372cc5650..53983915d6 100644 --- a/daemon/algod/api/server/v2/generated/types.go +++ b/daemon/algod/api/server/v2/generated/types.go @@ -316,7 +316,13 @@ type DryrunTxnResult struct { AppCallMessages *[]string `json:"app-call-messages,omitempty"` AppCallTrace *[]DryrunState `json:"app-call-trace,omitempty"` - // Execution cost of app call transaction + // Budget added during execution of app call transaction. + BudgetAdded *uint64 `json:"budget-added,omitempty"` + + // Budget consumed during execution of app call transaction. + BudgetConsumed *uint64 `json:"budget-consumed,omitempty"` + + // Net cost of app execution. Field is DEPRECATED and is subject for removal. Instead, use `budget-added` and `budget-consumed. Cost *uint64 `json:"cost,omitempty"` // Disassembled program line by line. diff --git a/test/e2e-go/cli/goal/expect/goalDryrunRestTest.exp b/test/e2e-go/cli/goal/expect/goalDryrunRestTest.exp index 75d81faeba..26a2b24e11 100644 --- a/test/e2e-go/cli/goal/expect/goalDryrunRestTest.exp +++ b/test/e2e-go/cli/goal/expect/goalDryrunRestTest.exp @@ -9,7 +9,7 @@ proc TestGoalDryrun { DRREQ_FILE TEST_PRIMARY_NODE_DIR } { spawn goal clerk dryrun-remote -d $TEST_PRIMARY_NODE_DIR -D $DRREQ_FILE -v expect { timeout { ::AlgorandGoal::Abort "goal clerk dryrun-remote timeout" } - "cost:" {set COST 1; exp_continue} + "budget consumed:" {set COST 1; exp_continue} -re {(ApprovalProgram)} {set PROGRAM_TYPE $expect_out(1,string); exp_continue} "PASS" {set PASSED 1; close} }