From ab4af1fa7184d5a59e4ef3767dd56e3029c810c0 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Tue, 17 Dec 2024 13:25:04 -0500 Subject: [PATCH 01/11] test to reproduce the issue error: stack underflow in box_put. at:68. Error during resource population simulation in transaction 0: transaction SH6U2CA7VLLXW3Z3WNIAJ4ISEDGQW255ES62AVCRT6BNOEWFTTEA: logic eval error: stack underflow in box_put. Details: app=1003, pc=133, opcodes=pop; concat; box_put --- tests/abi.test.ts | 6 + tests/contracts/abi.algo.ts | 22 + .../ABITestNestedArrayInBox.approval.teal | 123 +++ .../ABITestNestedArrayInBox.arc32.json | 65 ++ .../ABITestNestedArrayInBox.arc4.json | 20 + .../ABITestNestedArrayInBox.arc56.json | 811 ++++++++++++++++++ .../ABITestNestedArrayInBox.clear.teal | 1 + 7 files changed, 1048 insertions(+) create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBox.arc4.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBox.clear.teal diff --git a/tests/abi.test.ts b/tests/abi.test.ts index 868a01790..703362018 100644 --- a/tests/abi.test.ts +++ b/tests/abi.test.ts @@ -927,4 +927,10 @@ describe('ABI', function () { expect(await runMethod(appClient, 'postBoolTupleOffset')).toEqual([true, 1n, 2n]); }); + + test('nestedArrayInBox', async () => { + const { appClient } = await compileAndCreate('nestedArrayInBox'); + + expect(await runMethod(appClient, 'nestedArrayInBox')).toEqual([true, 1n, 2n]); + }); }); diff --git a/tests/contracts/abi.algo.ts b/tests/contracts/abi.algo.ts index 49cd86e48..ba2079c89 100644 --- a/tests/contracts/abi.algo.ts +++ b/tests/contracts/abi.algo.ts @@ -1625,3 +1625,25 @@ class ABITestPostBoolTupleOffset extends Contract { return retVal; } } + +type T10 = { + bytes4Array: bytes<4>[]; + u64a: uint64; + u64b: uint64; + u64c: uint64; + boolValue: boolean; +}; + +class ABITestNestedArrayInBox extends Contract { + bMap = BoxMap(); + + nestedArrayInBox() { + this.bMap('bmap').value = { + bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], + u64a: 1, + u64b: 2, + u64c: 3, + boolValue: false, + }; + } +} diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal new file mode 100644 index 000000000..42750e9d6 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal @@ -0,0 +1,123 @@ +#pragma version 10 +intcblock 0 1 +bytecblock 0x626d6170 0x + +// This TEAL was generated by TEALScript v0.106.0 +// https://github.com/algorandfoundation/TEALScript + +// This contract is compliant with and/or implements the following ARCs: [ ARC4 ] + +// The following ten lines of TEAL handle initial program flow +// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed +// Here, action refers to the OnComplete in combination with whether the app is being created or called +// Every possible action for this contract is represented in the switch statement +// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" +txn ApplicationID +! +pushint 6 +* +txn OnCompletion ++ +switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED + +*NOT_IMPLEMENTED: + // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? + err + +// nestedArrayInBox()void +*abi_route_nestedArrayInBox: + // execute nestedArrayInBox()void + callsub nestedArrayInBox + intc 1 // 1 + return + +// nestedArrayInBox(): void +nestedArrayInBox: + proto 0 0 + + // tests/contracts/abi.algo.ts:1641 + // this.bMap('bmap').value = { + // bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], + // u64a: 1, + // u64b: 2, + // u64c: 3, + // boolValue: false, + // } + bytec 0 // "bmap" + dup + box_del + pop + bytec 1 // initial head + bytec 1 // initial tail + pushbytes 0x001a // initial head offset + pushbytes 0x00026162636465666768 + callsub *process_dynamic_tuple_element + pushbytes 0x0000000000000001 + callsub *process_static_tuple_element + pushbytes 0x0000000000000002 + callsub *process_static_tuple_element + pushbytes 0x0000000000000003 + callsub *process_static_tuple_element + pushbytes 0x00 + intc 0 // 0 + dup + setbit + callsub *process_static_tuple_element + concat + pop // pop head offset + concat // concat head and tail + box_put + retsub + +*abi_route_createApplication: + intc 1 // 1 + return + +*create_NoOp: + pushbytes 0xb8447b36 // method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create NoOp + err + +*call_NoOp: + pushbytes 0x999310df // method "nestedArrayInBox()void" + txna ApplicationArgs 0 + match *abi_route_nestedArrayInBox + + // this contract does not implement the given ABI method for call NoOp + err + +*process_static_tuple_element: + proto 4 3 + frame_dig -4 // tuple head + frame_dig -1 // element + concat + frame_dig -3 // tuple tail + frame_dig -2 // head offset + retsub + +*process_dynamic_tuple_element: + proto 4 3 + frame_dig -4 // tuple head + frame_dig -2 // head offset + concat + frame_bury -4 // tuple head + frame_dig -1 // element + dup + len + frame_dig -2 // head offset + btoi + + + itob + extract 6 2 + frame_bury -2 // head offset + frame_dig -3 // tuple tail + swap + concat + frame_bury -3 // tuple tail + frame_dig -4 // tuple head + frame_dig -3 // tuple tail + frame_dig -2 // head offset + retsub \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json new file mode 100644 index 000000000..0aa4a92f6 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json @@ -0,0 +1,65 @@ +{ + "hints": { + "nestedArrayInBox()void": { + "call_config": { + "no_op": "CALL" + } + }, + "createApplication()void": { + "call_config": { + "no_op": "CREATE" + } + } + }, + "bare_call_config": { + "no_op": "NEVER", + "opt_in": "NEVER", + "close_out": "NEVER", + "update_application": "NEVER", + "delete_application": "NEVER" + }, + "schema": { + "local": { + "declared": {}, + "reserved": {} + }, + "global": { + "declared": {}, + "reserved": {} + } + }, + "state": { + "global": { + "num_byte_slices": 0, + "num_uints": 0 + }, + "local": { + "num_byte_slices": 0, + "num_uints": 0 + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNmQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpdm9pZAoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBleGVjdXRlIG5lc3RlZEFycmF5SW5Cb3goKXZvaWQKCWNhbGxzdWIgbmVzdGVkQXJyYXlJbkJveAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpOiB2b2lkCm5lc3RlZEFycmF5SW5Cb3g6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY0MQoJLy8gdGhpcy5iTWFwKCdibWFwJykudmFsdWUgPSB7CgkvLyAgICAgICBieXRlczRBcnJheTogWydhYmNkJyBhcyBieXRlczw0PiwgJ2VmZ2gnIGFzIGJ5dGVzPDQ+XSwKCS8vICAgICAgIHU2NGE6IDEsCgkvLyAgICAgICB1NjRiOiAyLAoJLy8gICAgICAgdTY0YzogMywKCS8vICAgICAgIGJvb2xWYWx1ZTogZmFsc2UsCgkvLyAgICAgfQoJYnl0ZWMgMCAvLyAgImJtYXAiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAxIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMWEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwMjYxNjI2MzY0NjU2NjY3NjgKCWNhbGxzdWIgKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAxCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAyCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAzCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMAoJaW50YyAwIC8vIDAKCWR1cAoJc2V0Yml0CgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50Cgljb25jYXQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJYm94X3B1dAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDk5OTMxMGRmIC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "contract": { + "name": "ABITestNestedArrayInBox", + "desc": "", + "methods": [ + { + "name": "nestedArrayInBox", + "args": [], + "returns": { + "type": "void" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] + } +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc4.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc4.json new file mode 100644 index 000000000..1642cd527 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc4.json @@ -0,0 +1,20 @@ +{ + "name": "ABITestNestedArrayInBox", + "desc": "", + "methods": [ + { + "name": "nestedArrayInBox", + "args": [], + "returns": { + "type": "void" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json new file mode 100644 index 000000000..b9d561936 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json @@ -0,0 +1,811 @@ +{ + "name": "ABITestNestedArrayInBox", + "desc": "", + "methods": [ + { + "name": "nestedArrayInBox", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [ + "NoOp" + ], + "call": [] + } + } + ], + "arcs": [ + 4, + 56 + ], + "structs": { + "T10": [ + { + "name": "bytes4Array", + "type": "byte[4][]" + }, + { + "name": "u64a", + "type": "uint64" + }, + { + "name": "u64b", + "type": "uint64" + }, + { + "name": "u64c", + "type": "uint64" + }, + { + "name": "boolValue", + "type": "bool" + } + ] + }, + "state": { + "schema": { + "global": { + "bytes": 0, + "ints": 0 + }, + "local": { + "bytes": 0, + "ints": 0 + } + }, + "keys": { + "global": {}, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": { + "bMap": { + "keyType": "AVMBytes", + "valueType": "T10" + } + } + } + }, + "bareActions": { + "create": [], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "teal": 1, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 0 + ] + }, + { + "teal": 2, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 1, + 2, + 3, + 4 + ] + }, + { + "teal": 3, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + }, + { + "teal": 15, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 13, + 14 + ] + }, + { + "teal": 16, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 15 + ] + }, + { + "teal": 17, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 16, + 17 + ] + }, + { + "teal": 18, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 18 + ] + }, + { + "teal": 19, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 19, + 20 + ] + }, + { + "teal": 20, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 21 + ] + }, + { + "teal": 21, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ] + }, + { + "teal": 25, + "source": "tests/contracts/abi.algo.ts:1637", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 48 + ] + }, + { + "teal": 30, + "source": "tests/contracts/abi.algo.ts:1640", + "pc": [ + 49, + 50, + 51 + ] + }, + { + "teal": 31, + "source": "tests/contracts/abi.algo.ts:1640", + "pc": [ + 52 + ] + }, + { + "teal": 32, + "source": "tests/contracts/abi.algo.ts:1640", + "pc": [ + 53 + ] + }, + { + "teal": 36, + "source": "tests/contracts/abi.algo.ts:1640", + "pc": [ + 54, + 55, + 56 + ] + }, + { + "teal": 46, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 57 + ] + }, + { + "teal": 47, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 58 + ] + }, + { + "teal": 48, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 59 + ] + }, + { + "teal": 49, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 60 + ] + }, + { + "teal": 50, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 61 + ] + }, + { + "teal": 51, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 62 + ] + }, + { + "teal": 52, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 63, + 64, + 65, + 66 + ] + }, + { + "teal": 53, + "source": "tests/contracts/abi.algo.ts:1642", + "pc": [ + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78 + ] + }, + { + "teal": 54, + "source": "tests/contracts/abi.algo.ts:1642", + "pc": [ + 79, + 80, + 81 + ] + }, + { + "teal": 55, + "source": "tests/contracts/abi.algo.ts:1643", + "pc": [ + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91 + ] + }, + { + "teal": 56, + "source": "tests/contracts/abi.algo.ts:1643", + "pc": [ + 92, + 93, + 94 + ] + }, + { + "teal": 57, + "source": "tests/contracts/abi.algo.ts:1644", + "pc": [ + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104 + ] + }, + { + "teal": 58, + "source": "tests/contracts/abi.algo.ts:1644", + "pc": [ + 105, + 106, + 107 + ] + }, + { + "teal": 59, + "source": "tests/contracts/abi.algo.ts:1645", + "pc": [ + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117 + ] + }, + { + "teal": 60, + "source": "tests/contracts/abi.algo.ts:1645", + "pc": [ + 118, + 119, + 120 + ] + }, + { + "teal": 61, + "source": "tests/contracts/abi.algo.ts:1646", + "pc": [ + 121, + 122, + 123 + ] + }, + { + "teal": 62, + "source": "tests/contracts/abi.algo.ts:1646", + "pc": [ + 124 + ] + }, + { + "teal": 63, + "source": "tests/contracts/abi.algo.ts:1646", + "pc": [ + 125 + ] + }, + { + "teal": 64, + "source": "tests/contracts/abi.algo.ts:1646", + "pc": [ + 126 + ] + }, + { + "teal": 65, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 127, + 128, + 129 + ] + }, + { + "teal": 66, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 130 + ] + }, + { + "teal": 67, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 131 + ] + }, + { + "teal": 68, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 132 + ] + }, + { + "teal": 69, + "source": "tests/contracts/abi.algo.ts:1641", + "pc": [ + 133 + ] + }, + { + "teal": 70, + "source": "tests/contracts/abi.algo.ts:1640", + "pc": [ + 134 + ] + }, + { + "teal": 73, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 135 + ] + }, + { + "teal": 74, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 136 + ] + }, + { + "teal": 77, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 137, + 138, + 139, + 140, + 141, + 142 + ] + }, + { + "teal": 78, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 143, + 144, + 145 + ] + }, + { + "teal": 79, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 146, + 147, + 148, + 149 + ] + }, + { + "teal": 82, + "source": "tests/contracts/abi.algo.ts:1637", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 150 + ] + }, + { + "teal": 85, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 151, + 152, + 153, + 154, + 155, + 156 + ] + }, + { + "teal": 86, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 157, + 158, + 159 + ] + }, + { + "teal": 87, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 160, + 161, + 162, + 163 + ] + }, + { + "teal": 90, + "source": "tests/contracts/abi.algo.ts:1637", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 164 + ] + }, + { + "teal": 93, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 165, + 166, + 167 + ] + }, + { + "teal": 94, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 168, + 169 + ] + }, + { + "teal": 95, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 170, + 171 + ] + }, + { + "teal": 96, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 172 + ] + }, + { + "teal": 97, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 173, + 174 + ] + }, + { + "teal": 98, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 175, + 176 + ] + }, + { + "teal": 99, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 177 + ] + }, + { + "teal": 102, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 178, + 179, + 180 + ] + }, + { + "teal": 103, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 181, + 182 + ] + }, + { + "teal": 104, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 183, + 184 + ] + }, + { + "teal": 105, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 185 + ] + }, + { + "teal": 106, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 186, + 187 + ] + }, + { + "teal": 107, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 188, + 189 + ] + }, + { + "teal": 108, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 190 + ] + }, + { + "teal": 109, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 191 + ] + }, + { + "teal": 110, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 192, + 193 + ] + }, + { + "teal": 111, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 194 + ] + }, + { + "teal": 112, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 195 + ] + }, + { + "teal": 113, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 196 + ] + }, + { + "teal": 114, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 197, + 198, + 199 + ] + }, + { + "teal": 115, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 200, + 201 + ] + }, + { + "teal": 116, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 202, + 203 + ] + }, + { + "teal": 117, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 204 + ] + }, + { + "teal": 118, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 205 + ] + }, + { + "teal": 119, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 206, + 207 + ] + }, + { + "teal": 120, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 208, + 209 + ] + }, + { + "teal": 121, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 210, + 211 + ] + }, + { + "teal": 122, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 212, + 213 + ] + }, + { + "teal": 123, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 214 + ] + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNmQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpdm9pZAoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBleGVjdXRlIG5lc3RlZEFycmF5SW5Cb3goKXZvaWQKCWNhbGxzdWIgbmVzdGVkQXJyYXlJbkJveAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpOiB2b2lkCm5lc3RlZEFycmF5SW5Cb3g6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY0MQoJLy8gdGhpcy5iTWFwKCdibWFwJykudmFsdWUgPSB7CgkvLyAgICAgICBieXRlczRBcnJheTogWydhYmNkJyBhcyBieXRlczw0PiwgJ2VmZ2gnIGFzIGJ5dGVzPDQ+XSwKCS8vICAgICAgIHU2NGE6IDEsCgkvLyAgICAgICB1NjRiOiAyLAoJLy8gICAgICAgdTY0YzogMywKCS8vICAgICAgIGJvb2xWYWx1ZTogZmFsc2UsCgkvLyAgICAgfQoJYnl0ZWMgMCAvLyAgImJtYXAiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAxIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMWEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwMjYxNjI2MzY0NjU2NjY3NjgKCWNhbGxzdWIgKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAxCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAyCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAzCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMAoJaW50YyAwIC8vIDAKCWR1cAoJc2V0Yml0CgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50Cgljb25jYXQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJYm94X3B1dAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDk5OTMxMGRmIC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "byteCode": { + "approval": "CiACAAEmAgRibWFwADEYFIEGCzEZCI0MAGcAAAAAAAAAAAAAAFkAAAAAAAAAAAAAAIgAAiNDigAAKEm8SCkpgAIAGoAKAAJhYmNkZWZnaIgAYIAIAAAAAAAAAAGIAEaACAAAAAAAAAACiAA5gAgAAAAAAAAAA4gALIABACJJVIgAI1BIUL+JI0OABLhEezY2GgCOAf/xAIAEmZMQ3zYaAI4B/40AigQDi/yL/1CL/Yv+iYoEA4v8i/5QjPyL/0kVi/4XCBZXBgKM/ov9TFCM/Yv8i/2L/ok=", + "clear": "Cg==" + }, + "compilerInfo": { + "compiler": "algod", + "compilerVersion": { + "major": 3, + "minor": 27, + "patch": 0, + "commitHash": "f54f0997" + } + } +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.clear.teal b/tests/contracts/artifacts/ABITestNestedArrayInBox.clear.teal new file mode 100644 index 000000000..e9f1d65b3 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.clear.teal @@ -0,0 +1 @@ +#pragma version 10 \ No newline at end of file From 2ea600932860b587666fb65680ecc560337fdc7a Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Tue, 17 Dec 2024 13:36:17 -0500 Subject: [PATCH 02/11] add related repro test Expected: [ 1n, 2n, 3n, false, [ "abcd", "efgh" ] ] Received: undefined --- tests/abi.test.ts | 8 +- tests/contracts/abi.algo.ts | 22 + .../ABITestNestedArrayInBoxLast.approval.teal | 122 +++ .../ABITestNestedArrayInBoxLast.arc32.json | 65 ++ .../ABITestNestedArrayInBoxLast.arc4.json | 20 + .../ABITestNestedArrayInBoxLast.arc56.json | 804 ++++++++++++++++++ .../ABITestNestedArrayInBoxLast.clear.teal | 1 + 7 files changed, 1041 insertions(+), 1 deletion(-) create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc4.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBoxLast.clear.teal diff --git a/tests/abi.test.ts b/tests/abi.test.ts index 703362018..863a91743 100644 --- a/tests/abi.test.ts +++ b/tests/abi.test.ts @@ -931,6 +931,12 @@ describe('ABI', function () { test('nestedArrayInBox', async () => { const { appClient } = await compileAndCreate('nestedArrayInBox'); - expect(await runMethod(appClient, 'nestedArrayInBox')).toEqual([true, 1n, 2n]); + expect(await runMethod(appClient, 'nestedArrayInBox')).toEqual([['abcd', 'efgh'], 1n, 2n, 3n, false]); + }); + + test('nestedArrayInBoxLast', async () => { + const { appClient } = await compileAndCreate('nestedArrayInBoxLast'); + + expect(await runMethod(appClient, 'nestedArrayInBoxLast')).toEqual([1n, 2n, 3n, false, ['abcd', 'efgh']]); }); }); diff --git a/tests/contracts/abi.algo.ts b/tests/contracts/abi.algo.ts index ba2079c89..5cf18c568 100644 --- a/tests/contracts/abi.algo.ts +++ b/tests/contracts/abi.algo.ts @@ -1647,3 +1647,25 @@ class ABITestNestedArrayInBox extends Contract { }; } } + +type T11 = { + u64a: uint64; + u64b: uint64; + u64c: uint64; + boolValue: boolean; + bytes4Array: bytes<4>[]; +}; + +class ABITestNestedArrayInBoxLast extends Contract { + bMap = BoxMap(); + + nestedArrayInBoxLast() { + this.bMap('bmap').value = { + bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], + u64a: 1, + u64b: 2, + u64c: 3, + boolValue: false, + }; + } +} diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal new file mode 100644 index 000000000..03f425db2 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal @@ -0,0 +1,122 @@ +#pragma version 10 +intcblock 0 1 +bytecblock 0x626d6170 0x + +// This TEAL was generated by TEALScript v0.106.0 +// https://github.com/algorandfoundation/TEALScript + +// This contract is compliant with and/or implements the following ARCs: [ ARC4 ] + +// The following ten lines of TEAL handle initial program flow +// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed +// Here, action refers to the OnComplete in combination with whether the app is being created or called +// Every possible action for this contract is represented in the switch statement +// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" +txn ApplicationID +! +pushint 6 +* +txn OnCompletion ++ +switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED + +*NOT_IMPLEMENTED: + // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? + err + +// nestedArrayInBoxLast()void +*abi_route_nestedArrayInBoxLast: + // execute nestedArrayInBoxLast()void + callsub nestedArrayInBoxLast + intc 1 // 1 + return + +// nestedArrayInBoxLast(): void +nestedArrayInBoxLast: + proto 0 0 + + // tests/contracts/abi.algo.ts:1663 + // this.bMap('bmap').value = { + // bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], + // u64a: 1, + // u64b: 2, + // u64c: 3, + // boolValue: false, + // } + bytec 0 // "bmap" + dup + box_del + pop + bytec 1 // initial head + bytec 1 // initial tail + pushbytes 0x001a // initial head offset + pushbytes 0x0000000000000001 + callsub *process_static_tuple_element + pushbytes 0x0000000000000002 + callsub *process_static_tuple_element + pushbytes 0x0000000000000003 + callsub *process_static_tuple_element + pushbytes 0x00 + intc 0 // 0 + dup + setbit + callsub *process_static_tuple_element + pushbytes 0x00026162636465666768 + callsub *process_dynamic_tuple_element + pop // pop head offset + concat // concat head and tail + box_put + retsub + +*abi_route_createApplication: + intc 1 // 1 + return + +*create_NoOp: + pushbytes 0xb8447b36 // method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create NoOp + err + +*call_NoOp: + pushbytes 0xfac03883 // method "nestedArrayInBoxLast()void" + txna ApplicationArgs 0 + match *abi_route_nestedArrayInBoxLast + + // this contract does not implement the given ABI method for call NoOp + err + +*process_static_tuple_element: + proto 4 3 + frame_dig -4 // tuple head + frame_dig -1 // element + concat + frame_dig -3 // tuple tail + frame_dig -2 // head offset + retsub + +*process_dynamic_tuple_element: + proto 4 3 + frame_dig -4 // tuple head + frame_dig -2 // head offset + concat + frame_bury -4 // tuple head + frame_dig -1 // element + dup + len + frame_dig -2 // head offset + btoi + + + itob + extract 6 2 + frame_bury -2 // head offset + frame_dig -3 // tuple tail + swap + concat + frame_bury -3 // tuple tail + frame_dig -4 // tuple head + frame_dig -3 // tuple tail + frame_dig -2 // head offset + retsub \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json new file mode 100644 index 000000000..c0377c427 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json @@ -0,0 +1,65 @@ +{ + "hints": { + "nestedArrayInBoxLast()void": { + "call_config": { + "no_op": "CALL" + } + }, + "createApplication()void": { + "call_config": { + "no_op": "CREATE" + } + } + }, + "bare_call_config": { + "no_op": "NEVER", + "opt_in": "NEVER", + "close_out": "NEVER", + "update_application": "NEVER", + "delete_application": "NEVER" + }, + "schema": { + "local": { + "declared": {}, + "reserved": {} + }, + "global": { + "declared": {}, + "reserved": {} + } + }, + "state": { + "global": { + "num_byte_slices": 0, + "num_uints": 0 + }, + "local": { + "num_byte_slices": 0, + "num_uints": 0 + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNmQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKXZvaWQKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdDoKCS8vIGV4ZWN1dGUgbmVzdGVkQXJyYXlJbkJveExhc3QoKXZvaWQKCWNhbGxzdWIgbmVzdGVkQXJyYXlJbkJveExhc3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIG5lc3RlZEFycmF5SW5Cb3hMYXN0KCk6IHZvaWQKbmVzdGVkQXJyYXlJbkJveExhc3Q6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY2MwoJLy8gdGhpcy5iTWFwKCdibWFwJykudmFsdWUgPSB7CgkvLyAgICAgICBieXRlczRBcnJheTogWydhYmNkJyBhcyBieXRlczw0PiwgJ2VmZ2gnIGFzIGJ5dGVzPDQ+XSwKCS8vICAgICAgIHU2NGE6IDEsCgkvLyAgICAgICB1NjRiOiAyLAoJLy8gICAgICAgdTY0YzogMywKCS8vICAgICAgIGJvb2xWYWx1ZTogZmFsc2UsCgkvLyAgICAgfQoJYnl0ZWMgMCAvLyAgImJtYXAiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAxIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMWEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMjYxNjI2MzY0NjU2NjY3NjgKCWNhbGxzdWIgKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMSAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHhmYWMwMzg4MyAvLyBtZXRob2QgIm5lc3RlZEFycmF5SW5Cb3hMYXN0KCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "contract": { + "name": "ABITestNestedArrayInBoxLast", + "desc": "", + "methods": [ + { + "name": "nestedArrayInBoxLast", + "args": [], + "returns": { + "type": "void" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] + } +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc4.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc4.json new file mode 100644 index 000000000..091b54aed --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc4.json @@ -0,0 +1,20 @@ +{ + "name": "ABITestNestedArrayInBoxLast", + "desc": "", + "methods": [ + { + "name": "nestedArrayInBoxLast", + "args": [], + "returns": { + "type": "void" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json new file mode 100644 index 000000000..1be12ab77 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json @@ -0,0 +1,804 @@ +{ + "name": "ABITestNestedArrayInBoxLast", + "desc": "", + "methods": [ + { + "name": "nestedArrayInBoxLast", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [ + "NoOp" + ], + "call": [] + } + } + ], + "arcs": [ + 4, + 56 + ], + "structs": { + "T11": [ + { + "name": "u64a", + "type": "uint64" + }, + { + "name": "u64b", + "type": "uint64" + }, + { + "name": "u64c", + "type": "uint64" + }, + { + "name": "boolValue", + "type": "bool" + }, + { + "name": "bytes4Array", + "type": "byte[4][]" + } + ] + }, + "state": { + "schema": { + "global": { + "bytes": 0, + "ints": 0 + }, + "local": { + "bytes": 0, + "ints": 0 + } + }, + "keys": { + "global": {}, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": { + "bMap": { + "keyType": "AVMBytes", + "valueType": "T11" + } + } + } + }, + "bareActions": { + "create": [], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "teal": 1, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 0 + ] + }, + { + "teal": 2, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 1, + 2, + 3, + 4 + ] + }, + { + "teal": 3, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + }, + { + "teal": 15, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 13, + 14 + ] + }, + { + "teal": 16, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 15 + ] + }, + { + "teal": 17, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 16, + 17 + ] + }, + { + "teal": 18, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 18 + ] + }, + { + "teal": 19, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 19, + 20 + ] + }, + { + "teal": 20, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 21 + ] + }, + { + "teal": 21, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ] + }, + { + "teal": 25, + "source": "tests/contracts/abi.algo.ts:1659", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 48 + ] + }, + { + "teal": 30, + "source": "tests/contracts/abi.algo.ts:1662", + "pc": [ + 49, + 50, + 51 + ] + }, + { + "teal": 31, + "source": "tests/contracts/abi.algo.ts:1662", + "pc": [ + 52 + ] + }, + { + "teal": 32, + "source": "tests/contracts/abi.algo.ts:1662", + "pc": [ + 53 + ] + }, + { + "teal": 36, + "source": "tests/contracts/abi.algo.ts:1662", + "pc": [ + 54, + 55, + 56 + ] + }, + { + "teal": 46, + "source": "tests/contracts/abi.algo.ts:1663", + "pc": [ + 57 + ] + }, + { + "teal": 47, + "source": "tests/contracts/abi.algo.ts:1663", + "pc": [ + 58 + ] + }, + { + "teal": 48, + "source": "tests/contracts/abi.algo.ts:1663", + "pc": [ + 59 + ] + }, + { + "teal": 49, + "source": "tests/contracts/abi.algo.ts:1663", + "pc": [ + 60 + ] + }, + { + "teal": 50, + "source": "tests/contracts/abi.algo.ts:1663", + "pc": [ + 61 + ] + }, + { + "teal": 51, + "source": "tests/contracts/abi.algo.ts:1663", + "pc": [ + 62 + ] + }, + { + "teal": 52, + "source": "tests/contracts/abi.algo.ts:1663", + "pc": [ + 63, + 64, + 65, + 66 + ] + }, + { + "teal": 53, + "source": "tests/contracts/abi.algo.ts:1665", + "pc": [ + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76 + ] + }, + { + "teal": 54, + "source": "tests/contracts/abi.algo.ts:1665", + "pc": [ + 77, + 78, + 79 + ] + }, + { + "teal": 55, + "source": "tests/contracts/abi.algo.ts:1666", + "pc": [ + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89 + ] + }, + { + "teal": 56, + "source": "tests/contracts/abi.algo.ts:1666", + "pc": [ + 90, + 91, + 92 + ] + }, + { + "teal": 57, + "source": "tests/contracts/abi.algo.ts:1667", + "pc": [ + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102 + ] + }, + { + "teal": 58, + "source": "tests/contracts/abi.algo.ts:1667", + "pc": [ + 103, + 104, + 105 + ] + }, + { + "teal": 59, + "source": "tests/contracts/abi.algo.ts:1668", + "pc": [ + 106, + 107, + 108 + ] + }, + { + "teal": 60, + "source": "tests/contracts/abi.algo.ts:1668", + "pc": [ + 109 + ] + }, + { + "teal": 61, + "source": "tests/contracts/abi.algo.ts:1668", + "pc": [ + 110 + ] + }, + { + "teal": 62, + "source": "tests/contracts/abi.algo.ts:1668", + "pc": [ + 111 + ] + }, + { + "teal": 63, + "source": "tests/contracts/abi.algo.ts:1664", + "pc": [ + 112, + 113, + 114 + ] + }, + { + "teal": 64, + "source": "tests/contracts/abi.algo.ts:1664", + "pc": [ + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126 + ] + }, + { + "teal": 65, + "source": "tests/contracts/abi.algo.ts:1664", + "pc": [ + 127, + 128, + 129 + ] + }, + { + "teal": 66, + "source": "tests/contracts/abi.algo.ts:1663", + "pc": [ + 130 + ] + }, + { + "teal": 67, + "source": "tests/contracts/abi.algo.ts:1663", + "pc": [ + 131 + ] + }, + { + "teal": 68, + "source": "tests/contracts/abi.algo.ts:1663", + "pc": [ + 132 + ] + }, + { + "teal": 69, + "source": "tests/contracts/abi.algo.ts:1662", + "pc": [ + 133 + ] + }, + { + "teal": 72, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 134 + ] + }, + { + "teal": 73, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 135 + ] + }, + { + "teal": 76, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 136, + 137, + 138, + 139, + 140, + 141 + ] + }, + { + "teal": 77, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 142, + 143, + 144 + ] + }, + { + "teal": 78, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 145, + 146, + 147, + 148 + ] + }, + { + "teal": 81, + "source": "tests/contracts/abi.algo.ts:1659", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 149 + ] + }, + { + "teal": 84, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 150, + 151, + 152, + 153, + 154, + 155 + ] + }, + { + "teal": 85, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 156, + 157, + 158 + ] + }, + { + "teal": 86, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 159, + 160, + 161, + 162 + ] + }, + { + "teal": 89, + "source": "tests/contracts/abi.algo.ts:1659", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 163 + ] + }, + { + "teal": 92, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 164, + 165, + 166 + ] + }, + { + "teal": 93, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 167, + 168 + ] + }, + { + "teal": 94, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 169, + 170 + ] + }, + { + "teal": 95, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 171 + ] + }, + { + "teal": 96, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 172, + 173 + ] + }, + { + "teal": 97, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 174, + 175 + ] + }, + { + "teal": 98, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 176 + ] + }, + { + "teal": 101, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 177, + 178, + 179 + ] + }, + { + "teal": 102, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 180, + 181 + ] + }, + { + "teal": 103, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 182, + 183 + ] + }, + { + "teal": 104, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 184 + ] + }, + { + "teal": 105, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 185, + 186 + ] + }, + { + "teal": 106, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 187, + 188 + ] + }, + { + "teal": 107, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 189 + ] + }, + { + "teal": 108, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 190 + ] + }, + { + "teal": 109, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 191, + 192 + ] + }, + { + "teal": 110, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 193 + ] + }, + { + "teal": 111, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 194 + ] + }, + { + "teal": 112, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 195 + ] + }, + { + "teal": 113, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 196, + 197, + 198 + ] + }, + { + "teal": 114, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 199, + 200 + ] + }, + { + "teal": 115, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 201, + 202 + ] + }, + { + "teal": 116, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 203 + ] + }, + { + "teal": 117, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 204 + ] + }, + { + "teal": 118, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 205, + 206 + ] + }, + { + "teal": 119, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 207, + 208 + ] + }, + { + "teal": 120, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 209, + 210 + ] + }, + { + "teal": 121, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 211, + 212 + ] + }, + { + "teal": 122, + "source": "tests/contracts/abi.algo.ts:1659", + "pc": [ + 213 + ] + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNmQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKXZvaWQKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdDoKCS8vIGV4ZWN1dGUgbmVzdGVkQXJyYXlJbkJveExhc3QoKXZvaWQKCWNhbGxzdWIgbmVzdGVkQXJyYXlJbkJveExhc3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIG5lc3RlZEFycmF5SW5Cb3hMYXN0KCk6IHZvaWQKbmVzdGVkQXJyYXlJbkJveExhc3Q6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY2MwoJLy8gdGhpcy5iTWFwKCdibWFwJykudmFsdWUgPSB7CgkvLyAgICAgICBieXRlczRBcnJheTogWydhYmNkJyBhcyBieXRlczw0PiwgJ2VmZ2gnIGFzIGJ5dGVzPDQ+XSwKCS8vICAgICAgIHU2NGE6IDEsCgkvLyAgICAgICB1NjRiOiAyLAoJLy8gICAgICAgdTY0YzogMywKCS8vICAgICAgIGJvb2xWYWx1ZTogZmFsc2UsCgkvLyAgICAgfQoJYnl0ZWMgMCAvLyAgImJtYXAiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAxIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMWEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMjYxNjI2MzY0NjU2NjY3NjgKCWNhbGxzdWIgKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMSAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHhmYWMwMzg4MyAvLyBtZXRob2QgIm5lc3RlZEFycmF5SW5Cb3hMYXN0KCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "byteCode": { + "approval": "CiACAAEmAgRibWFwADEYFIEGCzEZCI0MAGYAAAAAAAAAAAAAAFgAAAAAAAAAAAAAAIgAAiNDigAAKEm8SCkpgAIAGoAIAAAAAAAAAAGIAFSACAAAAAAAAAACiABHgAgAAAAAAAAAA4gAOoABACJJVIgAMYAKAAJhYmNkZWZnaIgAL0hQv4kjQ4AEuER7NjYaAI4B//EAgAT6wDiDNhoAjgH/jgCKBAOL/Iv/UIv9i/6JigQDi/yL/lCM/Iv/SRWL/hcIFlcGAoz+i/1MUIz9i/yL/Yv+iQ==", + "clear": "Cg==" + }, + "compilerInfo": { + "compiler": "algod", + "compilerVersion": { + "major": 3, + "minor": 27, + "patch": 0, + "commitHash": "f54f0997" + } + } +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.clear.teal b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.clear.teal new file mode 100644 index 000000000..e9f1d65b3 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.clear.teal @@ -0,0 +1 @@ +#pragma version 10 \ No newline at end of file From d1aeadc050e7e556ff355844e50e04fdfa2c3dc0 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Tue, 17 Dec 2024 13:43:29 -0500 Subject: [PATCH 03/11] return values --- tests/contracts/abi.algo.ts | 12 +- .../ABITestNestedArrayInBox.approval.teal | 29 +- .../ABITestNestedArrayInBox.arc32.json | 6 +- .../ABITestNestedArrayInBox.arc4.json | 2 +- .../ABITestNestedArrayInBox.arc56.json | 489 ++++++++------- .../ABITestNestedArrayInBoxLast.approval.teal | 31 +- .../ABITestNestedArrayInBoxLast.arc32.json | 6 +- .../ABITestNestedArrayInBoxLast.arc4.json | 2 +- .../ABITestNestedArrayInBoxLast.arc56.json | 591 ++++++++++-------- 9 files changed, 648 insertions(+), 520 deletions(-) diff --git a/tests/contracts/abi.algo.ts b/tests/contracts/abi.algo.ts index 5cf18c568..74984e1a0 100644 --- a/tests/contracts/abi.algo.ts +++ b/tests/contracts/abi.algo.ts @@ -1637,14 +1637,16 @@ type T10 = { class ABITestNestedArrayInBox extends Contract { bMap = BoxMap(); - nestedArrayInBox() { - this.bMap('bmap').value = { + nestedArrayInBox(): T10 { + this.bMap('bMap').value = { bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], u64a: 1, u64b: 2, u64c: 3, boolValue: false, }; + + return this.bMap('bMap').value; } } @@ -1659,13 +1661,15 @@ type T11 = { class ABITestNestedArrayInBoxLast extends Contract { bMap = BoxMap(); - nestedArrayInBoxLast() { - this.bMap('bmap').value = { + nestedArrayInBoxLast(): T11 { + this.bMap('bMap').value = { bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], u64a: 1, u64b: 2, u64c: 3, boolValue: false, }; + + return this.bMap('bMap').value; } } diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal index 42750e9d6..e6f1e30c1 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal @@ -1,6 +1,6 @@ #pragma version 10 intcblock 0 1 -bytecblock 0x626d6170 0x +bytecblock 0x624d6170 0x // This TEAL was generated by TEALScript v0.106.0 // https://github.com/algorandfoundation/TEALScript @@ -24,26 +24,31 @@ switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEM // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? err -// nestedArrayInBox()void +// nestedArrayInBox()(byte[4][],uint64,uint64,uint64,bool) *abi_route_nestedArrayInBox: - // execute nestedArrayInBox()void + // The ABI return prefix + pushbytes 0x151f7c75 + + // execute nestedArrayInBox()(byte[4][],uint64,uint64,uint64,bool) callsub nestedArrayInBox + concat + log intc 1 // 1 return -// nestedArrayInBox(): void +// nestedArrayInBox(): T10 nestedArrayInBox: - proto 0 0 + proto 0 1 // tests/contracts/abi.algo.ts:1641 - // this.bMap('bmap').value = { + // this.bMap('bMap').value = { // bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], // u64a: 1, // u64b: 2, // u64c: 3, // boolValue: false, // } - bytec 0 // "bmap" + bytec 0 // "bMap" dup box_del pop @@ -67,6 +72,14 @@ nestedArrayInBox: pop // pop head offset concat // concat head and tail box_put + + // tests/contracts/abi.algo.ts:1649 + // return this.bMap('bMap').value; + bytec 0 // "bMap" + box_get + + // box value does not exist: this.bMap('bMap').value + assert retsub *abi_route_createApplication: @@ -82,7 +95,7 @@ nestedArrayInBox: err *call_NoOp: - pushbytes 0x999310df // method "nestedArrayInBox()void" + pushbytes 0xa07ca0c8 // method "nestedArrayInBox()(byte[4][],uint64,uint64,uint64,bool)" txna ApplicationArgs 0 match *abi_route_nestedArrayInBox diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json index 0aa4a92f6..4c3331d4f 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json @@ -1,6 +1,6 @@ { "hints": { - "nestedArrayInBox()void": { + "nestedArrayInBox()(byte[4][],uint64,uint64,uint64,bool)": { "call_config": { "no_op": "CALL" } @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNmQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpdm9pZAoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBleGVjdXRlIG5lc3RlZEFycmF5SW5Cb3goKXZvaWQKCWNhbGxzdWIgbmVzdGVkQXJyYXlJbkJveAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpOiB2b2lkCm5lc3RlZEFycmF5SW5Cb3g6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY0MQoJLy8gdGhpcy5iTWFwKCdibWFwJykudmFsdWUgPSB7CgkvLyAgICAgICBieXRlczRBcnJheTogWydhYmNkJyBhcyBieXRlczw0PiwgJ2VmZ2gnIGFzIGJ5dGVzPDQ+XSwKCS8vICAgICAgIHU2NGE6IDEsCgkvLyAgICAgICB1NjRiOiAyLAoJLy8gICAgICAgdTY0YzogMywKCS8vICAgICAgIGJvb2xWYWx1ZTogZmFsc2UsCgkvLyAgICAgfQoJYnl0ZWMgMCAvLyAgImJtYXAiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAxIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMWEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwMjYxNjI2MzY0NjU2NjY3NjgKCWNhbGxzdWIgKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAxCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAyCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAzCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMAoJaW50YyAwIC8vIDAKCWR1cAoJc2V0Yml0CgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50Cgljb25jYXQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJYm94X3B1dAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDk5OTMxMGRmIC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJY29uY2F0Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY0OQoJLy8gcmV0dXJuIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlOwoJYnl0ZWMgMCAvLyAgImJNYXAiCglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZQoJYXNzZXJ0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YTA3Y2EwYzggLy8gbWV0aG9kICJuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { @@ -50,7 +50,7 @@ "name": "nestedArrayInBox", "args": [], "returns": { - "type": "void" + "type": "(byte[4][],uint64,uint64,uint64,bool)" } }, { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc4.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc4.json index 1642cd527..33d1c3b33 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc4.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc4.json @@ -6,7 +6,7 @@ "name": "nestedArrayInBox", "args": [], "returns": { - "type": "void" + "type": "(byte[4][],uint64,uint64,uint64,bool)" } }, { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json index b9d561936..6b6e5162e 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json @@ -6,7 +6,8 @@ "name": "nestedArrayInBox", "args": [], "returns": { - "type": "void" + "type": "(byte[4][],uint64,uint64,uint64,bool)", + "struct": "T10" }, "actions": { "create": [], @@ -213,574 +214,622 @@ "pc": [ 49, 50, - 51 + 51, + 52, + 53, + 54 ] }, { - "teal": 31, + "teal": 33, "source": "tests/contracts/abi.algo.ts:1640", "pc": [ - 52 + 55, + 56, + 57 ] }, { - "teal": 32, + "teal": 34, "source": "tests/contracts/abi.algo.ts:1640", "pc": [ - 53 + 58 + ] + }, + { + "teal": 35, + "source": "tests/contracts/abi.algo.ts:1640", + "pc": [ + 59 ] }, { "teal": 36, "source": "tests/contracts/abi.algo.ts:1640", "pc": [ - 54, - 55, - 56 + 60 ] }, { - "teal": 46, - "source": "tests/contracts/abi.algo.ts:1641", + "teal": 37, + "source": "tests/contracts/abi.algo.ts:1640", "pc": [ - 57 + 61 + ] + }, + { + "teal": 41, + "source": "tests/contracts/abi.algo.ts:1640", + "pc": [ + 62, + 63, + 64 ] }, { - "teal": 47, + "teal": 51, "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 58 + 65 ] }, { - "teal": 48, + "teal": 52, "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 59 + 66 ] }, { - "teal": 49, + "teal": 53, "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 60 + 67 ] }, { - "teal": 50, + "teal": 54, "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 61 + 68 ] }, { - "teal": 51, + "teal": 55, "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 62 + 69 ] }, { - "teal": 52, + "teal": 56, "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 63, - 64, - 65, - 66 + 70 ] }, { - "teal": 53, - "source": "tests/contracts/abi.algo.ts:1642", + "teal": 57, + "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 67, - 68, - 69, - 70, 71, 72, 73, - 74, - 75, - 76, - 77, - 78 + 74 ] }, { - "teal": 54, + "teal": 58, "source": "tests/contracts/abi.algo.ts:1642", "pc": [ + 75, + 76, + 77, + 78, 79, 80, - 81 - ] - }, - { - "teal": 55, - "source": "tests/contracts/abi.algo.ts:1643", - "pc": [ + 81, 82, 83, 84, 85, - 86, + 86 + ] + }, + { + "teal": 59, + "source": "tests/contracts/abi.algo.ts:1642", + "pc": [ 87, 88, - 89, - 90, - 91 + 89 ] }, { - "teal": 56, + "teal": 60, "source": "tests/contracts/abi.algo.ts:1643", "pc": [ + 90, + 91, 92, 93, - 94 - ] - }, - { - "teal": 57, - "source": "tests/contracts/abi.algo.ts:1644", - "pc": [ + 94, 95, 96, 97, 98, - 99, + 99 + ] + }, + { + "teal": 61, + "source": "tests/contracts/abi.algo.ts:1643", + "pc": [ 100, 101, - 102, - 103, - 104 + 102 ] }, { - "teal": 58, + "teal": 62, "source": "tests/contracts/abi.algo.ts:1644", "pc": [ + 103, + 104, 105, 106, - 107 - ] - }, - { - "teal": 59, - "source": "tests/contracts/abi.algo.ts:1645", - "pc": [ + 107, 108, 109, 110, 111, - 112, + 112 + ] + }, + { + "teal": 63, + "source": "tests/contracts/abi.algo.ts:1644", + "pc": [ 113, 114, - 115, - 116, - 117 + 115 ] }, { - "teal": 60, + "teal": 64, "source": "tests/contracts/abi.algo.ts:1645", "pc": [ + 116, + 117, 118, 119, - 120 + 120, + 121, + 122, + 123, + 124, + 125 ] }, { - "teal": 61, - "source": "tests/contracts/abi.algo.ts:1646", + "teal": 65, + "source": "tests/contracts/abi.algo.ts:1645", "pc": [ - 121, - 122, - 123 + 126, + 127, + 128 ] }, { - "teal": 62, + "teal": 66, "source": "tests/contracts/abi.algo.ts:1646", "pc": [ - 124 + 129, + 130, + 131 ] }, { - "teal": 63, + "teal": 67, "source": "tests/contracts/abi.algo.ts:1646", "pc": [ - 125 + 132 ] }, { - "teal": 64, + "teal": 68, "source": "tests/contracts/abi.algo.ts:1646", "pc": [ - 126 + 133 ] }, { - "teal": 65, - "source": "tests/contracts/abi.algo.ts:1641", + "teal": 69, + "source": "tests/contracts/abi.algo.ts:1646", "pc": [ - 127, - 128, - 129 + 134 ] }, { - "teal": 66, + "teal": 70, "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 130 + 135, + 136, + 137 ] }, { - "teal": 67, + "teal": 71, "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 131 + 138 ] }, { - "teal": 68, + "teal": 72, "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 132 + 139 ] }, { - "teal": 69, + "teal": 73, "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 133 + 140 ] }, { - "teal": 70, - "source": "tests/contracts/abi.algo.ts:1640", + "teal": 74, + "source": "tests/contracts/abi.algo.ts:1641", "pc": [ - 134 + 141 ] }, { - "teal": 73, - "source": "tests/contracts/abi.algo.ts:1637", + "teal": 78, + "source": "tests/contracts/abi.algo.ts:1649", "pc": [ - 135 + 142 ] }, { - "teal": 74, - "source": "tests/contracts/abi.algo.ts:1637", + "teal": 79, + "source": "tests/contracts/abi.algo.ts:1649", "pc": [ - 136 + 143 ] }, { - "teal": 77, - "source": "tests/contracts/abi.algo.ts:1637", + "teal": 82, + "source": "tests/contracts/abi.algo.ts:1649", + "errorMessage": "box value does not exist: this.bMap('bMap').value", "pc": [ - 137, - 138, - 139, - 140, - 141, - 142 + 144 ] }, { - "teal": 78, - "source": "tests/contracts/abi.algo.ts:1637", + "teal": 83, + "source": "tests/contracts/abi.algo.ts:1640", "pc": [ - 143, - 144, 145 ] }, { - "teal": 79, + "teal": 86, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 146, - 147, - 148, - 149 + 146 ] }, { - "teal": 82, + "teal": 87, "source": "tests/contracts/abi.algo.ts:1637", - "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ - 150 + 147 ] }, { - "teal": 85, + "teal": 90, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 148, + 149, + 150, 151, 152, - 153, + 153 + ] + }, + { + "teal": 91, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ 154, 155, 156 ] }, { - "teal": 86, + "teal": 92, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ 157, 158, - 159 + 159, + 160 ] }, { - "teal": 87, + "teal": 95, + "source": "tests/contracts/abi.algo.ts:1637", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 161 + ] + }, + { + "teal": 98, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 160, - 161, 162, - 163 + 163, + 164, + 165, + 166, + 167 ] }, { - "teal": 90, + "teal": 99, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 168, + 169, + 170 + ] + }, + { + "teal": 100, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 171, + 172, + 173, + 174 + ] + }, + { + "teal": 103, "source": "tests/contracts/abi.algo.ts:1637", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 164 + 175 ] }, { - "teal": 93, + "teal": 106, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 165, - 166, - 167 + 176, + 177, + 178 ] }, { - "teal": 94, + "teal": 107, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 168, - 169 + 179, + 180 ] }, { - "teal": 95, + "teal": 108, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 170, - 171 + 181, + 182 ] }, { - "teal": 96, + "teal": 109, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 172 + 183 ] }, { - "teal": 97, + "teal": 110, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 173, - 174 + 184, + 185 ] }, { - "teal": 98, + "teal": 111, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 175, - 176 + 186, + 187 ] }, { - "teal": 99, + "teal": 112, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 177 + 188 ] }, { - "teal": 102, + "teal": 115, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 178, - 179, - 180 + 189, + 190, + 191 ] }, { - "teal": 103, + "teal": 116, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 181, - 182 + 192, + 193 ] }, { - "teal": 104, + "teal": 117, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 183, - 184 + 194, + 195 ] }, { - "teal": 105, + "teal": 118, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 185 + 196 ] }, { - "teal": 106, + "teal": 119, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 186, - 187 + 197, + 198 ] }, { - "teal": 107, + "teal": 120, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 188, - 189 + 199, + 200 ] }, { - "teal": 108, + "teal": 121, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 190 + 201 ] }, { - "teal": 109, + "teal": 122, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 191 + 202 ] }, { - "teal": 110, + "teal": 123, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 192, - 193 + 203, + 204 ] }, { - "teal": 111, + "teal": 124, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 194 + 205 ] }, { - "teal": 112, + "teal": 125, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 195 + 206 ] }, { - "teal": 113, + "teal": 126, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 196 + 207 ] }, { - "teal": 114, + "teal": 127, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 197, - 198, - 199 + 208, + 209, + 210 ] }, { - "teal": 115, + "teal": 128, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 200, - 201 + 211, + 212 ] }, { - "teal": 116, + "teal": 129, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 202, - 203 + 213, + 214 ] }, { - "teal": 117, + "teal": 130, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 204 + 215 ] }, { - "teal": 118, + "teal": 131, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 205 + 216 ] }, { - "teal": 119, + "teal": 132, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 206, - 207 + 217, + 218 ] }, { - "teal": 120, + "teal": 133, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 208, - 209 + 219, + 220 ] }, { - "teal": 121, + "teal": 134, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 210, - 211 + 221, + 222 ] }, { - "teal": 122, + "teal": 135, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 212, - 213 + 223, + 224 ] }, { - "teal": 123, + "teal": 136, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 214 + 225 ] } ], @@ -792,11 +841,11 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNmQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpdm9pZAoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBleGVjdXRlIG5lc3RlZEFycmF5SW5Cb3goKXZvaWQKCWNhbGxzdWIgbmVzdGVkQXJyYXlJbkJveAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpOiB2b2lkCm5lc3RlZEFycmF5SW5Cb3g6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY0MQoJLy8gdGhpcy5iTWFwKCdibWFwJykudmFsdWUgPSB7CgkvLyAgICAgICBieXRlczRBcnJheTogWydhYmNkJyBhcyBieXRlczw0PiwgJ2VmZ2gnIGFzIGJ5dGVzPDQ+XSwKCS8vICAgICAgIHU2NGE6IDEsCgkvLyAgICAgICB1NjRiOiAyLAoJLy8gICAgICAgdTY0YzogMywKCS8vICAgICAgIGJvb2xWYWx1ZTogZmFsc2UsCgkvLyAgICAgfQoJYnl0ZWMgMCAvLyAgImJtYXAiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAxIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMWEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwMjYxNjI2MzY0NjU2NjY3NjgKCWNhbGxzdWIgKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAxCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAyCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAzCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMAoJaW50YyAwIC8vIDAKCWR1cAoJc2V0Yml0CgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50Cgljb25jYXQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJYm94X3B1dAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDk5OTMxMGRmIC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJY29uY2F0Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY0OQoJLy8gcmV0dXJuIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlOwoJYnl0ZWMgMCAvLyAgImJNYXAiCglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZQoJYXNzZXJ0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YTA3Y2EwYzggLy8gbWV0aG9kICJuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { - "approval": "CiACAAEmAgRibWFwADEYFIEGCzEZCI0MAGcAAAAAAAAAAAAAAFkAAAAAAAAAAAAAAIgAAiNDigAAKEm8SCkpgAIAGoAKAAJhYmNkZWZnaIgAYIAIAAAAAAAAAAGIAEaACAAAAAAAAAACiAA5gAgAAAAAAAAAA4gALIABACJJVIgAI1BIUL+JI0OABLhEezY2GgCOAf/xAIAEmZMQ3zYaAI4B/40AigQDi/yL/1CL/Yv+iYoEA4v8i/5QjPyL/0kVi/4XCBZXBgKM/ov9TFCM/Yv8i/2L/ok=", + "approval": "CiACAAEmAgRiTWFwADEYFIEGCzEZCI0MAHIAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAIAEFR98dYgABFCwI0OKAAEoSbxIKSmAAgAagAoAAmFiY2RlZmdoiABjgAgAAAAAAAAAAYgASYAIAAAAAAAAAAKIADyACAAAAAAAAAADiAAvgAEAIklUiAAmUEhQvyi+RIkjQ4AEuER7NjYaAI4B//EAgASgfKDINhoAjgH/ggCKBAOL/Iv/UIv9i/6JigQDi/yL/lCM/Iv/SRWL/hcIFlcGAoz+i/1MUIz9i/yL/Yv+iQ==", "clear": "Cg==" }, "compilerInfo": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal index 03f425db2..b7fff67e2 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal @@ -1,6 +1,6 @@ #pragma version 10 intcblock 0 1 -bytecblock 0x626d6170 0x +bytecblock 0x624d6170 0x // This TEAL was generated by TEALScript v0.106.0 // https://github.com/algorandfoundation/TEALScript @@ -24,26 +24,31 @@ switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEM // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? err -// nestedArrayInBoxLast()void +// nestedArrayInBoxLast()(uint64,uint64,uint64,bool,byte[4][]) *abi_route_nestedArrayInBoxLast: - // execute nestedArrayInBoxLast()void + // The ABI return prefix + pushbytes 0x151f7c75 + + // execute nestedArrayInBoxLast()(uint64,uint64,uint64,bool,byte[4][]) callsub nestedArrayInBoxLast + concat + log intc 1 // 1 return -// nestedArrayInBoxLast(): void +// nestedArrayInBoxLast(): T11 nestedArrayInBoxLast: - proto 0 0 + proto 0 1 - // tests/contracts/abi.algo.ts:1663 - // this.bMap('bmap').value = { + // tests/contracts/abi.algo.ts:1665 + // this.bMap('bMap').value = { // bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], // u64a: 1, // u64b: 2, // u64c: 3, // boolValue: false, // } - bytec 0 // "bmap" + bytec 0 // "bMap" dup box_del pop @@ -66,6 +71,14 @@ nestedArrayInBoxLast: pop // pop head offset concat // concat head and tail box_put + + // tests/contracts/abi.algo.ts:1673 + // return this.bMap('bMap').value; + bytec 0 // "bMap" + box_get + + // box value does not exist: this.bMap('bMap').value + assert retsub *abi_route_createApplication: @@ -81,7 +94,7 @@ nestedArrayInBoxLast: err *call_NoOp: - pushbytes 0xfac03883 // method "nestedArrayInBoxLast()void" + pushbytes 0x9528788b // method "nestedArrayInBoxLast()(uint64,uint64,uint64,bool,byte[4][])" txna ApplicationArgs 0 match *abi_route_nestedArrayInBoxLast diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json index c0377c427..c3c32dac3 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json @@ -1,6 +1,6 @@ { "hints": { - "nestedArrayInBoxLast()void": { + "nestedArrayInBoxLast()(uint64,uint64,uint64,bool,byte[4][])": { "call_config": { "no_op": "CALL" } @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNmQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKXZvaWQKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdDoKCS8vIGV4ZWN1dGUgbmVzdGVkQXJyYXlJbkJveExhc3QoKXZvaWQKCWNhbGxzdWIgbmVzdGVkQXJyYXlJbkJveExhc3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIG5lc3RlZEFycmF5SW5Cb3hMYXN0KCk6IHZvaWQKbmVzdGVkQXJyYXlJbkJveExhc3Q6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY2MwoJLy8gdGhpcy5iTWFwKCdibWFwJykudmFsdWUgPSB7CgkvLyAgICAgICBieXRlczRBcnJheTogWydhYmNkJyBhcyBieXRlczw0PiwgJ2VmZ2gnIGFzIGJ5dGVzPDQ+XSwKCS8vICAgICAgIHU2NGE6IDEsCgkvLyAgICAgICB1NjRiOiAyLAoJLy8gICAgICAgdTY0YzogMywKCS8vICAgICAgIGJvb2xWYWx1ZTogZmFsc2UsCgkvLyAgICAgfQoJYnl0ZWMgMCAvLyAgImJtYXAiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAxIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMWEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMjYxNjI2MzY0NjU2NjY3NjgKCWNhbGxzdWIgKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMSAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHhmYWMwMzg4MyAvLyBtZXRob2QgIm5lc3RlZEFycmF5SW5Cb3hMYXN0KCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5SW5Cb3hMYXN0KCkodWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCxieXRlWzRdW10pCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3hMYXN0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKTogVDExCm5lc3RlZEFycmF5SW5Cb3hMYXN0OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NjUKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NzMKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDk1Mjg3ODhiIC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3hMYXN0CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { @@ -50,7 +50,7 @@ "name": "nestedArrayInBoxLast", "args": [], "returns": { - "type": "void" + "type": "(uint64,uint64,uint64,bool,byte[4][])" } }, { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc4.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc4.json index 091b54aed..f4a0abcc8 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc4.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc4.json @@ -6,7 +6,7 @@ "name": "nestedArrayInBoxLast", "args": [], "returns": { - "type": "void" + "type": "(uint64,uint64,uint64,bool,byte[4][])" } }, { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json index 1be12ab77..a4ee9a3d8 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json @@ -6,7 +6,8 @@ "name": "nestedArrayInBoxLast", "args": [], "returns": { - "type": "void" + "type": "(uint64,uint64,uint64,bool,byte[4][])", + "struct": "T11" }, "actions": { "create": [], @@ -93,14 +94,14 @@ "sourceInfo": [ { "teal": 1, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 0 ] }, { "teal": 2, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 1, 2, @@ -110,7 +111,7 @@ }, { "teal": 3, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 5, 6, @@ -124,7 +125,7 @@ }, { "teal": 15, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 13, 14 @@ -132,14 +133,14 @@ }, { "teal": 16, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 15 ] }, { "teal": 17, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 16, 17 @@ -147,14 +148,14 @@ }, { "teal": 18, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 18 ] }, { "teal": 19, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 19, 20 @@ -162,14 +163,14 @@ }, { "teal": 20, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 21 ] }, { "teal": 21, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 22, 23, @@ -201,7 +202,7 @@ }, { "teal": 25, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", "pc": [ 48 @@ -209,85 +210,73 @@ }, { "teal": 30, - "source": "tests/contracts/abi.algo.ts:1662", + "source": "tests/contracts/abi.algo.ts:1664", "pc": [ 49, 50, - 51 - ] - }, - { - "teal": 31, - "source": "tests/contracts/abi.algo.ts:1662", - "pc": [ - 52 - ] - }, - { - "teal": 32, - "source": "tests/contracts/abi.algo.ts:1662", - "pc": [ - 53 + 51, + 52, + 53, + 54 ] }, { - "teal": 36, - "source": "tests/contracts/abi.algo.ts:1662", + "teal": 33, + "source": "tests/contracts/abi.algo.ts:1664", "pc": [ - 54, 55, - 56 - ] - }, - { - "teal": 46, - "source": "tests/contracts/abi.algo.ts:1663", - "pc": [ + 56, 57 ] }, { - "teal": 47, - "source": "tests/contracts/abi.algo.ts:1663", + "teal": 34, + "source": "tests/contracts/abi.algo.ts:1664", "pc": [ 58 ] }, { - "teal": 48, - "source": "tests/contracts/abi.algo.ts:1663", + "teal": 35, + "source": "tests/contracts/abi.algo.ts:1664", "pc": [ 59 ] }, { - "teal": 49, - "source": "tests/contracts/abi.algo.ts:1663", + "teal": 36, + "source": "tests/contracts/abi.algo.ts:1664", "pc": [ 60 ] }, { - "teal": 50, - "source": "tests/contracts/abi.algo.ts:1663", + "teal": 37, + "source": "tests/contracts/abi.algo.ts:1664", "pc": [ 61 ] }, + { + "teal": 41, + "source": "tests/contracts/abi.algo.ts:1664", + "pc": [ + 62, + 63, + 64 + ] + }, { "teal": 51, - "source": "tests/contracts/abi.algo.ts:1663", + "source": "tests/contracts/abi.algo.ts:1665", "pc": [ - 62 + 65 ] }, { "teal": 52, - "source": "tests/contracts/abi.algo.ts:1663", + "source": "tests/contracts/abi.algo.ts:1665", "pc": [ - 63, - 64, - 65, 66 ] }, @@ -295,485 +284,545 @@ "teal": 53, "source": "tests/contracts/abi.algo.ts:1665", "pc": [ - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76 + 67 ] }, { "teal": 54, "source": "tests/contracts/abi.algo.ts:1665", "pc": [ - 77, - 78, - 79 + 68 ] }, { "teal": 55, - "source": "tests/contracts/abi.algo.ts:1666", + "source": "tests/contracts/abi.algo.ts:1665", "pc": [ - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89 + 69 ] }, { "teal": 56, - "source": "tests/contracts/abi.algo.ts:1666", + "source": "tests/contracts/abi.algo.ts:1665", "pc": [ - 90, - 91, - 92 + 70 ] }, { "teal": 57, - "source": "tests/contracts/abi.algo.ts:1667", + "source": "tests/contracts/abi.algo.ts:1665", "pc": [ - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102 + 71, + 72, + 73, + 74 ] }, { "teal": 58, "source": "tests/contracts/abi.algo.ts:1667", "pc": [ - 103, - 104, - 105 + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84 ] }, { "teal": 59, - "source": "tests/contracts/abi.algo.ts:1668", + "source": "tests/contracts/abi.algo.ts:1667", "pc": [ - 106, - 107, - 108 + 85, + 86, + 87 ] }, { "teal": 60, "source": "tests/contracts/abi.algo.ts:1668", "pc": [ - 109 + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97 ] }, { "teal": 61, "source": "tests/contracts/abi.algo.ts:1668", "pc": [ - 110 + 98, + 99, + 100 ] }, { "teal": 62, - "source": "tests/contracts/abi.algo.ts:1668", + "source": "tests/contracts/abi.algo.ts:1669", "pc": [ - 111 + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110 ] }, { "teal": 63, - "source": "tests/contracts/abi.algo.ts:1664", + "source": "tests/contracts/abi.algo.ts:1669", "pc": [ + 111, 112, - 113, - 114 + 113 ] }, { "teal": 64, - "source": "tests/contracts/abi.algo.ts:1664", + "source": "tests/contracts/abi.algo.ts:1670", "pc": [ + 114, 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126 + 116 ] }, { "teal": 65, - "source": "tests/contracts/abi.algo.ts:1664", + "source": "tests/contracts/abi.algo.ts:1670", "pc": [ - 127, - 128, - 129 + 117 ] }, { "teal": 66, - "source": "tests/contracts/abi.algo.ts:1663", + "source": "tests/contracts/abi.algo.ts:1670", "pc": [ - 130 + 118 ] }, { "teal": 67, - "source": "tests/contracts/abi.algo.ts:1663", + "source": "tests/contracts/abi.algo.ts:1670", "pc": [ - 131 + 119 ] }, { "teal": 68, - "source": "tests/contracts/abi.algo.ts:1663", + "source": "tests/contracts/abi.algo.ts:1666", "pc": [ - 132 + 120, + 121, + 122 ] }, { "teal": 69, - "source": "tests/contracts/abi.algo.ts:1662", + "source": "tests/contracts/abi.algo.ts:1666", "pc": [ - 133 + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134 ] }, { - "teal": 72, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 70, + "source": "tests/contracts/abi.algo.ts:1666", "pc": [ - 134 + 135, + 136, + 137 ] }, { - "teal": 73, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 71, + "source": "tests/contracts/abi.algo.ts:1665", "pc": [ - 135 + 138 ] }, { - "teal": 76, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 72, + "source": "tests/contracts/abi.algo.ts:1665", "pc": [ - 136, - 137, - 138, - 139, - 140, - 141 + 139 + ] + }, + { + "teal": 73, + "source": "tests/contracts/abi.algo.ts:1665", + "pc": [ + 140 ] }, { "teal": 77, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1673", "pc": [ - 142, - 143, - 144 + 141 ] }, { "teal": 78, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1673", "pc": [ - 145, - 146, - 147, - 148 + 142 ] }, { "teal": 81, - "source": "tests/contracts/abi.algo.ts:1659", - "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "source": "tests/contracts/abi.algo.ts:1673", + "errorMessage": "box value does not exist: this.bMap('bMap').value", "pc": [ - 149 + 143 ] }, { - "teal": 84, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 82, + "source": "tests/contracts/abi.algo.ts:1664", "pc": [ - 150, - 151, - 152, - 153, - 154, - 155 + 144 ] }, { "teal": 85, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 156, - 157, - 158 + 145 ] }, { "teal": 86, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 159, - 160, - 161, - 162 + 146 ] }, { "teal": 89, - "source": "tests/contracts/abi.algo.ts:1659", - "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 163 + 147, + 148, + 149, + 150, + 151, + 152 ] }, { - "teal": 92, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 90, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 164, - 165, - 166 + 153, + 154, + 155 ] }, { - "teal": 93, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 91, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 167, - 168 + 156, + 157, + 158, + 159 ] }, { "teal": 94, - "source": "tests/contracts/abi.algo.ts:1659", + "source": "tests/contracts/abi.algo.ts:1661", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ - 169, - 170 + 160 ] }, { - "teal": 95, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 97, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 171 + 161, + 162, + 163, + 164, + 165, + 166 ] }, { - "teal": 96, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 98, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ + 167, + 168, + 169 + ] + }, + { + "teal": 99, + "source": "tests/contracts/abi.algo.ts:1661", + "pc": [ + 170, + 171, 172, 173 ] }, { - "teal": 97, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 102, + "source": "tests/contracts/abi.algo.ts:1661", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 174, - 175 + 174 ] }, { - "teal": 98, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 105, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 176 + 175, + 176, + 177 ] }, { - "teal": 101, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 106, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 177, 178, 179 ] }, { - "teal": 102, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 107, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 180, 181 ] }, { - "teal": 103, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 108, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 182, - 183 + 182 ] }, { - "teal": 104, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 109, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ + 183, 184 ] }, { - "teal": 105, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 110, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 185, 186 ] }, { - "teal": 106, - "source": "tests/contracts/abi.algo.ts:1659", - "pc": [ - 187, - 188 - ] - }, - { - "teal": 107, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 111, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 189 + 187 ] }, { - "teal": 108, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 114, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ + 188, + 189, 190 ] }, { - "teal": 109, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 115, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 191, 192 ] }, { - "teal": 110, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 116, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 193 + 193, + 194 ] }, { - "teal": 111, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 117, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 194 + 195 ] }, { - "teal": 112, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 118, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 195 + 196, + 197 ] }, { - "teal": 113, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 119, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 196, - 197, - 198 + 198, + 199 ] }, { - "teal": 114, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 120, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 199, 200 ] }, { - "teal": 115, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 121, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 201, - 202 + 201 ] }, { - "teal": 116, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 122, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ + 202, 203 ] }, { - "teal": 117, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 123, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 204 ] }, { - "teal": 118, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 124, + "source": "tests/contracts/abi.algo.ts:1661", + "pc": [ + 205 + ] + }, + { + "teal": 125, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 205, 206 ] }, { - "teal": 119, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 126, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ 207, - 208 + 208, + 209 ] }, { - "teal": 120, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 127, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 209, - 210 + 210, + 211 ] }, { - "teal": 121, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 128, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 211, - 212 + 212, + 213 ] }, { - "teal": 122, - "source": "tests/contracts/abi.algo.ts:1659", + "teal": 129, + "source": "tests/contracts/abi.algo.ts:1661", "pc": [ - 213 + 214 + ] + }, + { + "teal": 130, + "source": "tests/contracts/abi.algo.ts:1661", + "pc": [ + 215 + ] + }, + { + "teal": 131, + "source": "tests/contracts/abi.algo.ts:1661", + "pc": [ + 216, + 217 + ] + }, + { + "teal": 132, + "source": "tests/contracts/abi.algo.ts:1661", + "pc": [ + 218, + 219 + ] + }, + { + "teal": 133, + "source": "tests/contracts/abi.algo.ts:1661", + "pc": [ + 220, + 221 + ] + }, + { + "teal": 134, + "source": "tests/contracts/abi.algo.ts:1661", + "pc": [ + 222, + 223 + ] + }, + { + "teal": 135, + "source": "tests/contracts/abi.algo.ts:1661", + "pc": [ + 224 ] } ], @@ -785,11 +834,11 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNmQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKXZvaWQKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdDoKCS8vIGV4ZWN1dGUgbmVzdGVkQXJyYXlJbkJveExhc3QoKXZvaWQKCWNhbGxzdWIgbmVzdGVkQXJyYXlJbkJveExhc3QKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIG5lc3RlZEFycmF5SW5Cb3hMYXN0KCk6IHZvaWQKbmVzdGVkQXJyYXlJbkJveExhc3Q6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY2MwoJLy8gdGhpcy5iTWFwKCdibWFwJykudmFsdWUgPSB7CgkvLyAgICAgICBieXRlczRBcnJheTogWydhYmNkJyBhcyBieXRlczw0PiwgJ2VmZ2gnIGFzIGJ5dGVzPDQ+XSwKCS8vICAgICAgIHU2NGE6IDEsCgkvLyAgICAgICB1NjRiOiAyLAoJLy8gICAgICAgdTY0YzogMywKCS8vICAgICAgIGJvb2xWYWx1ZTogZmFsc2UsCgkvLyAgICAgfQoJYnl0ZWMgMCAvLyAgImJtYXAiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAxIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMWEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMjYxNjI2MzY0NjU2NjY3NjgKCWNhbGxzdWIgKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMSAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHhmYWMwMzg4MyAvLyBtZXRob2QgIm5lc3RlZEFycmF5SW5Cb3hMYXN0KCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5SW5Cb3hMYXN0KCkodWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCxieXRlWzRdW10pCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3hMYXN0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKTogVDExCm5lc3RlZEFycmF5SW5Cb3hMYXN0OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NjUKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NzMKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDk1Mjg3ODhiIC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3hMYXN0CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { - "approval": "CiACAAEmAgRibWFwADEYFIEGCzEZCI0MAGYAAAAAAAAAAAAAAFgAAAAAAAAAAAAAAIgAAiNDigAAKEm8SCkpgAIAGoAIAAAAAAAAAAGIAFSACAAAAAAAAAACiABHgAgAAAAAAAAAA4gAOoABACJJVIgAMYAKAAJhYmNkZWZnaIgAL0hQv4kjQ4AEuER7NjYaAI4B//EAgAT6wDiDNhoAjgH/jgCKBAOL/Iv/UIv9i/6JigQDi/yL/lCM/Iv/SRWL/hcIFlcGAoz+i/1MUIz9i/yL/Yv+iQ==", + "approval": "CiACAAEmAgRiTWFwADEYFIEGCzEZCI0MAHEAAAAAAAAAAAAAAGMAAAAAAAAAAAAAAIAEFR98dYgABFCwI0OKAAEoSbxIKSmAAgAagAgAAAAAAAAAAYgAV4AIAAAAAAAAAAKIAEqACAAAAAAAAAADiAA9gAEAIklUiAA0gAoAAmFiY2RlZmdoiAAySFC/KL5EiSNDgAS4RHs2NhoAjgH/8QCABJUoeIs2GgCOAf+DAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", "clear": "Cg==" }, "compilerInfo": { From 3362a361faa559287f2b3722afc8575a6b518f2c Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Tue, 17 Dec 2024 13:47:49 -0500 Subject: [PATCH 04/11] nestedArrayInBoxWithoutBool (works) --- tests/abi.test.ts | 27 +- tests/contracts/abi.algo.ts | 22 + ...tNestedArrayInBoxWithoutBool.approval.teal | 129 +++ ...TestNestedArrayInBoxWithoutBool.arc32.json | 65 ++ ...ITestNestedArrayInBoxWithoutBool.arc4.json | 20 + ...TestNestedArrayInBoxWithoutBool.arc56.json | 809 ++++++++++++++++++ ...TestNestedArrayInBoxWithoutBool.clear.teal | 1 + 7 files changed, 1071 insertions(+), 2 deletions(-) create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.approval.teal create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc32.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc4.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc56.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.clear.teal diff --git a/tests/abi.test.ts b/tests/abi.test.ts index 863a91743..cf235c363 100644 --- a/tests/abi.test.ts +++ b/tests/abi.test.ts @@ -931,12 +931,35 @@ describe('ABI', function () { test('nestedArrayInBox', async () => { const { appClient } = await compileAndCreate('nestedArrayInBox'); - expect(await runMethod(appClient, 'nestedArrayInBox')).toEqual([['abcd', 'efgh'], 1n, 2n, 3n, false]); + expect(await runMethod(appClient, 'nestedArrayInBox')).toEqual([ + [[...Buffer.from('abcd')], [...Buffer.from('efgh')]], + 1n, + 2n, + 3n, + false, + ]); }); test('nestedArrayInBoxLast', async () => { const { appClient } = await compileAndCreate('nestedArrayInBoxLast'); - expect(await runMethod(appClient, 'nestedArrayInBoxLast')).toEqual([1n, 2n, 3n, false, ['abcd', 'efgh']]); + expect(await runMethod(appClient, 'nestedArrayInBoxLast')).toEqual([ + 1n, + 2n, + 3n, + false, + [[...Buffer.from('abcd')], [...Buffer.from('efgh')]], + ]); + }); + + test('nestedArrayInBoxWithoutBool', async () => { + const { appClient } = await compileAndCreate('nestedArrayInBoxWithoutBool'); + + expect(await runMethod(appClient, 'nestedArrayInBoxWithoutBool')).toEqual([ + [[...Buffer.from('abcd')], [...Buffer.from('efgh')]], + 1n, + 2n, + 3n, + ]); }); }); diff --git a/tests/contracts/abi.algo.ts b/tests/contracts/abi.algo.ts index 74984e1a0..598abe683 100644 --- a/tests/contracts/abi.algo.ts +++ b/tests/contracts/abi.algo.ts @@ -1673,3 +1673,25 @@ class ABITestNestedArrayInBoxLast extends Contract { return this.bMap('bMap').value; } } + +type T12 = { + bytes4Array: bytes<4>[]; + u64a: uint64; + u64b: uint64; + u64c: uint64; +}; + +class ABITestNestedArrayInBoxWithoutBool extends Contract { + bMap = BoxMap(); + + nestedArrayInBoxWithoutBool(): T12 { + this.bMap('bMap').value = { + bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], + u64a: 1, + u64b: 2, + u64c: 3, + }; + + return this.bMap('bMap').value; + } +} diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.approval.teal new file mode 100644 index 000000000..472de862e --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.approval.teal @@ -0,0 +1,129 @@ +#pragma version 10 +intcblock 1 +bytecblock 0x624d6170 0x + +// This TEAL was generated by TEALScript v0.106.0 +// https://github.com/algorandfoundation/TEALScript + +// This contract is compliant with and/or implements the following ARCs: [ ARC4 ] + +// The following ten lines of TEAL handle initial program flow +// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed +// Here, action refers to the OnComplete in combination with whether the app is being created or called +// Every possible action for this contract is represented in the switch statement +// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" +txn ApplicationID +! +pushint 6 +* +txn OnCompletion ++ +switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED + +*NOT_IMPLEMENTED: + // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? + err + +// nestedArrayInBoxWithoutBool()(byte[4][],uint64,uint64,uint64) +*abi_route_nestedArrayInBoxWithoutBool: + // The ABI return prefix + pushbytes 0x151f7c75 + + // execute nestedArrayInBoxWithoutBool()(byte[4][],uint64,uint64,uint64) + callsub nestedArrayInBoxWithoutBool + concat + log + intc 0 // 1 + return + +// nestedArrayInBoxWithoutBool(): T12 +nestedArrayInBoxWithoutBool: + proto 0 1 + + // tests/contracts/abi.algo.ts:1688 + // this.bMap('bMap').value = { + // bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], + // u64a: 1, + // u64b: 2, + // u64c: 3, + // } + bytec 0 // "bMap" + dup + box_del + pop + bytec 1 // initial head + bytec 1 // initial tail + pushbytes 0x001a // initial head offset + pushbytes 0x00026162636465666768 + callsub *process_dynamic_tuple_element + pushbytes 0x0000000000000001 + callsub *process_static_tuple_element + pushbytes 0x0000000000000002 + callsub *process_static_tuple_element + pushbytes 0x0000000000000003 + callsub *process_static_tuple_element + pop // pop head offset + concat // concat head and tail + box_put + + // tests/contracts/abi.algo.ts:1695 + // return this.bMap('bMap').value; + bytec 0 // "bMap" + box_get + + // box value does not exist: this.bMap('bMap').value + assert + retsub + +*abi_route_createApplication: + intc 0 // 1 + return + +*create_NoOp: + pushbytes 0xb8447b36 // method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create NoOp + err + +*call_NoOp: + pushbytes 0xff5efc02 // method "nestedArrayInBoxWithoutBool()(byte[4][],uint64,uint64,uint64)" + txna ApplicationArgs 0 + match *abi_route_nestedArrayInBoxWithoutBool + + // this contract does not implement the given ABI method for call NoOp + err + +*process_static_tuple_element: + proto 4 3 + frame_dig -4 // tuple head + frame_dig -1 // element + concat + frame_dig -3 // tuple tail + frame_dig -2 // head offset + retsub + +*process_dynamic_tuple_element: + proto 4 3 + frame_dig -4 // tuple head + frame_dig -2 // head offset + concat + frame_bury -4 // tuple head + frame_dig -1 // element + dup + len + frame_dig -2 // head offset + btoi + + + itob + extract 6 2 + frame_bury -2 // head offset + frame_dig -3 // tuple tail + swap + concat + frame_bury -3 // tuple tail + frame_dig -4 // tuple head + frame_dig -3 // tuple tail + frame_dig -2 // head offset + retsub \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc32.json new file mode 100644 index 000000000..99c0c23ed --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc32.json @@ -0,0 +1,65 @@ +{ + "hints": { + "nestedArrayInBoxWithoutBool()(byte[4][],uint64,uint64,uint64)": { + "call_config": { + "no_op": "CALL" + } + }, + "createApplication()void": { + "call_config": { + "no_op": "CREATE" + } + } + }, + "bare_call_config": { + "no_op": "NEVER", + "opt_in": "NEVER", + "close_out": "NEVER", + "update_application": "NEVER", + "delete_application": "NEVER" + }, + "schema": { + "local": { + "declared": {}, + "reserved": {} + }, + "global": { + "declared": {}, + "reserved": {} + } + }, + "state": { + "global": { + "num_byte_slices": 0, + "num_uints": 0 + }, + "local": { + "num_byte_slices": 0, + "num_uints": 0 + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxCmJ5dGVjYmxvY2sgMHg2MjRkNjE3MCAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5SW5Cb3hXaXRob3V0Qm9vbCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94V2l0aG91dEJvb2w6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94V2l0aG91dEJvb2woKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3hXaXRob3V0Qm9vbAoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIG5lc3RlZEFycmF5SW5Cb3hXaXRob3V0Qm9vbCgpOiBUMTIKbmVzdGVkQXJyYXlJbkJveFdpdGhvdXRCb29sOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2ODgKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgfQoJYnl0ZWMgMCAvLyAgImJNYXAiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAxIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMWEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwMjYxNjI2MzY0NjU2NjY3NjgKCWNhbGxzdWIgKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAxCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAyCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAzCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY5NQoJLy8gcmV0dXJuIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlOwoJYnl0ZWMgMCAvLyAgImJNYXAiCglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZQoJYXNzZXJ0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDAgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4ZmY1ZWZjMDIgLy8gbWV0aG9kICJuZXN0ZWRBcnJheUluQm94V2l0aG91dEJvb2woKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94V2l0aG91dEJvb2wKCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3ViCgoqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJZHVwCglsZW4KCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJYnRvaQoJKwoJaXRvYgoJZXh0cmFjdCA2IDIKCWZyYW1lX2J1cnkgLTIgLy8gaGVhZCBvZmZzZXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglzd2FwCgljb25jYXQKCWZyYW1lX2J1cnkgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1Yg==", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "contract": { + "name": "ABITestNestedArrayInBoxWithoutBool", + "desc": "", + "methods": [ + { + "name": "nestedArrayInBoxWithoutBool", + "args": [], + "returns": { + "type": "(byte[4][],uint64,uint64,uint64)" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] + } +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc4.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc4.json new file mode 100644 index 000000000..cbec1da0e --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc4.json @@ -0,0 +1,20 @@ +{ + "name": "ABITestNestedArrayInBoxWithoutBool", + "desc": "", + "methods": [ + { + "name": "nestedArrayInBoxWithoutBool", + "args": [], + "returns": { + "type": "(byte[4][],uint64,uint64,uint64)" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc56.json new file mode 100644 index 000000000..862c9e1da --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.arc56.json @@ -0,0 +1,809 @@ +{ + "name": "ABITestNestedArrayInBoxWithoutBool", + "desc": "", + "methods": [ + { + "name": "nestedArrayInBoxWithoutBool", + "args": [], + "returns": { + "type": "(byte[4][],uint64,uint64,uint64)", + "struct": "T12" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [ + "NoOp" + ], + "call": [] + } + } + ], + "arcs": [ + 4, + 56 + ], + "structs": { + "T12": [ + { + "name": "bytes4Array", + "type": "byte[4][]" + }, + { + "name": "u64a", + "type": "uint64" + }, + { + "name": "u64b", + "type": "uint64" + }, + { + "name": "u64c", + "type": "uint64" + } + ] + }, + "state": { + "schema": { + "global": { + "bytes": 0, + "ints": 0 + }, + "local": { + "bytes": 0, + "ints": 0 + } + }, + "keys": { + "global": {}, + "local": {}, + "box": {} + }, + "maps": { + "global": {}, + "local": {}, + "box": { + "bMap": { + "keyType": "AVMBytes", + "valueType": "T12" + } + } + } + }, + "bareActions": { + "create": [], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "teal": 1, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 0 + ] + }, + { + "teal": 2, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 1, + 2, + 3 + ] + }, + { + "teal": 3, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + }, + { + "teal": 15, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 12, + 13 + ] + }, + { + "teal": 16, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 14 + ] + }, + { + "teal": 17, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 15, + 16 + ] + }, + { + "teal": 18, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 17 + ] + }, + { + "teal": 19, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 18, + 19 + ] + }, + { + "teal": 20, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 20 + ] + }, + { + "teal": 21, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ] + }, + { + "teal": 25, + "source": "tests/contracts/abi.algo.ts:1684", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 47 + ] + }, + { + "teal": 30, + "source": "tests/contracts/abi.algo.ts:1687", + "pc": [ + 48, + 49, + 50, + 51, + 52, + 53 + ] + }, + { + "teal": 33, + "source": "tests/contracts/abi.algo.ts:1687", + "pc": [ + 54, + 55, + 56 + ] + }, + { + "teal": 34, + "source": "tests/contracts/abi.algo.ts:1687", + "pc": [ + 57 + ] + }, + { + "teal": 35, + "source": "tests/contracts/abi.algo.ts:1687", + "pc": [ + 58 + ] + }, + { + "teal": 36, + "source": "tests/contracts/abi.algo.ts:1687", + "pc": [ + 59 + ] + }, + { + "teal": 37, + "source": "tests/contracts/abi.algo.ts:1687", + "pc": [ + 60 + ] + }, + { + "teal": 41, + "source": "tests/contracts/abi.algo.ts:1687", + "pc": [ + 61, + 62, + 63 + ] + }, + { + "teal": 50, + "source": "tests/contracts/abi.algo.ts:1688", + "pc": [ + 64 + ] + }, + { + "teal": 51, + "source": "tests/contracts/abi.algo.ts:1688", + "pc": [ + 65 + ] + }, + { + "teal": 52, + "source": "tests/contracts/abi.algo.ts:1688", + "pc": [ + 66 + ] + }, + { + "teal": 53, + "source": "tests/contracts/abi.algo.ts:1688", + "pc": [ + 67 + ] + }, + { + "teal": 54, + "source": "tests/contracts/abi.algo.ts:1688", + "pc": [ + 68 + ] + }, + { + "teal": 55, + "source": "tests/contracts/abi.algo.ts:1688", + "pc": [ + 69 + ] + }, + { + "teal": 56, + "source": "tests/contracts/abi.algo.ts:1688", + "pc": [ + 70, + 71, + 72, + 73 + ] + }, + { + "teal": 57, + "source": "tests/contracts/abi.algo.ts:1689", + "pc": [ + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85 + ] + }, + { + "teal": 58, + "source": "tests/contracts/abi.algo.ts:1689", + "pc": [ + 86, + 87, + 88 + ] + }, + { + "teal": 59, + "source": "tests/contracts/abi.algo.ts:1690", + "pc": [ + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98 + ] + }, + { + "teal": 60, + "source": "tests/contracts/abi.algo.ts:1690", + "pc": [ + 99, + 100, + 101 + ] + }, + { + "teal": 61, + "source": "tests/contracts/abi.algo.ts:1691", + "pc": [ + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ] + }, + { + "teal": 62, + "source": "tests/contracts/abi.algo.ts:1691", + "pc": [ + 112, + 113, + 114 + ] + }, + { + "teal": 63, + "source": "tests/contracts/abi.algo.ts:1692", + "pc": [ + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124 + ] + }, + { + "teal": 64, + "source": "tests/contracts/abi.algo.ts:1692", + "pc": [ + 125, + 126, + 127 + ] + }, + { + "teal": 65, + "source": "tests/contracts/abi.algo.ts:1688", + "pc": [ + 128 + ] + }, + { + "teal": 66, + "source": "tests/contracts/abi.algo.ts:1688", + "pc": [ + 129 + ] + }, + { + "teal": 67, + "source": "tests/contracts/abi.algo.ts:1688", + "pc": [ + 130 + ] + }, + { + "teal": 71, + "source": "tests/contracts/abi.algo.ts:1695", + "pc": [ + 131 + ] + }, + { + "teal": 72, + "source": "tests/contracts/abi.algo.ts:1695", + "pc": [ + 132 + ] + }, + { + "teal": 75, + "source": "tests/contracts/abi.algo.ts:1695", + "errorMessage": "box value does not exist: this.bMap('bMap').value", + "pc": [ + 133 + ] + }, + { + "teal": 76, + "source": "tests/contracts/abi.algo.ts:1687", + "pc": [ + 134 + ] + }, + { + "teal": 79, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 135 + ] + }, + { + "teal": 80, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 136 + ] + }, + { + "teal": 83, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 137, + 138, + 139, + 140, + 141, + 142 + ] + }, + { + "teal": 84, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 143, + 144, + 145 + ] + }, + { + "teal": 85, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 146, + 147, + 148, + 149 + ] + }, + { + "teal": 88, + "source": "tests/contracts/abi.algo.ts:1684", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 150 + ] + }, + { + "teal": 91, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 151, + 152, + 153, + 154, + 155, + 156 + ] + }, + { + "teal": 92, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 157, + 158, + 159 + ] + }, + { + "teal": 93, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 160, + 161, + 162, + 163 + ] + }, + { + "teal": 96, + "source": "tests/contracts/abi.algo.ts:1684", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 164 + ] + }, + { + "teal": 99, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 165, + 166, + 167 + ] + }, + { + "teal": 100, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 168, + 169 + ] + }, + { + "teal": 101, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 170, + 171 + ] + }, + { + "teal": 102, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 172 + ] + }, + { + "teal": 103, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 173, + 174 + ] + }, + { + "teal": 104, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 175, + 176 + ] + }, + { + "teal": 105, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 177 + ] + }, + { + "teal": 108, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 178, + 179, + 180 + ] + }, + { + "teal": 109, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 181, + 182 + ] + }, + { + "teal": 110, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 183, + 184 + ] + }, + { + "teal": 111, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 185 + ] + }, + { + "teal": 112, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 186, + 187 + ] + }, + { + "teal": 113, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 188, + 189 + ] + }, + { + "teal": 114, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 190 + ] + }, + { + "teal": 115, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 191 + ] + }, + { + "teal": 116, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 192, + 193 + ] + }, + { + "teal": 117, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 194 + ] + }, + { + "teal": 118, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 195 + ] + }, + { + "teal": 119, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 196 + ] + }, + { + "teal": 120, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 197, + 198, + 199 + ] + }, + { + "teal": 121, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 200, + 201 + ] + }, + { + "teal": 122, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 202, + 203 + ] + }, + { + "teal": 123, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 204 + ] + }, + { + "teal": 124, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 205 + ] + }, + { + "teal": 125, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 206, + 207 + ] + }, + { + "teal": 126, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 208, + 209 + ] + }, + { + "teal": 127, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 210, + 211 + ] + }, + { + "teal": 128, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 212, + 213 + ] + }, + { + "teal": 129, + "source": "tests/contracts/abi.algo.ts:1684", + "pc": [ + 214 + ] + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxCmJ5dGVjYmxvY2sgMHg2MjRkNjE3MCAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5SW5Cb3hXaXRob3V0Qm9vbCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94V2l0aG91dEJvb2w6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94V2l0aG91dEJvb2woKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3hXaXRob3V0Qm9vbAoJY29uY2F0Cglsb2cKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIG5lc3RlZEFycmF5SW5Cb3hXaXRob3V0Qm9vbCgpOiBUMTIKbmVzdGVkQXJyYXlJbkJveFdpdGhvdXRCb29sOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2ODgKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgfQoJYnl0ZWMgMCAvLyAgImJNYXAiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCBoZWFkCglieXRlYyAxIC8vICBpbml0aWFsIHRhaWwKCXB1c2hieXRlcyAweDAwMWEgLy8gaW5pdGlhbCBoZWFkIG9mZnNldAoJcHVzaGJ5dGVzIDB4MDAwMjYxNjI2MzY0NjU2NjY3NjgKCWNhbGxzdWIgKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAxCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAyCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAzCgljYWxsc3ViICpwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY5NQoJLy8gcmV0dXJuIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlOwoJYnl0ZWMgMCAvLyAgImJNYXAiCglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZQoJYXNzZXJ0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDAgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4ZmY1ZWZjMDIgLy8gbWV0aG9kICJuZXN0ZWRBcnJheUluQm94V2l0aG91dEJvb2woKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94V2l0aG91dEJvb2wKCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3ViCgoqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJZHVwCglsZW4KCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJYnRvaQoJKwoJaXRvYgoJZXh0cmFjdCA2IDIKCWZyYW1lX2J1cnkgLTIgLy8gaGVhZCBvZmZzZXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglzd2FwCgljb25jYXQKCWZyYW1lX2J1cnkgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1Yg==", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "byteCode": { + "approval": "CiABASYCBGJNYXAAMRgUgQYLMRkIjQwAaAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAgAQVH3x1iAAEULAiQ4oAAShJvEgpKYACABqACgACYWJjZGVmZ2iIAFmACAAAAAAAAAABiAA/gAgAAAAAAAAAAogAMoAIAAAAAAAAAAOIACVIUL8ovkSJIkOABLhEezY2GgCOAf/xAIAE/178AjYaAI4B/4wAigQDi/yL/1CL/Yv+iYoEA4v8i/5QjPyL/0kVi/4XCBZXBgKM/ov9TFCM/Yv8i/2L/ok=", + "clear": "Cg==" + }, + "compilerInfo": { + "compiler": "algod", + "compilerVersion": { + "major": 3, + "minor": 27, + "patch": 0, + "commitHash": "f54f0997" + } + } +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.clear.teal b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.clear.teal new file mode 100644 index 000000000..e9f1d65b3 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxWithoutBool.clear.teal @@ -0,0 +1 @@ +#pragma version 10 \ No newline at end of file From 232162efcb989ad39afb00d22470bbd875b99218 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Tue, 17 Dec 2024 15:36:45 -0500 Subject: [PATCH 05/11] nestedArrayAlongsideBoolean --- tests/abi.test.ts | 12 + tests/contracts/abi.algo.ts | 16 + ...tNestedArrayAlongsideBoolean.approval.teal | 134 +++ ...TestNestedArrayAlongsideBoolean.arc32.json | 65 ++ ...ITestNestedArrayAlongsideBoolean.arc4.json | 20 + ...TestNestedArrayAlongsideBoolean.arc56.json | 829 ++++++++++++++++++ ...TestNestedArrayAlongsideBoolean.clear.teal | 1 + 7 files changed, 1077 insertions(+) create mode 100644 tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal create mode 100644 tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc4.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json create mode 100644 tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.clear.teal diff --git a/tests/abi.test.ts b/tests/abi.test.ts index cf235c363..10e295c3e 100644 --- a/tests/abi.test.ts +++ b/tests/abi.test.ts @@ -962,4 +962,16 @@ describe('ABI', function () { 3n, ]); }); + + test('nestedArrayAlongsideBoolean', async () => { + const { appClient } = await compileAndCreate('nestedArrayAlongsideBoolean'); + + expect(await runMethod(appClient, 'nestedArrayAlongsideBoolean')).toEqual([ + [[...Buffer.from('abcd')], [...Buffer.from('efgh')]], + 1n, + 2n, + 3n, + false, + ]); + }); }); diff --git a/tests/contracts/abi.algo.ts b/tests/contracts/abi.algo.ts index 598abe683..e3e2bd5a3 100644 --- a/tests/contracts/abi.algo.ts +++ b/tests/contracts/abi.algo.ts @@ -1695,3 +1695,19 @@ class ABITestNestedArrayInBoxWithoutBool extends Contract { return this.bMap('bMap').value; } } + +class ABITestNestedArrayAlongsideBoolean extends Contract { + gMap = GlobalStateMap({ maxKeys: 1 }); + + nestedArrayAlongsideBoolean(): T10 { + const o: T10 = { + bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], + u64a: 1, + u64b: 2, + u64c: 3, + boolValue: false, + }; + + return o; + } +} diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal new file mode 100644 index 000000000..d19b13ea4 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal @@ -0,0 +1,134 @@ +#pragma version 10 +intcblock 0 1 +bytecblock 0x + +// This TEAL was generated by TEALScript v0.106.0 +// https://github.com/algorandfoundation/TEALScript + +// This contract is compliant with and/or implements the following ARCs: [ ARC4 ] + +// The following ten lines of TEAL handle initial program flow +// This pattern is used to make it easy for anyone to parse the start of the program and determine if a specific action is allowed +// Here, action refers to the OnComplete in combination with whether the app is being created or called +// Every possible action for this contract is represented in the switch statement +// If the action is not implemented in the contract, its respective branch will be "*NOT_IMPLEMENTED" which just contains "err" +txn ApplicationID +! +pushint 6 +* +txn OnCompletion ++ +switch *call_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *create_NoOp *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED *NOT_IMPLEMENTED + +*NOT_IMPLEMENTED: + // The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID? + err + +// nestedArrayAlongsideBoolean()(byte[4][],uint64,uint64,uint64,bool) +*abi_route_nestedArrayAlongsideBoolean: + // The ABI return prefix + pushbytes 0x151f7c75 + + // execute nestedArrayAlongsideBoolean()(byte[4][],uint64,uint64,uint64,bool) + callsub nestedArrayAlongsideBoolean + concat + log + intc 1 // 1 + return + +// nestedArrayAlongsideBoolean(): T10 +nestedArrayAlongsideBoolean: + proto 0 1 + + // Push empty bytes after the frame pointer to reserve space for local variables + bytec 0 // 0x + + // tests/contracts/abi.algo.ts:1703 + // o: T10 = { + // bytes4Array: ['abcd' as bytes<4>, 'efgh' as bytes<4>], + // u64a: 1, + // u64b: 2, + // u64c: 3, + // boolValue: false, + // } + bytec 0 // initial head + bytec 0 // initial tail + pushbytes 0x001a // initial head offset + pushbytes 0x00026162636465666768 + callsub *process_dynamic_tuple_element + pushbytes 0x0000000000000001 + callsub *process_static_tuple_element + pushbytes 0x0000000000000002 + callsub *process_static_tuple_element + pushbytes 0x0000000000000003 + callsub *process_static_tuple_element + pushbytes 0x00 + intc 0 // 0 + dup + setbit + callsub *process_static_tuple_element + concat + pop // pop head offset + concat // concat head and tail + frame_bury 0 // o: T10 + + // tests/contracts/abi.algo.ts:1711 + // return o; + frame_dig 0 // o: T10 + + // set the subroutine return value + frame_bury 0 + retsub + +*abi_route_createApplication: + intc 1 // 1 + return + +*create_NoOp: + pushbytes 0xb8447b36 // method "createApplication()void" + txna ApplicationArgs 0 + match *abi_route_createApplication + + // this contract does not implement the given ABI method for create NoOp + err + +*call_NoOp: + pushbytes 0xc49cb9a7 // method "nestedArrayAlongsideBoolean()(byte[4][],uint64,uint64,uint64,bool)" + txna ApplicationArgs 0 + match *abi_route_nestedArrayAlongsideBoolean + + // this contract does not implement the given ABI method for call NoOp + err + +*process_static_tuple_element: + proto 4 3 + frame_dig -4 // tuple head + frame_dig -1 // element + concat + frame_dig -3 // tuple tail + frame_dig -2 // head offset + retsub + +*process_dynamic_tuple_element: + proto 4 3 + frame_dig -4 // tuple head + frame_dig -2 // head offset + concat + frame_bury -4 // tuple head + frame_dig -1 // element + dup + len + frame_dig -2 // head offset + btoi + + + itob + extract 6 2 + frame_bury -2 // head offset + frame_dig -3 // tuple tail + swap + concat + frame_bury -3 // tuple tail + frame_dig -4 // tuple head + frame_dig -3 // tuple tail + frame_dig -2 // head offset + retsub \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json new file mode 100644 index 000000000..fdec5f9d0 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json @@ -0,0 +1,65 @@ +{ + "hints": { + "nestedArrayAlongsideBoolean()(byte[4][],uint64,uint64,uint64,bool)": { + "call_config": { + "no_op": "CALL" + } + }, + "createApplication()void": { + "call_config": { + "no_op": "CREATE" + } + } + }, + "bare_call_config": { + "no_op": "NEVER", + "opt_in": "NEVER", + "close_out": "NEVER", + "update_application": "NEVER", + "delete_application": "NEVER" + }, + "schema": { + "local": { + "declared": {}, + "reserved": {} + }, + "global": { + "declared": {}, + "reserved": {} + } + }, + "state": { + "global": { + "num_byte_slices": 1, + "num_uints": 0 + }, + "local": { + "num_byte_slices": 0, + "num_uints": 0 + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCWNvbmNhdAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglmcmFtZV9idXJ5IDAgLy8gbzogVDEwCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MTEKCS8vIHJldHVybiBvOwoJZnJhbWVfZGlnIDAgLy8gbzogVDEwCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YzQ5Y2I5YTcgLy8gbWV0aG9kICJuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "contract": { + "name": "ABITestNestedArrayAlongsideBoolean", + "desc": "", + "methods": [ + { + "name": "nestedArrayAlongsideBoolean", + "args": [], + "returns": { + "type": "(byte[4][],uint64,uint64,uint64,bool)" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] + } +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc4.json b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc4.json new file mode 100644 index 000000000..3806e7703 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc4.json @@ -0,0 +1,20 @@ +{ + "name": "ABITestNestedArrayAlongsideBoolean", + "desc": "", + "methods": [ + { + "name": "nestedArrayAlongsideBoolean", + "args": [], + "returns": { + "type": "(byte[4][],uint64,uint64,uint64,bool)" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json new file mode 100644 index 000000000..41db762f6 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json @@ -0,0 +1,829 @@ +{ + "name": "ABITestNestedArrayAlongsideBoolean", + "desc": "", + "methods": [ + { + "name": "nestedArrayAlongsideBoolean", + "args": [], + "returns": { + "type": "(byte[4][],uint64,uint64,uint64,bool)", + "struct": "T10" + }, + "actions": { + "create": [], + "call": [ + "NoOp" + ] + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + }, + "actions": { + "create": [ + "NoOp" + ], + "call": [] + } + } + ], + "arcs": [ + 4, + 56 + ], + "structs": { + "T10": [ + { + "name": "bytes4Array", + "type": "byte[4][]" + }, + { + "name": "u64a", + "type": "uint64" + }, + { + "name": "u64b", + "type": "uint64" + }, + { + "name": "u64c", + "type": "uint64" + }, + { + "name": "boolValue", + "type": "bool" + } + ] + }, + "state": { + "schema": { + "global": { + "bytes": 1, + "ints": 0 + }, + "local": { + "bytes": 0, + "ints": 0 + } + }, + "keys": { + "global": {}, + "local": {}, + "box": {} + }, + "maps": { + "global": { + "gMap": { + "keyType": "AVMBytes", + "valueType": "T10" + } + }, + "local": {}, + "box": {} + } + }, + "bareActions": { + "create": [], + "call": [] + }, + "sourceInfo": { + "approval": { + "sourceInfo": [ + { + "teal": 1, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 0 + ] + }, + { + "teal": 2, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 1, + 2, + 3, + 4 + ] + }, + { + "teal": 3, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 5, + 6, + 7 + ] + }, + { + "teal": 15, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 8, + 9 + ] + }, + { + "teal": 16, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 10 + ] + }, + { + "teal": 17, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 11, + 12 + ] + }, + { + "teal": 18, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 13 + ] + }, + { + "teal": 19, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 14, + 15 + ] + }, + { + "teal": 20, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 16 + ] + }, + { + "teal": 21, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42 + ] + }, + { + "teal": 25, + "source": "tests/contracts/abi.algo.ts:1699", + "errorMessage": "The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?", + "pc": [ + 43 + ] + }, + { + "teal": 30, + "source": "tests/contracts/abi.algo.ts:1702", + "pc": [ + 44, + 45, + 46, + 47, + 48, + 49 + ] + }, + { + "teal": 33, + "source": "tests/contracts/abi.algo.ts:1702", + "pc": [ + 50, + 51, + 52 + ] + }, + { + "teal": 34, + "source": "tests/contracts/abi.algo.ts:1702", + "pc": [ + 53 + ] + }, + { + "teal": 35, + "source": "tests/contracts/abi.algo.ts:1702", + "pc": [ + 54 + ] + }, + { + "teal": 36, + "source": "tests/contracts/abi.algo.ts:1702", + "pc": [ + 55 + ] + }, + { + "teal": 37, + "source": "tests/contracts/abi.algo.ts:1702", + "pc": [ + 56 + ] + }, + { + "teal": 41, + "source": "tests/contracts/abi.algo.ts:1702", + "pc": [ + 57, + 58, + 59 + ] + }, + { + "teal": 44, + "source": "tests/contracts/abi.algo.ts:1702", + "pc": [ + 60 + ] + }, + { + "teal": 54, + "source": "tests/contracts/abi.algo.ts:1703", + "pc": [ + 61 + ] + }, + { + "teal": 55, + "source": "tests/contracts/abi.algo.ts:1703", + "pc": [ + 62 + ] + }, + { + "teal": 56, + "source": "tests/contracts/abi.algo.ts:1703", + "pc": [ + 63, + 64, + 65, + 66 + ] + }, + { + "teal": 57, + "source": "tests/contracts/abi.algo.ts:1704", + "pc": [ + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78 + ] + }, + { + "teal": 58, + "source": "tests/contracts/abi.algo.ts:1704", + "pc": [ + 79, + 80, + 81 + ] + }, + { + "teal": 59, + "source": "tests/contracts/abi.algo.ts:1705", + "pc": [ + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91 + ] + }, + { + "teal": 60, + "source": "tests/contracts/abi.algo.ts:1705", + "pc": [ + 92, + 93, + 94 + ] + }, + { + "teal": 61, + "source": "tests/contracts/abi.algo.ts:1706", + "pc": [ + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104 + ] + }, + { + "teal": 62, + "source": "tests/contracts/abi.algo.ts:1706", + "pc": [ + 105, + 106, + 107 + ] + }, + { + "teal": 63, + "source": "tests/contracts/abi.algo.ts:1707", + "pc": [ + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117 + ] + }, + { + "teal": 64, + "source": "tests/contracts/abi.algo.ts:1707", + "pc": [ + 118, + 119, + 120 + ] + }, + { + "teal": 65, + "source": "tests/contracts/abi.algo.ts:1708", + "pc": [ + 121, + 122, + 123 + ] + }, + { + "teal": 66, + "source": "tests/contracts/abi.algo.ts:1708", + "pc": [ + 124 + ] + }, + { + "teal": 67, + "source": "tests/contracts/abi.algo.ts:1708", + "pc": [ + 125 + ] + }, + { + "teal": 68, + "source": "tests/contracts/abi.algo.ts:1708", + "pc": [ + 126 + ] + }, + { + "teal": 69, + "source": "tests/contracts/abi.algo.ts:1703", + "pc": [ + 127, + 128, + 129 + ] + }, + { + "teal": 70, + "source": "tests/contracts/abi.algo.ts:1703", + "pc": [ + 130 + ] + }, + { + "teal": 71, + "source": "tests/contracts/abi.algo.ts:1703", + "pc": [ + 131 + ] + }, + { + "teal": 72, + "source": "tests/contracts/abi.algo.ts:1703", + "pc": [ + 132 + ] + }, + { + "teal": 73, + "source": "tests/contracts/abi.algo.ts:1703", + "pc": [ + 133, + 134 + ] + }, + { + "teal": 77, + "source": "tests/contracts/abi.algo.ts:1711", + "pc": [ + 135, + 136 + ] + }, + { + "teal": 80, + "source": "tests/contracts/abi.algo.ts:1702", + "pc": [ + 137, + 138 + ] + }, + { + "teal": 81, + "source": "tests/contracts/abi.algo.ts:1702", + "pc": [ + 139 + ] + }, + { + "teal": 84, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 140 + ] + }, + { + "teal": 85, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 141 + ] + }, + { + "teal": 88, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 142, + 143, + 144, + 145, + 146, + 147 + ] + }, + { + "teal": 89, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 148, + 149, + 150 + ] + }, + { + "teal": 90, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 151, + 152, + 153, + 154 + ] + }, + { + "teal": 93, + "source": "tests/contracts/abi.algo.ts:1699", + "errorMessage": "this contract does not implement the given ABI method for create NoOp", + "pc": [ + 155 + ] + }, + { + "teal": 96, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 156, + 157, + 158, + 159, + 160, + 161 + ] + }, + { + "teal": 97, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 162, + 163, + 164 + ] + }, + { + "teal": 98, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 165, + 166, + 167, + 168 + ] + }, + { + "teal": 101, + "source": "tests/contracts/abi.algo.ts:1699", + "errorMessage": "this contract does not implement the given ABI method for call NoOp", + "pc": [ + 169 + ] + }, + { + "teal": 104, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 170, + 171, + 172 + ] + }, + { + "teal": 105, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 173, + 174 + ] + }, + { + "teal": 106, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 175, + 176 + ] + }, + { + "teal": 107, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 177 + ] + }, + { + "teal": 108, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 178, + 179 + ] + }, + { + "teal": 109, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 180, + 181 + ] + }, + { + "teal": 110, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 182 + ] + }, + { + "teal": 113, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 183, + 184, + 185 + ] + }, + { + "teal": 114, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 186, + 187 + ] + }, + { + "teal": 115, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 188, + 189 + ] + }, + { + "teal": 116, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 190 + ] + }, + { + "teal": 117, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 191, + 192 + ] + }, + { + "teal": 118, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 193, + 194 + ] + }, + { + "teal": 119, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 195 + ] + }, + { + "teal": 120, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 196 + ] + }, + { + "teal": 121, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 197, + 198 + ] + }, + { + "teal": 122, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 199 + ] + }, + { + "teal": 123, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 200 + ] + }, + { + "teal": 124, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 201 + ] + }, + { + "teal": 125, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 202, + 203, + 204 + ] + }, + { + "teal": 126, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 205, + 206 + ] + }, + { + "teal": 127, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 207, + 208 + ] + }, + { + "teal": 128, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 209 + ] + }, + { + "teal": 129, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 210 + ] + }, + { + "teal": 130, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 211, + 212 + ] + }, + { + "teal": 131, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 213, + 214 + ] + }, + { + "teal": 132, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 215, + 216 + ] + }, + { + "teal": 133, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 217, + 218 + ] + }, + { + "teal": 134, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 219 + ] + } + ], + "pcOffsetMethod": "none" + }, + "clear": { + "sourceInfo": [], + "pcOffsetMethod": "none" + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCWNvbmNhdAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglmcmFtZV9idXJ5IDAgLy8gbzogVDEwCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MTEKCS8vIHJldHVybiBvOwoJZnJhbWVfZGlnIDAgLy8gbzogVDEwCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YzQ5Y2I5YTcgLy8gbWV0aG9kICJuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "byteCode": { + "approval": "CiACAAEmAQAxGBSBBgsxGQiNDABxAAAAAAAAAAAAAABjAAAAAAAAAAAAAACABBUffHWIAARQsCNDigABKCgogAIAGoAKAAJhYmNkZWZnaIgAZYAIAAAAAAAAAAGIAEuACAAAAAAAAAACiAA+gAgAAAAAAAAAA4gAMYABACJJVIgAKFBIUIwAiwCMAIkjQ4AEuER7NjYaAI4B//EAgATEnLmnNhoAjgH/gwCKBAOL/Iv/UIv9i/6JigQDi/yL/lCM/Iv/SRWL/hcIFlcGAoz+i/1MUIz9i/yL/Yv+iQ==", + "clear": "Cg==" + }, + "compilerInfo": { + "compiler": "algod", + "compilerVersion": { + "major": 3, + "minor": 27, + "patch": 0, + "commitHash": "f54f0997" + } + } +} \ No newline at end of file diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.clear.teal b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.clear.teal new file mode 100644 index 000000000..e9f1d65b3 --- /dev/null +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.clear.teal @@ -0,0 +1 @@ +#pragma version 10 \ No newline at end of file From 3c5165457b92e8be63cffaeecd543d23d8a24725 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Tue, 17 Dec 2024 17:01:17 -0500 Subject: [PATCH 06/11] pushing progress in case my laptop spontaneously combusts (WIP) First problem of extra concat is solved, but now the problem is that the head offset is off by one byte (0x0024 with bool, 0x0025 with uint8). I think the problem is that the initial head offset is calculated before processing the boolean values, resulting in them not being accounted for in the offset. --- bool.log | 255 +++++++++++++++++ bool_2.log | 254 +++++++++++++++++ bun.lockb | Bin 280329 -> 280281 bytes src/lib/compiler.ts | 2 +- tests/common.ts | 127 ++++++++- tests/contracts/abi.algo.ts | 8 +- .../ABITestBoolInNestedTuple.approval.teal | 2 +- .../ABITestBoolInNestedTuple.arc32.json | 2 +- .../ABITestBoolInNestedTuple.arc56.json | 2 +- .../ABITestBooleanLastInObj.approval.teal | 2 +- .../ABITestBooleanLastInObj.arc32.json | 2 +- .../ABITestBooleanLastInObj.arc56.json | 2 +- ...tNestedArrayAlongsideBoolean.approval.teal | 1 - ...TestNestedArrayAlongsideBoolean.arc32.json | 2 +- ...TestNestedArrayAlongsideBoolean.arc56.json | 171 ++++++------ .../ABITestNestedArrayInBox.approval.teal | 1 - .../ABITestNestedArrayInBox.arc32.json | 2 +- .../ABITestNestedArrayInBox.arc56.json | 161 ++++++----- u64.log | 252 +++++++++++++++++ u8.log | 257 ++++++++++++++++++ u8_2.log | 251 +++++++++++++++++ 21 files changed, 1560 insertions(+), 196 deletions(-) create mode 100644 bool.log create mode 100644 bool_2.log create mode 100644 u64.log create mode 100644 u8.log create mode 100644 u8_2.log diff --git a/bool.log b/bool.log new file mode 100644 index 000000000..a42470c5d --- /dev/null +++ b/bool.log @@ -0,0 +1,255 @@ +bun test v1.1.38 (bf2f153f) + +tests/abi.test.ts: +(skip) ABI > E2E > staticArray +(skip) ABI > E2E > returnStaticArray +(skip) ABI > E2E > staticArrayArg +(skip) ABI > E2E > nonLiteralStaticArrayElements +(skip) ABI > E2E > mixedStaticArrayElements +(skip) ABI > E2E > nonLiteralStaticArrayAccess +(skip) ABI > E2E > setStaticArrayElement +(skip) ABI > E2E > staticArrayInStorageRef +(skip) ABI > E2E > updateStaticArrayInStorageRef +(skip) ABI > E2E > staticArrayInStorageMap +(skip) ABI > E2E > updateStaticArrayInStorageMap +(skip) ABI > E2E > nestedStaticArray +(skip) ABI > E2E > updateNestedStaticArrayElement +(skip) ABI > E2E > updateNestedStaticArray +(skip) ABI > E2E > threeDimensionalUint16Array +(skip) ABI > E2E > simpleTuple +(skip) ABI > E2E > arrayInTuple +(skip) ABI > E2E > tupleInArray +(skip) ABI > E2E > tupleInTuple +(skip) ABI > E2E > shortTypeNotation +(skip) ABI > E2E > disgusting +(skip) ABI > E2E > returnTuple +(skip) ABI > E2E > tupleArg +(skip) ABI > E2E > dynamicArray +(skip) ABI > E2E > returnDynamicArray +(skip) ABI > E2E > dynamicArrayArg +(skip) ABI > E2E > updateDynamicArrayElement +(skip) ABI > E2E > dynamicTupleArray +(skip) ABI > E2E > returnTupleWithDyamicArray +(skip) ABI > E2E > returnDynamicArrayFromTuple +(skip) ABI > E2E > updateDynamicArrayInTuple +(skip) ABI > E2E > nonLiteralDynamicElementInTuple +(skip) ABI > E2E > arrayPush +(skip) ABI > E2E > arrayPop +(skip) ABI > E2E > arrayPopValue +(skip) ABI > E2E > arraySplice +(skip) ABI > E2E > arraySpliceValue +(skip) ABI > E2E > dynamicArrayElements +(skip) ABI > E2E > spliceLastElement +(skip) ABI > E2E > spliceLastElementValue +(skip) ABI > E2E > spliceFirstElement +(skip) ABI > E2E > spliceFirstElementValue +(skip) ABI > E2E > stringReturn +(skip) ABI > E2E > stringArg +(skip) ABI > E2E > stringInTuple +(skip) ABI > E2E > accesStringInTuple +(skip) ABI > E2E > updateStringInTuple +(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes +(skip) ABI > E2E > shortenDynamicElementInTuple +(skip) ABI > E2E > namedTuple +(skip) ABI > E2E > updateNamedTuple +(skip) ABI > E2E > customTypes +(skip) ABI > E2E > staticStringArrayArg +(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray +(skip) ABI > E2E > dynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayElementInTuple +(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > nestedTuple +(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength +(skip) ABI > E2E > accessDynamicStringArray +(skip) ABI > E2E > txnTypes +(skip) ABI > E2E > arrayLength +(skip) ABI > E2E > stringLength +(skip) ABI > E2E > arrayRef +(skip) ABI > E2E > nestedArrayRef +(skip) ABI > E2E > nonLiteralNestedArrayRef +(skip) ABI > E2E > multiNestedArrayRef +(skip) ABI > E2E > objectArrayRef +(skip) ABI > E2E > stringAccessor +(skip) ABI > E2E > emptyStaticArray +(skip) ABI > E2E > partialStaticArray +(skip) ABI > E2E > emptyDynamicArray +(skip) ABI > E2E > booleanArgAndReturn +(skip) ABI > E2E > boolTuple +(skip) ABI > E2E > staticBoolArray +(skip) ABI > E2E > boolTupleAccess +(skip) ABI > E2E > staticBoolArrayAccess +(skip) ABI > E2E > dynamicBoolArray +(skip) ABI > E2E > dynamicBoolArrayAccess +(skip) ABI > E2E > staticBoolArrayUpdate +(skip) ABI > E2E > dynamicBoolArrayUpdate +(skip) ABI > E2E > boolTupleUpdate +(skip) ABI > E2E > objectRef +(skip) ABI > E2E > storageRefKey +(skip) ABI > E2E > storageRefAccount +(skip) ABI > E2E > angularCasting +(skip) ABI > E2E > castBytesFunction +(skip) ABI > E2E > rawBytesFunction +(skip) ABI > E2E > globalMethodInChain +(skip) ABI > E2E > opcodeParamFromObject +(skip) ABI > E2E > arrayInObjectInState +(skip) ABI > E2E > nestedObject +(skip) ABI > E2E > updateArrayRefInBoxStorage +(skip) ABI > E2E > extractUint +(skip) ABI > E2E > bytesReturn +(skip) ABI > E2E > nestedTypesInSignature +(skip) ABI > E2E > maxUfixed +(skip) ABI > E2E > chainedPropertyAfterTuple +(skip) ABI > E2E > uintCasting +(skip) ABI > E2E > uint64Casting +(skip) ABI > E2E > bytesCasting +(skip) ABI > E2E > biggerByteCasting +(skip) ABI > E2E > smallerByteCasting +(skip) ABI > E2E > multiBytesTuple +(skip) ABI > E2E > boolInObj +(skip) ABI > E2E > plusEqualsArrayValue +(skip) ABI > E2E > plusEqualsObjValue +(skip) ABI > E2E > plusEqualsObjValueInBox +(skip) ABI > E2E > uintNComparison +(skip) ABI > E2E > booleanLastInObj +(skip) ABI > E2E > nestedStructInBoxMap +(skip) ABI > E2E > staticForEach +(skip) ABI > E2E > nestedStaticForEach +(skip) ABI > E2E > nestedStaticForEachInBox +(skip) ABI > E2E > largeNestedStaticForEachInBox +(skip) ABI > E2E > forEachReturn +(skip) ABI > E2E > staticArrayLength +(skip) ABI > E2E > objectInArgs +(skip) ABI > E2E > nestedStaticArrayLength +(skip) ABI > E2E > nestedArrayLengthInObjectVariable +(skip) ABI > staticForOf +(skip) ABI > largeNestedStaticForOfInBox +(skip) ABI > forOfContinue +(skip) ABI > forOfBreak +(skip) ABI > accessStaticArrayInBoxInVariable +(skip) ABI > staticTypeInBox +(skip) ABI > storagePropertyReferenceInBox +(skip) ABI > pushToArrayInBox +(skip) ABI > updateStaticFieldInDynamicObjectInBox +(skip) ABI > dynamicArrayLength +(skip) ABI > dynamicArrayIteration +(skip) ABI > postBoolTupleOffset +(skip) ABI > nestedArrayInBox +(skip) ABI > nestedArrayInBoxLast +(skip) ABI > nestedArrayInBoxWithoutBool +Received error executing Atomic Transaction Composer, for more information enable the debug flag +TEAL | PC | STACK +-------------------------------|------|------- +intcblock 0 1 | 1 | [] +bytecblock 0x | 5 | [] +txn ApplicationID | 8 | [2608] +! | 10 | [0] +pushint 6 | 11 | [0,6] +* | 13 | [0] +txn OnCompletion | 14 | [0,0] ++ | 16 | [0] +switch *call_NoOp *NOT_IMPL... | 17 | [] +pushbytes 0xc49cb9a7 // met... | 156 | [0xc49cb9a7] +txna ApplicationArgs 0 | 162 | [0xc49cb9a7,0xc49cb9a7] +match *abi_route_nestedArra... | 165 | [] +pushbytes 0x151f7c75 | 44 | [0x151f7c75] +callsub nestedArrayAlongsid... | 50 | [0x151f7c75] +proto 0 1 | 57 | [0x151f7c75] +bytec 0 // 0x | 60 | [0x151f7c75,0] +bytec 0 // initial head | 61 | [0x151f7c75,0,0] +bytec 0 // initial tail | 62 | [0x151f7c75,0,0,0] +pushbytes 0x001a // initial... | 63 | [0x151f7c75,0,0,0,0x001a] +pushbytes 0x000261626364656... | 67 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +callsub *process_dynamic_tu... | 79 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +proto 4 3 | 183 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +frame_dig -4 // tuple head | 186 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0] +frame_dig -2 // head offset | 188 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0,0x001a] +concat | 190 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0x001a] +frame_bury -4 // tuple head | 191 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768] +frame_dig -1 // element | 193 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768] +dup | 195 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] +len | 196 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10] +frame_dig -2 // head offset | 197 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,0x001a] +btoi | 199 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,26] ++ | 200 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,36] +itob | 201 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0000000000000024] +extract 6 2 | 202 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0024] +frame_bury -2 // head offset | 205 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] +frame_dig -3 // tuple tail | 207 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768,0] +swap | 209 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0,0x00026162636465666768] +concat | 210 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] +frame_bury -3 // tuple tail | 211 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768] +frame_dig -4 // tuple head | 213 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a] +frame_dig -3 // tuple tail | 215 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768] +frame_dig -2 // head offset | 217 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768,0x0024] +retsub | 219 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000001 | 82 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +callsub *process_static_tup... | 92 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +proto 4 3 | 170 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a] +frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a,0x0000000000000001] +concat | 177 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001] +frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768] +frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768,0x0024] +retsub | 182 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000002 | 95 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +callsub *process_static_tup... | 105 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +proto 4 3 | 170 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001] +frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001,0x0000000000000002] +concat | 177 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002] +frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768] +frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] +retsub | 182 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000003 | 108 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +callsub *process_static_tup... | 118 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +proto 4 3 | 170 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002] +frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002,0x0000000000000003] +concat | 177 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003] +frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768] +frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] +retsub | 182 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] +pushbytes 0x00 | 121 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +intc 0 // 0 | 124 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0] +dup | 125 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0,0] +setbit | 126 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] + +callsub *process_static_tup... | 127 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +proto 4 3 | 170 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003] +frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003,0x00] +concat | 177 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300] +frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768] +frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] +retsub | 182 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] +concat | 130 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x000261626364656667680024] +pop // pop head offset | 131 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300] +concat // concat head and tail | 132 | [0x151f7c75,0x001a00000000000000010000000000000002000000000000000300] +frame_bury 0 // o: T10 | 133 | [0x151f7c75] +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: frame_bury above stack. at:72. Error during resource population simulation in transaction 0: transaction AJ655D3QX3FPHISBAYATEFN67MS2CTZY3IYXOYPNYASBUHL5OVJQ: logic eval error: frame_bury above stack. Details: app=2608, pc=133, opcodes=pop; concat; frame_bury 0 + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 + +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: frame_bury above stack. at:72. Error during resource population simulation in transaction 0: transaction AJ655D3QX3FPHISBAYATEFN67MS2CTZY3IYXOYPNYASBUHL5OVJQ: logic eval error: frame_bury above stack. Details: app=2608, pc=133, opcodes=pop; concat; frame_bury 0 + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 +(fail) ABI > nestedArrayAlongsideBoolean [1040.50ms] + + 0 pass + 136 skip + 1 fail + 3 expect() calls +Ran 137 tests across 1 files. [2.52s] diff --git a/bool_2.log b/bool_2.log new file mode 100644 index 000000000..f866a4e1f --- /dev/null +++ b/bool_2.log @@ -0,0 +1,254 @@ +bun test v1.1.38 (bf2f153f) + +tests/abi.test.ts: +(skip) ABI > E2E > staticArray +(skip) ABI > E2E > returnStaticArray +(skip) ABI > E2E > staticArrayArg +(skip) ABI > E2E > nonLiteralStaticArrayElements +(skip) ABI > E2E > mixedStaticArrayElements +(skip) ABI > E2E > nonLiteralStaticArrayAccess +(skip) ABI > E2E > setStaticArrayElement +(skip) ABI > E2E > staticArrayInStorageRef +(skip) ABI > E2E > updateStaticArrayInStorageRef +(skip) ABI > E2E > staticArrayInStorageMap +(skip) ABI > E2E > updateStaticArrayInStorageMap +(skip) ABI > E2E > nestedStaticArray +(skip) ABI > E2E > updateNestedStaticArrayElement +(skip) ABI > E2E > updateNestedStaticArray +(skip) ABI > E2E > threeDimensionalUint16Array +(skip) ABI > E2E > simpleTuple +(skip) ABI > E2E > arrayInTuple +(skip) ABI > E2E > tupleInArray +(skip) ABI > E2E > tupleInTuple +(skip) ABI > E2E > shortTypeNotation +(skip) ABI > E2E > disgusting +(skip) ABI > E2E > returnTuple +(skip) ABI > E2E > tupleArg +(skip) ABI > E2E > dynamicArray +(skip) ABI > E2E > returnDynamicArray +(skip) ABI > E2E > dynamicArrayArg +(skip) ABI > E2E > updateDynamicArrayElement +(skip) ABI > E2E > dynamicTupleArray +(skip) ABI > E2E > returnTupleWithDyamicArray +(skip) ABI > E2E > returnDynamicArrayFromTuple +(skip) ABI > E2E > updateDynamicArrayInTuple +(skip) ABI > E2E > nonLiteralDynamicElementInTuple +(skip) ABI > E2E > arrayPush +(skip) ABI > E2E > arrayPop +(skip) ABI > E2E > arrayPopValue +(skip) ABI > E2E > arraySplice +(skip) ABI > E2E > arraySpliceValue +(skip) ABI > E2E > dynamicArrayElements +(skip) ABI > E2E > spliceLastElement +(skip) ABI > E2E > spliceLastElementValue +(skip) ABI > E2E > spliceFirstElement +(skip) ABI > E2E > spliceFirstElementValue +(skip) ABI > E2E > stringReturn +(skip) ABI > E2E > stringArg +(skip) ABI > E2E > stringInTuple +(skip) ABI > E2E > accesStringInTuple +(skip) ABI > E2E > updateStringInTuple +(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes +(skip) ABI > E2E > shortenDynamicElementInTuple +(skip) ABI > E2E > namedTuple +(skip) ABI > E2E > updateNamedTuple +(skip) ABI > E2E > customTypes +(skip) ABI > E2E > staticStringArrayArg +(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray +(skip) ABI > E2E > dynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayElementInTuple +(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > nestedTuple +(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength +(skip) ABI > E2E > accessDynamicStringArray +(skip) ABI > E2E > txnTypes +(skip) ABI > E2E > arrayLength +(skip) ABI > E2E > stringLength +(skip) ABI > E2E > arrayRef +(skip) ABI > E2E > nestedArrayRef +(skip) ABI > E2E > nonLiteralNestedArrayRef +(skip) ABI > E2E > multiNestedArrayRef +(skip) ABI > E2E > objectArrayRef +(skip) ABI > E2E > stringAccessor +(skip) ABI > E2E > emptyStaticArray +(skip) ABI > E2E > partialStaticArray +(skip) ABI > E2E > emptyDynamicArray +(skip) ABI > E2E > booleanArgAndReturn +(skip) ABI > E2E > boolTuple +(skip) ABI > E2E > staticBoolArray +(skip) ABI > E2E > boolTupleAccess +(skip) ABI > E2E > staticBoolArrayAccess +(skip) ABI > E2E > dynamicBoolArray +(skip) ABI > E2E > dynamicBoolArrayAccess +(skip) ABI > E2E > staticBoolArrayUpdate +(skip) ABI > E2E > dynamicBoolArrayUpdate +(skip) ABI > E2E > boolTupleUpdate +(skip) ABI > E2E > objectRef +(skip) ABI > E2E > storageRefKey +(skip) ABI > E2E > storageRefAccount +(skip) ABI > E2E > angularCasting +(skip) ABI > E2E > castBytesFunction +(skip) ABI > E2E > rawBytesFunction +(skip) ABI > E2E > globalMethodInChain +(skip) ABI > E2E > opcodeParamFromObject +(skip) ABI > E2E > arrayInObjectInState +(skip) ABI > E2E > nestedObject +(skip) ABI > E2E > updateArrayRefInBoxStorage +(skip) ABI > E2E > extractUint +(skip) ABI > E2E > bytesReturn +(skip) ABI > E2E > nestedTypesInSignature +(skip) ABI > E2E > maxUfixed +(skip) ABI > E2E > chainedPropertyAfterTuple +(skip) ABI > E2E > uintCasting +(skip) ABI > E2E > uint64Casting +(skip) ABI > E2E > bytesCasting +(skip) ABI > E2E > biggerByteCasting +(skip) ABI > E2E > smallerByteCasting +(skip) ABI > E2E > multiBytesTuple +(skip) ABI > E2E > boolInObj +(skip) ABI > E2E > plusEqualsArrayValue +(skip) ABI > E2E > plusEqualsObjValue +(skip) ABI > E2E > plusEqualsObjValueInBox +(skip) ABI > E2E > uintNComparison +(skip) ABI > E2E > booleanLastInObj +(skip) ABI > E2E > nestedStructInBoxMap +(skip) ABI > E2E > staticForEach +(skip) ABI > E2E > nestedStaticForEach +(skip) ABI > E2E > nestedStaticForEachInBox +(skip) ABI > E2E > largeNestedStaticForEachInBox +(skip) ABI > E2E > forEachReturn +(skip) ABI > E2E > staticArrayLength +(skip) ABI > E2E > objectInArgs +(skip) ABI > E2E > nestedStaticArrayLength +(skip) ABI > E2E > nestedArrayLengthInObjectVariable +(skip) ABI > staticForOf +(skip) ABI > largeNestedStaticForOfInBox +(skip) ABI > forOfContinue +(skip) ABI > forOfBreak +(skip) ABI > accessStaticArrayInBoxInVariable +(skip) ABI > staticTypeInBox +(skip) ABI > storagePropertyReferenceInBox +(skip) ABI > pushToArrayInBox +(skip) ABI > updateStaticFieldInDynamicObjectInBox +(skip) ABI > dynamicArrayLength +(skip) ABI > dynamicArrayIteration +(skip) ABI > postBoolTupleOffset +(skip) ABI > nestedArrayInBox +(skip) ABI > nestedArrayInBoxLast +(skip) ABI > nestedArrayInBoxWithoutBool +Received error executing Atomic Transaction Composer, for more information enable the debug flag +TEAL | PC | STACK +-------------------------------|------|------- +intcblock 0 1 | 1 | [] +bytecblock 0x | 5 | [] +txn ApplicationID | 8 | [3359] +! | 10 | [0] +pushint 6 | 11 | [0,6] +* | 13 | [0] +txn OnCompletion | 14 | [0,0] ++ | 16 | [0] +switch *call_NoOp *NOT_IMPL... | 17 | [] +pushbytes 0xc49cb9a7 // met... | 157 | [0xc49cb9a7] +txna ApplicationArgs 0 | 163 | [0xc49cb9a7,0xc49cb9a7] +match *abi_route_nestedArra... | 166 | [] +pushbytes 0x151f7c75 | 44 | [0x151f7c75] +callsub nestedArrayAlongsid... | 50 | [0x151f7c75] +proto 0 1 | 57 | [0x151f7c75] +bytec 0 // 0x | 60 | [0x151f7c75,0] +bytec 0 // initial head | 61 | [0x151f7c75,0,0] +bytec 0 // initial tail | 62 | [0x151f7c75,0,0,0] +pushbytes 0x001a // initial... | 63 | [0x151f7c75,0,0,0,0x001a] +pushbytes 0x000261626364656... | 67 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +callsub *process_dynamic_tu... | 79 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +proto 4 3 | 184 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] +frame_dig -4 // tuple head | 187 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0] +frame_dig -2 // head offset | 189 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0,0x001a] +concat | 191 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0x001a] +frame_bury -4 // tuple head | 192 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768] +frame_dig -1 // element | 194 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768] +dup | 196 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] +len | 197 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10] +frame_dig -2 // head offset | 198 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,0x001a] +btoi | 200 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,26] ++ | 201 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,36] +itob | 202 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0000000000000024] +extract 6 2 | 203 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0024] +frame_bury -2 // head offset | 206 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] +frame_dig -3 // tuple tail | 208 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768,0] +swap | 210 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0,0x00026162636465666768] +concat | 211 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] +frame_bury -3 // tuple tail | 212 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768] +frame_dig -4 // tuple head | 214 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a] +frame_dig -3 // tuple tail | 216 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768] +frame_dig -2 // head offset | 218 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768,0x0024] +retsub | 220 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000001 | 82 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +callsub *process_static_tup... | 92 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +proto 4 3 | 171 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] +frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a] +frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a,0x0000000000000001] +concat | 178 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001] +frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768] +frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768,0x0024] +retsub | 183 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000002 | 95 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +callsub *process_static_tup... | 105 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +proto 4 3 | 171 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] +frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001] +frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001,0x0000000000000002] +concat | 178 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002] +frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768] +frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] +retsub | 183 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] +pushbytes 0x0000000000000003 | 108 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +callsub *process_static_tup... | 118 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +proto 4 3 | 171 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] +frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002] +frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002,0x0000000000000003] +concat | 178 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003] +frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768] +frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] +retsub | 183 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] +pushbytes 0x00 | 121 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +intc 0 // 0 | 124 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0] +dup | 125 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0,0] +setbit | 126 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +callsub *process_static_tup... | 127 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +proto 4 3 | 171 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] +frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003] +frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003,0x00] +concat | 178 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300] +frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768] +frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] +retsub | 183 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] +pop // pop head offset | 130 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768] +concat // concat head and tail | 131 | [0x151f7c75,0,0x001a0000000000000001000000000000000200000000000000030000026162636465666768] +frame_bury 0 // o: T10 | 132 | [0x151f7c75,0x001a0000000000000001000000000000000200000000000000030000026162636465666768] +intc 0 // 0 | 134 | [0x151f7c75,0x001a0000000000000001000000000000000200000000000000030000026162636465666768,0] +assert | 135 | [0x151f7c75,0x001a0000000000000001000000000000000200000000000000030000026162636465666768] +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=135. at:76. Error during resource population simulation in transaction 0: transaction ONARQYW7XPG7SRUNYRS55TD3Y53HJKP2Y44MJZ34NNZGZJTAHDWA: logic eval error: assert failed pc=135. Details: app=3359, pc=135, opcodes=frame_bury 0; intc_0 // 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 + +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=135. at:76. Error during resource population simulation in transaction 0: transaction ONARQYW7XPG7SRUNYRS55TD3Y53HJKP2Y44MJZ34NNZGZJTAHDWA: logic eval error: assert failed pc=135. Details: app=3359, pc=135, opcodes=frame_bury 0; intc_0 // 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 +(fail) ABI > nestedArrayAlongsideBoolean [1022.31ms] + + 0 pass + 136 skip + 1 fail +Ran 137 tests across 1 files. [2.34s] diff --git a/bun.lockb b/bun.lockb index 4fec91c2c1f6c5ab93989eb70ad3a20e49575b6c..396111c49ab39a0b98a8336477ff3f3bc67c1550 100755 GIT binary patch delta 1758 zcmYMzZA^|)7zgnCxgXIJ;aTrPY7|zDhQ;t9UucU*guJB}N~mU)Mf4O>>76)P-ZCT2 zN+oxj4^55l=B<)V%U1cK+K^uGzv{m^d(O^ve%I-`&pG#9VX3vN#9F@H6qaktvzc0K zx<|b!TqV})Vb(NV(@fg`mZo0T>n@wp$!28cFq=V}f%#n8X_%~WK%Y-LqpS@mahA(x zfxVc@qB&yjO*==kV4fv)(9Ww^DUr?8Y|tyj((E+Z)oWS~%^8-!61l2TN?c%S9#Tn6 zU8Ko|!)TXiR+x>Jr%X>#;xbb%NR8sKa{hdpE8;P^0JH*{8{%wCglq#LK2c({8BHMwC!YEdi(VnyP3^VW(&}Vfbl&=ut4a>S|RXC2n!K zR35=y%5~kQEl2zU=azfALtBBk5hizXSM^GXdrSp@TzO43v_O~}?LJK2RuH-e?V$>8 zLWxIQz7i=PrfO-cV7|1+FbRXv{b^5Bu9T=}YBf>;Of|B^8dwmmiMAFtfiA6Cy+Mi4 zXH12Fs-_Z})`ZiiCz-;(6>un}`1aoisw=&;Fdq>-exw{lWdry-! zUbGJwC5%M(rgdVJ?`k*t23i+w53FnYh<2@;xEI*NbAO^m!Q|_e)`L;r$Ub!WdN*VI zf>9o_A6>p)X}uUFJb+%rFT0QH4#J9ITQPoxnKiqn9l}Jagk$LE!f3?dh~<<6w8Myd zu|e7WAWZ%}V$kK?%SOL*T`b}{+7K-cCjUdS(P3IV;z~OnEISx925)lueh-`F}b`0?#?Kdq6CI^neU>_qM$3z|+k8zxK0pAZF;}%F!dFx z!gf90Ar>61CfoG}r&|79c(=+nbbq6>Lx13I$&oJzt3OIzoND&`_z#Xh%yj?& delta 1805 zcmYL}S!`8R6o&WRmElGlZWvmERtSO^AWGDrAw0+nHbE;x1!r$j5EW>JXc6>M6a}%A z3c5iYBN!agfrgw16A3h$@JO6!1r3oXDleiY2snIy?{C~WEBoKyT6gVr*52p#wiGsQ zE^N6ix2m~zeQj=EZLDn1txSvCV@;tUhL8*YkA`%hJr14TXk3A3h`o=SUBLQcvlTGK z48Sfmdm`tule(0mWY;CQme{q{Oa<4NHJcS+wPx#5u9Fnc+BFo{8D3WJ|D4${^jS54vEFPr z`kdMGX|__lU{@usWp-^atAee7Y155n>Q|HFUQF*O#U@-lVH7siC)VQd%V3ktHk(}z z+kg$kTGOvevBj<{Kr=C&LYvuWbPcBQve_8)RsAG{t?A}2Qf#wpEO@2c^orS)utu|2 zVLV|Rwg9G9Z%=JXvBTlYe41XWU9Xu1yRO4E(XMu< zxE?myti$XE*m+E&GaV)cEiHe2Q$gGN9U<&ByOH%yvu+qqxCy(}Y#(4?Hm*DF&y{Ys z?{oilHfx#Uzc8DFo@@4{nbz~nzJl@euSZBQjySFkJ<_a~S@I67y39)98-y<4d~8}7 zhNET+V7>0eF|#{iN6o%9y9=hX%!=sa{6NK@g6T7=$M&FA=xN6-M1P<^ z8NuHSA4G3OtJ2@i9zt(pV-@-bOvNn1T3{;ljN=xgTh0D7dl(jBD*mk567)%u6q!rs z3?E_fli_)@M`3#7dZxe39z$zm74^5-QnWS}`^Rh?^~*tgbKCR}3nzLiWkAc&ar&!GEwPv+ku817g0afqEE?*@5L1 HRbT%LH{i)I diff --git a/src/lib/compiler.ts b/src/lib/compiler.ts index f226a9d2d..dcdb8c6ff 100644 --- a/src/lib/compiler.ts +++ b/src/lib/compiler.ts @@ -3515,7 +3515,7 @@ export default class Compiler { if (consecutiveBools.length > 0) { this.processBools(consecutiveBools); if (!isStatic) this.pushVoid(parentNode, 'callsub *process_static_tuple_element'); - if (consecutiveBools.length !== elements.length) this.pushVoid(parentNode, 'concat'); + if (isStatic && consecutiveBools.length !== elements.length) this.pushVoid(parentNode, 'concat'); } if (!isStatic) this.pushLines(parentNode, 'pop // pop head offset', 'concat // concat head and tail'); diff --git a/tests/common.ts b/tests/common.ts index 0a6a3ca90..362967da6 100644 --- a/tests/common.ts +++ b/tests/common.ts @@ -118,15 +118,15 @@ export async function compileAndCreate( await compiler.compile(); await compiler.algodCompile(); - expect(compiler.teal.approval.map((t) => t.teal).join('\n')).toEqual( - fs.readFileSync(`${artifactsPath}/${className}.approval.teal`, 'utf-8') - ); - expect(compiler.arc4Description()).toEqual( - JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc4.json`, 'utf-8')) - ); - expect(compiler.arc32Description()).toEqual( - JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc32.json`, 'utf-8')) - ); + // expect(compiler.teal.approval.map((t) => t.teal).join('\n')).toEqual( + // fs.readFileSync(`${artifactsPath}/${className}.approval.teal`, 'utf-8') + // ); + // expect(compiler.arc4Description()).toEqual( + // JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc4.json`, 'utf-8')) + // ); + // expect(compiler.arc32Description()).toEqual( + // JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc32.json`, 'utf-8')) + // ); const appClient = algokit.getAppClient( { @@ -179,6 +179,41 @@ export async function runMethod({ return (await appClient[callType](params)).return?.returnValue; } catch (e) { // eslint-disable-next-line no-console + const abiMethod = appClient.getABIMethod(params.method)!; + const { appId } = await appClient.getAppReference(); + const atc = new algosdk.AtomicTransactionComposer(); + + // @ts-expect-error sender is private but we need it + const senderAccount: algosdk.Account = appClient.sender; + atc.addMethodCall({ + appID: Number(appId), + method: abiMethod, + methodArgs: params.methodArgs, + sender: senderAccount.addr, + suggestedParams: await algodClient.getTransactionParams().do(), + signer: algosdk.makeBasicAccountTransactionSigner(senderAccount), + }); + + const execTraceConfig = new algosdk.modelsv2.SimulateTraceConfig({ + enable: true, + scratchChange: true, + stackChange: true, + stateChange: true, + }); + const simReq = new algosdk.modelsv2.SimulateRequest({ + txnGroups: [], + execTraceConfig, + }); + + const resp = await atc.simulate(algodClient, simReq); + + // @ts-expect-error appSpec is private but we need it + const approvalProgramTeal = Buffer.from(appClient.appSpec.source.approval, 'base64').toString(); + + const trace = resp.simulateResponse.txnGroups[0].txnResults[0].execTrace!.approvalProgramTrace!; + // eslint-disable-next-line no-use-before-define + const fullTrace = await getFullTrace(trace, approvalProgramTeal, algodClient); + printFullTrace(fullTrace); console.warn(e); throw e; } @@ -188,3 +223,77 @@ export function getErrorMessage(algodError: string, sourceInfo: { pc?: number[]; const pc = Number(algodError.match(/(?<=pc=)\d+/)?.[0]); return sourceInfo.find((s) => s.pc?.includes(pc))?.errorMessage || `unknown error: ${algodError}`; } + +type FullTrace = { + teal: string; + pc: number; + scratchDelta?: { [slot: number]: string | number }; + stack: (string | number)[]; +}[]; + +async function getFullTrace(simTrace: any[], teal: string, algod: algosdk.Algodv2): Promise { + const result = await algod.compile(teal).sourcemap(true).do(); + + const srcMap = new algosdk.SourceMap(result.sourcemap); + + let stack: (string | number)[] = []; + + const fullTrace: FullTrace = []; + + simTrace.forEach((t) => { + let newStack: (string | number)[] = [...stack]; + + if (t.stackPopCount) { + newStack = newStack.slice(0, -t.stackPopCount); + } + + t.stackAdditions?.forEach((s: any) => { + if (s.bytes) { + newStack.push(`0x${Buffer.from(s.bytes, 'base64').toString('hex')}`); + } else newStack.push(s.uint || 0); + }); + + const scratchDelta = t.scratchChanges?.map((s) => { + const delta = {}; + + const value = s.newValue; + + if (s.bytes) { + delta[s.slot] = `0x${Buffer.from(value.bytes, 'base64').toString('hex')}`; + } else delta[s.slot] = value.uint || 0; + + return delta; + }); + + fullTrace.push({ + teal: teal.split('\n')[srcMap.pcToLine[t.pc as number]], + pc: t.pc, + stack: newStack, + scratchDelta, + }); + + stack = newStack; + }); + + return fullTrace; +} + +function adjustWidth(line: string, width: number) { + if (line.length > width) { + return `${line.slice(0, width - 3)}...`; + } + if (line.length < width) { + return line.padEnd(width); + } + return line; +} + +function printFullTrace(fullTrace: FullTrace, width: number = 30) { + console.warn(`${'TEAL'.padEnd(width)} | PC | STACK`); + console.warn(`${'-'.repeat(width)}-|------|${'-'.repeat(7)}`); + fullTrace.forEach((t) => { + const teal = adjustWidth(t.teal.trim(), width); + const pc = t.pc.toString().padEnd(4); + console.warn(`${teal} | ${pc} | [${t.stack}]`); + }); +} diff --git a/tests/contracts/abi.algo.ts b/tests/contracts/abi.algo.ts index e3e2bd5a3..5d557a53c 100644 --- a/tests/contracts/abi.algo.ts +++ b/tests/contracts/abi.algo.ts @@ -1631,7 +1631,7 @@ type T10 = { u64a: uint64; u64b: uint64; u64c: uint64; - boolValue: boolean; + boolValue: uint8; }; class ABITestNestedArrayInBox extends Contract { @@ -1643,7 +1643,7 @@ class ABITestNestedArrayInBox extends Contract { u64a: 1, u64b: 2, u64c: 3, - boolValue: false, + boolValue: 8, }; return this.bMap('bMap').value; @@ -1705,9 +1705,11 @@ class ABITestNestedArrayAlongsideBoolean extends Contract { u64a: 1, u64b: 2, u64c: 3, - boolValue: false, + boolValue: 8, }; + assert(false); + return o; } } diff --git a/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal b/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal index 6c46c8615..e4fce9442 100644 --- a/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal +++ b/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal @@ -57,7 +57,7 @@ boolInNestedTuple: intc 0 // 1 intc 1 // 0 setbit - concat + concat // HERE frame_bury 0 // a: [[uint64, uint64, uint64], boolean, boolean] // tests/contracts/abi.algo.ts:1444 diff --git a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json index d8df78fc5..a837cd0ce 100644 --- a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json +++ b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NAoJLy8gYVsxXSA9IGZhbHNlCglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkyCglpbnRjIDEgLy8gMAoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NQoJLy8gYVsyXSA9IHRydWUKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAyIC8vIDE5MwoJaW50YyAwIC8vIDEKCXNldGJpdAoJZnJhbWVfYnVyeSAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE0NDcKCS8vIHJldHVybiBhWzJdOwoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglnZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMCAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHgzOGNlZjU5OCAvLyBtZXRob2QgImJvb2xJbk5lc3RlZFR1cGxlKClib29sIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sSW5OZXN0ZWRUdXBsZQoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0IC8vIEhFUkUKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ0CgkvLyBhWzFdID0gZmFsc2UKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJcHVzaGludCAxOTIKCWludGMgMSAvLyAwCglzZXRiaXQKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ1CgkvLyBhWzJdID0gdHJ1ZQoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglpbnRjIDAgLy8gMQoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NwoJLy8gcmV0dXJuIGFbMl07CglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMiAvLyAxOTMKCWdldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAwIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDM4Y2VmNTk4IC8vIG1ldGhvZCAiYm9vbEluTmVzdGVkVHVwbGUoKWJvb2wiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2Jvb2xJbk5lc3RlZFR1cGxlCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json index 7e4a07e34..710ed0caf 100644 --- a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json @@ -630,7 +630,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NAoJLy8gYVsxXSA9IGZhbHNlCglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkyCglpbnRjIDEgLy8gMAoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NQoJLy8gYVsyXSA9IHRydWUKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAyIC8vIDE5MwoJaW50YyAwIC8vIDEKCXNldGJpdAoJZnJhbWVfYnVyeSAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE0NDcKCS8vIHJldHVybiBhWzJdOwoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglnZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMCAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHgzOGNlZjU5OCAvLyBtZXRob2QgImJvb2xJbk5lc3RlZFR1cGxlKClib29sIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sSW5OZXN0ZWRUdXBsZQoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0IC8vIEhFUkUKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ0CgkvLyBhWzFdID0gZmFsc2UKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJcHVzaGludCAxOTIKCWludGMgMSAvLyAwCglzZXRiaXQKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ1CgkvLyBhWzJdID0gdHJ1ZQoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglpbnRjIDAgLy8gMQoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NwoJLy8gcmV0dXJuIGFbMl07CglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMiAvLyAxOTMKCWdldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAwIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDM4Y2VmNTk4IC8vIG1ldGhvZCAiYm9vbEluTmVzdGVkVHVwbGUoKWJvb2wiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2Jvb2xJbk5lc3RlZFR1cGxlCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { diff --git a/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal b/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal index b5b803090..a3769c0ca 100644 --- a/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal +++ b/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal @@ -49,7 +49,7 @@ booleanLastInObj: intc 0 // 0 dup setbit - concat + concat // HERE retsub *abi_route_createApplication: diff --git a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json index 005c7e423..004480592 100644 --- a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json +++ b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDY2Yzg5MGNhIC8vIG1ldGhvZCAiYm9vbGVhbkxhc3RJbk9iaigpKHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iagoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdCAvLyBIRVJFCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4NjZjODkwY2EgLy8gbWV0aG9kICJib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sZWFuTGFzdEluT2JqCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json index e26ff07b8..a248ff074 100644 --- a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json +++ b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json @@ -396,7 +396,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDY2Yzg5MGNhIC8vIG1ldGhvZCAiYm9vbGVhbkxhc3RJbk9iaigpKHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iagoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdCAvLyBIRVJFCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4NjZjODkwY2EgLy8gbWV0aG9kICJib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sZWFuTGFzdEluT2JqCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal index d19b13ea4..31c6e69ca 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal @@ -67,7 +67,6 @@ nestedArrayAlongsideBoolean: dup setbit callsub *process_static_tuple_element - concat pop // pop head offset concat // concat head and tail frame_bury 0 // o: T10 diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json index fdec5f9d0..66e22dffe 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCWNvbmNhdAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglmcmFtZV9idXJ5IDAgLy8gbzogVDEwCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MTEKCS8vIHJldHVybiBvOwoJZnJhbWVfZGlnIDAgLy8gbzogVDEwCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YzQ5Y2I5YTcgLy8gbWV0aG9kICJuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJZnJhbWVfYnVyeSAwIC8vIG86IFQxMAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNzExCgkvLyByZXR1cm4gbzsKCWZyYW1lX2RpZyAwIC8vIG86IFQxMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGM0OWNiOWE3IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlBbG9uZ3NpZGVCb29sZWFuKCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3ViCgoqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJZHVwCglsZW4KCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJYnRvaQoJKwoJaXRvYgoJZXh0cmFjdCA2IDIKCWZyYW1lX2J1cnkgLTIgLy8gaGVhZCBvZmZzZXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglzd2FwCgljb25jYXQKCWZyYW1lX2J1cnkgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1Yg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json index 41db762f6..6122f942e 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json @@ -451,36 +451,36 @@ "teal": 72, "source": "tests/contracts/abi.algo.ts:1703", "pc": [ - 132 + 132, + 133 ] }, { - "teal": 73, - "source": "tests/contracts/abi.algo.ts:1703", + "teal": 76, + "source": "tests/contracts/abi.algo.ts:1711", "pc": [ - 133, - 134 + 134, + 135 ] }, { - "teal": 77, - "source": "tests/contracts/abi.algo.ts:1711", + "teal": 79, + "source": "tests/contracts/abi.algo.ts:1702", "pc": [ - 135, - 136 + 136, + 137 ] }, { "teal": 80, "source": "tests/contracts/abi.algo.ts:1702", "pc": [ - 137, 138 ] }, { - "teal": 81, - "source": "tests/contracts/abi.algo.ts:1702", + "teal": 83, + "source": "tests/contracts/abi.algo.ts:1699", "pc": [ 139 ] @@ -493,112 +493,112 @@ ] }, { - "teal": 85, - "source": "tests/contracts/abi.algo.ts:1699", - "pc": [ - 141 - ] - }, - { - "teal": 88, + "teal": 87, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 141, 142, 143, 144, 145, - 146, - 147 + 146 ] }, { - "teal": 89, + "teal": 88, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 147, 148, - 149, - 150 + 149 ] }, { - "teal": 90, + "teal": 89, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 150, 151, 152, - 153, - 154 + 153 ] }, { - "teal": 93, + "teal": 92, "source": "tests/contracts/abi.algo.ts:1699", "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ - 155 + 154 ] }, { - "teal": 96, + "teal": 95, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 155, 156, 157, 158, 159, - 160, - 161 + 160 ] }, { - "teal": 97, + "teal": 96, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 161, 162, - 163, - 164 + 163 ] }, { - "teal": 98, + "teal": 97, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 164, 165, 166, - 167, - 168 + 167 ] }, { - "teal": 101, + "teal": 100, "source": "tests/contracts/abi.algo.ts:1699", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 169 + 168 ] }, { - "teal": 104, + "teal": 103, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ + 169, 170, - 171, - 172 + 171 + ] + }, + { + "teal": 104, + "source": "tests/contracts/abi.algo.ts:1699", + "pc": [ + 172, + 173 ] }, { "teal": 105, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 173, - 174 + 174, + 175 ] }, { "teal": 106, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 175, 176 ] }, @@ -606,54 +606,54 @@ "teal": 107, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 177 + 177, + 178 ] }, { "teal": 108, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 178, - 179 + 179, + 180 ] }, { "teal": 109, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 180, 181 ] }, { - "teal": 110, + "teal": 112, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 182 + 182, + 183, + 184 ] }, { "teal": 113, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 183, - 184, - 185 + 185, + 186 ] }, { "teal": 114, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 186, - 187 + 187, + 188 ] }, { "teal": 115, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 188, 189 ] }, @@ -661,22 +661,22 @@ "teal": 116, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 190 + 190, + 191 ] }, { "teal": 117, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 191, - 192 + 192, + 193 ] }, { "teal": 118, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 193, 194 ] }, @@ -691,14 +691,14 @@ "teal": 120, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 196 + 196, + 197 ] }, { "teal": 121, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 197, 198 ] }, @@ -720,31 +720,31 @@ "teal": 124, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 201 + 201, + 202, + 203 ] }, { "teal": 125, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 202, - 203, - 204 + 204, + 205 ] }, { "teal": 126, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 205, - 206 + 206, + 207 ] }, { "teal": 127, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 207, 208 ] }, @@ -759,47 +759,40 @@ "teal": 129, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 210 + 210, + 211 ] }, { "teal": 130, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 211, - 212 + 212, + 213 ] }, { "teal": 131, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 213, - 214 + 214, + 215 ] }, { "teal": 132, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 215, - 216 + 216, + 217 ] }, { "teal": 133, "source": "tests/contracts/abi.algo.ts:1699", "pc": [ - 217, 218 ] - }, - { - "teal": 134, - "source": "tests/contracts/abi.algo.ts:1699", - "pc": [ - 219 - ] } ], "pcOffsetMethod": "none" @@ -810,11 +803,11 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCWNvbmNhdAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglmcmFtZV9idXJ5IDAgLy8gbzogVDEwCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MTEKCS8vIHJldHVybiBvOwoJZnJhbWVfZGlnIDAgLy8gbzogVDEwCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YzQ5Y2I5YTcgLy8gbWV0aG9kICJuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKShieXRlWzRdW10sdWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJZnJhbWVfYnVyeSAwIC8vIG86IFQxMAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNzExCgkvLyByZXR1cm4gbzsKCWZyYW1lX2RpZyAwIC8vIG86IFQxMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGM0OWNiOWE3IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlBbG9uZ3NpZGVCb29sZWFuKCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3ViCgoqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJZHVwCglsZW4KCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJYnRvaQoJKwoJaXRvYgoJZXh0cmFjdCA2IDIKCWZyYW1lX2J1cnkgLTIgLy8gaGVhZCBvZmZzZXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglzd2FwCgljb25jYXQKCWZyYW1lX2J1cnkgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1Yg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { - "approval": "CiACAAEmAQAxGBSBBgsxGQiNDABxAAAAAAAAAAAAAABjAAAAAAAAAAAAAACABBUffHWIAARQsCNDigABKCgogAIAGoAKAAJhYmNkZWZnaIgAZYAIAAAAAAAAAAGIAEuACAAAAAAAAAACiAA+gAgAAAAAAAAAA4gAMYABACJJVIgAKFBIUIwAiwCMAIkjQ4AEuER7NjYaAI4B//EAgATEnLmnNhoAjgH/gwCKBAOL/Iv/UIv9i/6JigQDi/yL/lCM/Iv/SRWL/hcIFlcGAoz+i/1MUIz9i/yL/Yv+iQ==", + "approval": "CiACAAEmAQAxGBSBBgsxGQiNDABwAAAAAAAAAAAAAABiAAAAAAAAAAAAAACABBUffHWIAARQsCNDigABKCgogAIAGoAKAAJhYmNkZWZnaIgAZIAIAAAAAAAAAAGIAEqACAAAAAAAAAACiAA9gAgAAAAAAAAAA4gAMIABACJJVIgAJ0hQjACLAIwAiSNDgAS4RHs2NhoAjgH/8QCABMScuac2GgCOAf+EAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", "clear": "Cg==" }, "compilerInfo": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal index e6f1e30c1..58cda2d4a 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal @@ -68,7 +68,6 @@ nestedArrayInBox: dup setbit callsub *process_static_tuple_element - concat pop // pop head offset concat // concat head and tail box_put diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json index 4c3331d4f..c9cbf00d6 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJY29uY2F0Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY0OQoJLy8gcmV0dXJuIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlOwoJYnl0ZWMgMCAvLyAgImJNYXAiCglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZQoJYXNzZXJ0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YTA3Y2EwYzggLy8gbWV0aG9kICJuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDkKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGEwN2NhMGM4IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json index 6b6e5162e..e1e42ed88 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json @@ -481,8 +481,8 @@ ] }, { - "teal": 74, - "source": "tests/contracts/abi.algo.ts:1641", + "teal": 77, + "source": "tests/contracts/abi.algo.ts:1649", "pc": [ 141 ] @@ -495,23 +495,23 @@ ] }, { - "teal": 79, + "teal": 81, "source": "tests/contracts/abi.algo.ts:1649", + "errorMessage": "box value does not exist: this.bMap('bMap').value", "pc": [ 143 ] }, { "teal": 82, - "source": "tests/contracts/abi.algo.ts:1649", - "errorMessage": "box value does not exist: this.bMap('bMap').value", + "source": "tests/contracts/abi.algo.ts:1640", "pc": [ 144 ] }, { - "teal": 83, - "source": "tests/contracts/abi.algo.ts:1640", + "teal": 85, + "source": "tests/contracts/abi.algo.ts:1637", "pc": [ 145 ] @@ -524,112 +524,112 @@ ] }, { - "teal": 87, - "source": "tests/contracts/abi.algo.ts:1637", - "pc": [ - 147 - ] - }, - { - "teal": 90, + "teal": 89, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 147, 148, 149, 150, 151, - 152, - 153 + 152 ] }, { - "teal": 91, + "teal": 90, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 153, 154, - 155, - 156 + 155 ] }, { - "teal": 92, + "teal": 91, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 156, 157, 158, - 159, - 160 + 159 ] }, { - "teal": 95, + "teal": 94, "source": "tests/contracts/abi.algo.ts:1637", "errorMessage": "this contract does not implement the given ABI method for create NoOp", "pc": [ - 161 + 160 ] }, { - "teal": 98, + "teal": 97, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 161, 162, 163, 164, 165, - 166, - 167 + 166 ] }, { - "teal": 99, + "teal": 98, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 167, 168, - 169, - 170 + 169 ] }, { - "teal": 100, + "teal": 99, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 170, 171, 172, - 173, - 174 + 173 ] }, { - "teal": 103, + "teal": 102, "source": "tests/contracts/abi.algo.ts:1637", "errorMessage": "this contract does not implement the given ABI method for call NoOp", "pc": [ - 175 + 174 ] }, { - "teal": 106, + "teal": 105, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ + 175, 176, - 177, - 178 + 177 + ] + }, + { + "teal": 106, + "source": "tests/contracts/abi.algo.ts:1637", + "pc": [ + 178, + 179 ] }, { "teal": 107, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 179, - 180 + 180, + 181 ] }, { "teal": 108, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 181, 182 ] }, @@ -637,54 +637,54 @@ "teal": 109, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 183 + 183, + 184 ] }, { "teal": 110, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 184, - 185 + 185, + 186 ] }, { "teal": 111, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 186, 187 ] }, { - "teal": 112, + "teal": 114, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 188 + 188, + 189, + 190 ] }, { "teal": 115, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 189, - 190, - 191 + 191, + 192 ] }, { "teal": 116, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 192, - 193 + 193, + 194 ] }, { "teal": 117, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 194, 195 ] }, @@ -692,22 +692,22 @@ "teal": 118, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 196 + 196, + 197 ] }, { "teal": 119, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 197, - 198 + 198, + 199 ] }, { "teal": 120, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 199, 200 ] }, @@ -722,14 +722,14 @@ "teal": 122, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 202 + 202, + 203 ] }, { "teal": 123, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 203, 204 ] }, @@ -751,31 +751,31 @@ "teal": 126, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 207 + 207, + 208, + 209 ] }, { "teal": 127, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 208, - 209, - 210 + 210, + 211 ] }, { "teal": 128, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 211, - 212 + 212, + 213 ] }, { "teal": 129, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 213, 214 ] }, @@ -790,47 +790,40 @@ "teal": 131, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 216 + 216, + 217 ] }, { "teal": 132, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 217, - 218 + 218, + 219 ] }, { "teal": 133, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 219, - 220 + 220, + 221 ] }, { "teal": 134, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 221, - 222 + 222, + 223 ] }, { "teal": 135, "source": "tests/contracts/abi.algo.ts:1637", "pc": [ - 223, 224 ] - }, - { - "teal": 136, - "source": "tests/contracts/abi.algo.ts:1637", - "pc": [ - 225 - ] } ], "pcOffsetMethod": "none" @@ -841,11 +834,11 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJY29uY2F0Cglwb3AgLy8gcG9wIGhlYWQgb2Zmc2V0Cgljb25jYXQgLy8gY29uY2F0IGhlYWQgYW5kIHRhaWwKCWJveF9wdXQKCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTY0OQoJLy8gcmV0dXJuIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlOwoJYnl0ZWMgMCAvLyAgImJNYXAiCglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZQoJYXNzZXJ0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YTA3Y2EwYzggLy8gbWV0aG9kICJuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDkKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGEwN2NhMGM4IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { - "approval": "CiACAAEmAgRiTWFwADEYFIEGCzEZCI0MAHIAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAIAEFR98dYgABFCwI0OKAAEoSbxIKSmAAgAagAoAAmFiY2RlZmdoiABjgAgAAAAAAAAAAYgASYAIAAAAAAAAAAKIADyACAAAAAAAAAADiAAvgAEAIklUiAAmUEhQvyi+RIkjQ4AEuER7NjYaAI4B//EAgASgfKDINhoAjgH/ggCKBAOL/Iv/UIv9i/6JigQDi/yL/lCM/Iv/SRWL/hcIFlcGAoz+i/1MUIz9i/yL/Yv+iQ==", + "approval": "CiACAAEmAgRiTWFwADEYFIEGCzEZCI0MAHEAAAAAAAAAAAAAAGMAAAAAAAAAAAAAAIAEFR98dYgABFCwI0OKAAEoSbxIKSmAAgAagAoAAmFiY2RlZmdoiABigAgAAAAAAAAAAYgASIAIAAAAAAAAAAKIADuACAAAAAAAAAADiAAugAEAIklUiAAlSFC/KL5EiSNDgAS4RHs2NhoAjgH/8QCABKB8oMg2GgCOAf+DAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", "clear": "Cg==" }, "compilerInfo": { diff --git a/u64.log b/u64.log new file mode 100644 index 000000000..30cd8193a --- /dev/null +++ b/u64.log @@ -0,0 +1,252 @@ +bun test v1.1.38 (bf2f153f) + +tests/abi.test.ts: +(skip) ABI > E2E > staticArray +(skip) ABI > E2E > returnStaticArray +(skip) ABI > E2E > staticArrayArg +(skip) ABI > E2E > nonLiteralStaticArrayElements +(skip) ABI > E2E > mixedStaticArrayElements +(skip) ABI > E2E > nonLiteralStaticArrayAccess +(skip) ABI > E2E > setStaticArrayElement +(skip) ABI > E2E > staticArrayInStorageRef +(skip) ABI > E2E > updateStaticArrayInStorageRef +(skip) ABI > E2E > staticArrayInStorageMap +(skip) ABI > E2E > updateStaticArrayInStorageMap +(skip) ABI > E2E > nestedStaticArray +(skip) ABI > E2E > updateNestedStaticArrayElement +(skip) ABI > E2E > updateNestedStaticArray +(skip) ABI > E2E > threeDimensionalUint16Array +(skip) ABI > E2E > simpleTuple +(skip) ABI > E2E > arrayInTuple +(skip) ABI > E2E > tupleInArray +(skip) ABI > E2E > tupleInTuple +(skip) ABI > E2E > shortTypeNotation +(skip) ABI > E2E > disgusting +(skip) ABI > E2E > returnTuple +(skip) ABI > E2E > tupleArg +(skip) ABI > E2E > dynamicArray +(skip) ABI > E2E > returnDynamicArray +(skip) ABI > E2E > dynamicArrayArg +(skip) ABI > E2E > updateDynamicArrayElement +(skip) ABI > E2E > dynamicTupleArray +(skip) ABI > E2E > returnTupleWithDyamicArray +(skip) ABI > E2E > returnDynamicArrayFromTuple +(skip) ABI > E2E > updateDynamicArrayInTuple +(skip) ABI > E2E > nonLiteralDynamicElementInTuple +(skip) ABI > E2E > arrayPush +(skip) ABI > E2E > arrayPop +(skip) ABI > E2E > arrayPopValue +(skip) ABI > E2E > arraySplice +(skip) ABI > E2E > arraySpliceValue +(skip) ABI > E2E > dynamicArrayElements +(skip) ABI > E2E > spliceLastElement +(skip) ABI > E2E > spliceLastElementValue +(skip) ABI > E2E > spliceFirstElement +(skip) ABI > E2E > spliceFirstElementValue +(skip) ABI > E2E > stringReturn +(skip) ABI > E2E > stringArg +(skip) ABI > E2E > stringInTuple +(skip) ABI > E2E > accesStringInTuple +(skip) ABI > E2E > updateStringInTuple +(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes +(skip) ABI > E2E > shortenDynamicElementInTuple +(skip) ABI > E2E > namedTuple +(skip) ABI > E2E > updateNamedTuple +(skip) ABI > E2E > customTypes +(skip) ABI > E2E > staticStringArrayArg +(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray +(skip) ABI > E2E > dynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayElementInTuple +(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > nestedTuple +(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength +(skip) ABI > E2E > accessDynamicStringArray +(skip) ABI > E2E > txnTypes +(skip) ABI > E2E > arrayLength +(skip) ABI > E2E > stringLength +(skip) ABI > E2E > arrayRef +(skip) ABI > E2E > nestedArrayRef +(skip) ABI > E2E > nonLiteralNestedArrayRef +(skip) ABI > E2E > multiNestedArrayRef +(skip) ABI > E2E > objectArrayRef +(skip) ABI > E2E > stringAccessor +(skip) ABI > E2E > emptyStaticArray +(skip) ABI > E2E > partialStaticArray +(skip) ABI > E2E > emptyDynamicArray +(skip) ABI > E2E > booleanArgAndReturn +(skip) ABI > E2E > boolTuple +(skip) ABI > E2E > staticBoolArray +(skip) ABI > E2E > boolTupleAccess +(skip) ABI > E2E > staticBoolArrayAccess +(skip) ABI > E2E > dynamicBoolArray +(skip) ABI > E2E > dynamicBoolArrayAccess +(skip) ABI > E2E > staticBoolArrayUpdate +(skip) ABI > E2E > dynamicBoolArrayUpdate +(skip) ABI > E2E > boolTupleUpdate +(skip) ABI > E2E > objectRef +(skip) ABI > E2E > storageRefKey +(skip) ABI > E2E > storageRefAccount +(skip) ABI > E2E > angularCasting +(skip) ABI > E2E > castBytesFunction +(skip) ABI > E2E > rawBytesFunction +(skip) ABI > E2E > globalMethodInChain +(skip) ABI > E2E > opcodeParamFromObject +(skip) ABI > E2E > arrayInObjectInState +(skip) ABI > E2E > nestedObject +(skip) ABI > E2E > updateArrayRefInBoxStorage +(skip) ABI > E2E > extractUint +(skip) ABI > E2E > bytesReturn +(skip) ABI > E2E > nestedTypesInSignature +(skip) ABI > E2E > maxUfixed +(skip) ABI > E2E > chainedPropertyAfterTuple +(skip) ABI > E2E > uintCasting +(skip) ABI > E2E > uint64Casting +(skip) ABI > E2E > bytesCasting +(skip) ABI > E2E > biggerByteCasting +(skip) ABI > E2E > smallerByteCasting +(skip) ABI > E2E > multiBytesTuple +(skip) ABI > E2E > boolInObj +(skip) ABI > E2E > plusEqualsArrayValue +(skip) ABI > E2E > plusEqualsObjValue +(skip) ABI > E2E > plusEqualsObjValueInBox +(skip) ABI > E2E > uintNComparison +(skip) ABI > E2E > booleanLastInObj +(skip) ABI > E2E > nestedStructInBoxMap +(skip) ABI > E2E > staticForEach +(skip) ABI > E2E > nestedStaticForEach +(skip) ABI > E2E > nestedStaticForEachInBox +(skip) ABI > E2E > largeNestedStaticForEachInBox +(skip) ABI > E2E > forEachReturn +(skip) ABI > E2E > staticArrayLength +(skip) ABI > E2E > objectInArgs +(skip) ABI > E2E > nestedStaticArrayLength +(skip) ABI > E2E > nestedArrayLengthInObjectVariable +(skip) ABI > staticForOf +(skip) ABI > largeNestedStaticForOfInBox +(skip) ABI > forOfContinue +(skip) ABI > forOfBreak +(skip) ABI > accessStaticArrayInBoxInVariable +(skip) ABI > staticTypeInBox +(skip) ABI > storagePropertyReferenceInBox +(skip) ABI > pushToArrayInBox +(skip) ABI > updateStaticFieldInDynamicObjectInBox +(skip) ABI > dynamicArrayLength +(skip) ABI > dynamicArrayIteration +(skip) ABI > postBoolTupleOffset +(skip) ABI > nestedArrayInBox +(skip) ABI > nestedArrayInBoxLast +(skip) ABI > nestedArrayInBoxWithoutBool +Received error executing Atomic Transaction Composer, for more information enable the debug flag +TEAL | PC | STACK +-------------------------------|------|------- +intcblock 1 | 1 | [] +bytecblock 0x | 4 | [] +txn ApplicationID | 7 | [2607] +! | 9 | [0] +pushint 6 | 10 | [0,6] +* | 12 | [0] +txn OnCompletion | 13 | [0,0] ++ | 15 | [0] +switch *call_NoOp *NOT_IMPL... | 16 | [] +pushbytes 0x915e4eb7 // met... | 161 | [0x915e4eb7] +txna ApplicationArgs 0 | 167 | [0x915e4eb7,0x915e4eb7] +match *abi_route_nestedArra... | 170 | [] +pushbytes 0x151f7c75 | 43 | [0x151f7c75] +callsub nestedArrayAlongsid... | 49 | [0x151f7c75] +proto 0 1 | 56 | [0x151f7c75] +bytec 0 // 0x | 59 | [0x151f7c75,0] +bytec 0 // initial head | 60 | [0x151f7c75,0,0] +bytec 0 // initial tail | 61 | [0x151f7c75,0,0,0] +pushbytes 0x0022 // initial... | 62 | [0x151f7c75,0,0,0,0x0022] +pushbytes 0x000261626364656... | 66 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768] +callsub *process_dynamic_tu... | 78 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768] +proto 4 3 | 188 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768] +frame_dig -4 // tuple head | 191 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768,0] +frame_dig -2 // head offset | 193 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768,0,0x0022] +concat | 195 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768,0x0022] +frame_bury -4 // tuple head | 196 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768] +frame_dig -1 // element | 198 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768] +dup | 200 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] +len | 201 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,10] +frame_dig -2 // head offset | 202 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,10,0x0022] +btoi | 204 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,10,34] ++ | 205 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,44] +itob | 206 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,0x000000000000002c] +extract 6 2 | 207 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,0x002c] +frame_bury -2 // head offset | 210 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0x00026162636465666768] +frame_dig -3 // tuple tail | 212 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0x00026162636465666768,0] +swap | 214 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0,0x00026162636465666768] +concat | 215 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0x00026162636465666768] +frame_bury -3 // tuple tail | 216 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768] +frame_dig -4 // tuple head | 218 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768,0x0022] +frame_dig -3 // tuple tail | 220 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768,0x0022,0x00026162636465666768] +frame_dig -2 // head offset | 222 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768,0x0022,0x00026162636465666768,0x002c] +retsub | 224 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c] +pushbytes 0x0000000000000001 | 81 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001] +callsub *process_static_tup... | 91 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001] +proto 4 3 | 175 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001] +frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x0022] +frame_dig -1 // element | 180 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x0022,0x0000000000000001] +concat | 182 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x00220000000000000001] +frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x00220000000000000001,0x00026162636465666768] +frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x00220000000000000001,0x00026162636465666768,0x002c] +retsub | 187 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c] +pushbytes 0x0000000000000002 | 94 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002] +callsub *process_static_tup... | 104 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002] +proto 4 3 | 175 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002] +frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x00220000000000000001] +frame_dig -1 // element | 180 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x00220000000000000001,0x0000000000000002] +concat | 182 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x002200000000000000010000000000000002] +frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x002200000000000000010000000000000002,0x00026162636465666768] +frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c] +retsub | 187 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c] +pushbytes 0x0000000000000003 | 107 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003] +callsub *process_static_tup... | 117 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003] +proto 4 3 | 175 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003] +frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x002200000000000000010000000000000002] +frame_dig -1 // element | 180 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x002200000000000000010000000000000002,0x0000000000000003] +concat | 182 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x0022000000000000000100000000000000020000000000000003] +frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768] +frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c] +retsub | 187 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c] +pushbytes 0x0000000000000004 | 120 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004] +callsub *process_static_tup... | 130 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004] +proto 4 3 | 175 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004] +frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x0022000000000000000100000000000000020000000000000003] +frame_dig -1 // element | 180 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x0022000000000000000100000000000000020000000000000003,0x0000000000000004] +concat | 182 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x00220000000000000001000000000000000200000000000000030000000000000004] +frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768] +frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768,0x002c] +retsub | 187 | [0x151f7c75,0,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768,0x002c] +pop // pop head offset | 133 | [0x151f7c75,0,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768] +concat // concat head and tail | 134 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768] +frame_bury 0 // o: T10 | 135 | [0x151f7c75,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768] +pushint 0 | 137 | [0x151f7c75,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768,0] +assert | 139 | [0x151f7c75,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768] +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=139. at:73. Error during resource population simulation in transaction 0: transaction OCF5N2YKM2STTXNZPGFBZ4GNUT6MHMC5NV24P7NYT7MTBVTKKGIQ: logic eval error: assert failed pc=139. Details: app=2607, pc=139, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 + +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=139. at:73. Error during resource population simulation in transaction 0: transaction OCF5N2YKM2STTXNZPGFBZ4GNUT6MHMC5NV24P7NYT7MTBVTKKGIQ: logic eval error: assert failed pc=139. Details: app=2607, pc=139, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 +(fail) ABI > nestedArrayAlongsideBoolean [855.04ms] + + 0 pass + 136 skip + 1 fail + 3 expect() calls +Ran 137 tests across 1 files. [2.19s] diff --git a/u8.log b/u8.log new file mode 100644 index 000000000..07b73833a --- /dev/null +++ b/u8.log @@ -0,0 +1,257 @@ +bun test v1.1.38 (bf2f153f) + +tests/abi.test.ts: +(skip) ABI > E2E > staticArray +(skip) ABI > E2E > returnStaticArray +(skip) ABI > E2E > staticArrayArg +(skip) ABI > E2E > nonLiteralStaticArrayElements +(skip) ABI > E2E > mixedStaticArrayElements +(skip) ABI > E2E > nonLiteralStaticArrayAccess +(skip) ABI > E2E > setStaticArrayElement +(skip) ABI > E2E > staticArrayInStorageRef +(skip) ABI > E2E > updateStaticArrayInStorageRef +(skip) ABI > E2E > staticArrayInStorageMap +(skip) ABI > E2E > updateStaticArrayInStorageMap +(skip) ABI > E2E > nestedStaticArray +(skip) ABI > E2E > updateNestedStaticArrayElement +(skip) ABI > E2E > updateNestedStaticArray +(skip) ABI > E2E > threeDimensionalUint16Array +(skip) ABI > E2E > simpleTuple +(skip) ABI > E2E > arrayInTuple +(skip) ABI > E2E > tupleInArray +(skip) ABI > E2E > tupleInTuple +(skip) ABI > E2E > shortTypeNotation +(skip) ABI > E2E > disgusting +(skip) ABI > E2E > returnTuple +(skip) ABI > E2E > tupleArg +(skip) ABI > E2E > dynamicArray +(skip) ABI > E2E > returnDynamicArray +(skip) ABI > E2E > dynamicArrayArg +(skip) ABI > E2E > updateDynamicArrayElement +(skip) ABI > E2E > dynamicTupleArray +(skip) ABI > E2E > returnTupleWithDyamicArray +(skip) ABI > E2E > returnDynamicArrayFromTuple +(skip) ABI > E2E > updateDynamicArrayInTuple +(skip) ABI > E2E > nonLiteralDynamicElementInTuple +(skip) ABI > E2E > arrayPush +(skip) ABI > E2E > arrayPop +(skip) ABI > E2E > arrayPopValue +(skip) ABI > E2E > arraySplice +(skip) ABI > E2E > arraySpliceValue +(skip) ABI > E2E > dynamicArrayElements +(skip) ABI > E2E > spliceLastElement +(skip) ABI > E2E > spliceLastElementValue +(skip) ABI > E2E > spliceFirstElement +(skip) ABI > E2E > spliceFirstElementValue +(skip) ABI > E2E > stringReturn +(skip) ABI > E2E > stringArg +(skip) ABI > E2E > stringInTuple +(skip) ABI > E2E > accesStringInTuple +(skip) ABI > E2E > updateStringInTuple +(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes +(skip) ABI > E2E > shortenDynamicElementInTuple +(skip) ABI > E2E > namedTuple +(skip) ABI > E2E > updateNamedTuple +(skip) ABI > E2E > customTypes +(skip) ABI > E2E > staticStringArrayArg +(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray +(skip) ABI > E2E > dynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayElementInTuple +(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > nestedTuple +(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength +(skip) ABI > E2E > accessDynamicStringArray +(skip) ABI > E2E > txnTypes +(skip) ABI > E2E > arrayLength +(skip) ABI > E2E > stringLength +(skip) ABI > E2E > arrayRef +(skip) ABI > E2E > nestedArrayRef +(skip) ABI > E2E > nonLiteralNestedArrayRef +(skip) ABI > E2E > multiNestedArrayRef +(skip) ABI > E2E > objectArrayRef +(skip) ABI > E2E > stringAccessor +(skip) ABI > E2E > emptyStaticArray +(skip) ABI > E2E > partialStaticArray +(skip) ABI > E2E > emptyDynamicArray +(skip) ABI > E2E > booleanArgAndReturn +(skip) ABI > E2E > boolTuple +(skip) ABI > E2E > staticBoolArray +(skip) ABI > E2E > boolTupleAccess +(skip) ABI > E2E > staticBoolArrayAccess +(skip) ABI > E2E > dynamicBoolArray +(skip) ABI > E2E > dynamicBoolArrayAccess +(skip) ABI > E2E > staticBoolArrayUpdate +(skip) ABI > E2E > dynamicBoolArrayUpdate +(skip) ABI > E2E > boolTupleUpdate +(skip) ABI > E2E > objectRef +(skip) ABI > E2E > storageRefKey +(skip) ABI > E2E > storageRefAccount +(skip) ABI > E2E > angularCasting +(skip) ABI > E2E > castBytesFunction +(skip) ABI > E2E > rawBytesFunction +(skip) ABI > E2E > globalMethodInChain +(skip) ABI > E2E > opcodeParamFromObject +(skip) ABI > E2E > arrayInObjectInState +(skip) ABI > E2E > nestedObject +(skip) ABI > E2E > updateArrayRefInBoxStorage +(skip) ABI > E2E > extractUint +(skip) ABI > E2E > bytesReturn +(skip) ABI > E2E > nestedTypesInSignature +(skip) ABI > E2E > maxUfixed +(skip) ABI > E2E > chainedPropertyAfterTuple +(skip) ABI > E2E > uintCasting +(skip) ABI > E2E > uint64Casting +(skip) ABI > E2E > bytesCasting +(skip) ABI > E2E > biggerByteCasting +(skip) ABI > E2E > smallerByteCasting +(skip) ABI > E2E > multiBytesTuple +(skip) ABI > E2E > boolInObj +(skip) ABI > E2E > plusEqualsArrayValue +(skip) ABI > E2E > plusEqualsObjValue +(skip) ABI > E2E > plusEqualsObjValueInBox +(skip) ABI > E2E > uintNComparison +(skip) ABI > E2E > booleanLastInObj +(skip) ABI > E2E > nestedStructInBoxMap +(skip) ABI > E2E > staticForEach +(skip) ABI > E2E > nestedStaticForEach +(skip) ABI > E2E > nestedStaticForEachInBox +(skip) ABI > E2E > largeNestedStaticForEachInBox +(skip) ABI > E2E > forEachReturn +(skip) ABI > E2E > staticArrayLength +(skip) ABI > E2E > objectInArgs +(skip) ABI > E2E > nestedStaticArrayLength +(skip) ABI > E2E > nestedArrayLengthInObjectVariable +(skip) ABI > staticForOf +(skip) ABI > largeNestedStaticForOfInBox +(skip) ABI > forOfContinue +(skip) ABI > forOfBreak +(skip) ABI > accessStaticArrayInBoxInVariable +(skip) ABI > staticTypeInBox +(skip) ABI > storagePropertyReferenceInBox +(skip) ABI > pushToArrayInBox +(skip) ABI > updateStaticFieldInDynamicObjectInBox +(skip) ABI > dynamicArrayLength +(skip) ABI > dynamicArrayIteration +(skip) ABI > postBoolTupleOffset +(skip) ABI > nestedArrayInBox +(skip) ABI > nestedArrayInBoxLast +(skip) ABI > nestedArrayInBoxWithoutBool +Received error executing Atomic Transaction Composer, for more information enable the debug flag +TEAL | PC | STACK +-------------------------------|------|------- +intcblock 1 | 1 | [] +bytecblock 0x | 4 | [] +txn ApplicationID | 7 | [2611] +! | 9 | [0] +pushint 6 | 10 | [0,6] +* | 12 | [0] +txn OnCompletion | 13 | [0,0] ++ | 15 | [0] +switch *call_NoOp *NOT_IMPL... | 16 | [] +pushbytes 0x5e2d718a // met... | 154 | [0x5e2d718a] +txna ApplicationArgs 0 | 160 | [0x5e2d718a,0x5e2d718a] +match *abi_route_nestedArra... | 163 | [] +pushbytes 0x151f7c75 | 43 | [0x151f7c75] +callsub nestedArrayAlongsid... | 49 | [0x151f7c75] +proto 0 1 | 56 | [0x151f7c75] +bytec 0 // 0x | 59 | [0x151f7c75,0] +bytec 0 // initial head | 60 | [0x151f7c75,0,0] +bytec 0 // initial tail | 61 | [0x151f7c75,0,0,0] +pushbytes 0x001b // initial... | 62 | [0x151f7c75,0,0,0,0x001b] +pushbytes 0x000261626364656... | 66 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +callsub *process_dynamic_tu... | 78 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +proto 4 3 | 181 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +frame_dig -4 // tuple head | 184 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0] +frame_dig -2 // head offset | 186 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0,0x001b] +concat | 188 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0x001b] +frame_bury -4 // tuple head | 189 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768] +frame_dig -1 // element | 191 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768] +dup | 193 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] +len | 194 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10] +frame_dig -2 // head offset | 195 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,0x001b] +btoi | 197 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,27] ++ | 198 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,37] +itob | 199 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0000000000000025] +extract 6 2 | 200 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0025] +frame_bury -2 // head offset | 203 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] +frame_dig -3 // tuple tail | 205 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768,0] +swap | 207 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0,0x00026162636465666768] +concat | 208 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] +frame_bury -3 // tuple tail | 209 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768] +frame_dig -4 // tuple head | 211 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b] +frame_dig -3 // tuple tail | 213 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768] +frame_dig -2 // head offset | 215 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768,0x0025] +retsub | 217 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000001 | 81 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +callsub *process_static_tup... | 91 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +proto 4 3 | 168 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b,0x0000000000000001] +concat | 175 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000002 | 94 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +callsub *process_static_tup... | 104 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +proto 4 3 | 168 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001,0x0000000000000002] +concat | 175 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000003 | 107 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +callsub *process_static_tup... | 117 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +proto 4 3 | 168 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002,0x0000000000000003] +concat | 175 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] +pushbytes 0x04 | 120 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04] + + + + +callsub *process_static_tup... | 123 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04] +proto 4 3 | 168 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b000000000000000100000000000000020000000000000003] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b000000000000000100000000000000020000000000000003,0x04] +concat | 175 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b00000000000000010000000000000002000000000000000304] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768,0x0025] +THERE'S AN EXTRA CONCAT HERE WITH BOOLEANS +pop // pop head offset | 126 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768] +concat // concat head and tail | 127 | [0x151f7c75,0,0x001b0000000000000001000000000000000200000000000000030400026162636465666768] +frame_bury 0 // o: T10 | 128 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030400026162636465666768] +pushint 0 | 130 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030400026162636465666768,0] +assert | 132 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030400026162636465666768] +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction AFW5J5BVPB55EZLNUDP3NPDUKGWO7NP6L3GP6XXLHHXOZVPXUUNA: logic eval error: assert failed pc=132. Details: app=2611, pc=132, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 + +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction AFW5J5BVPB55EZLNUDP3NPDUKGWO7NP6L3GP6XXLHHXOZVPXUUNA: logic eval error: assert failed pc=132. Details: app=2611, pc=132, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 +(fail) ABI > nestedArrayAlongsideBoolean [850.66ms] + + 0 pass + 136 skip + 1 fail + 3 expect() calls +Ran 137 tests across 1 files. [2.11s] diff --git a/u8_2.log b/u8_2.log new file mode 100644 index 000000000..b0a62330d --- /dev/null +++ b/u8_2.log @@ -0,0 +1,251 @@ +bun test v1.1.38 (bf2f153f) + +tests/abi.test.ts: +(skip) ABI > E2E > staticArray +(skip) ABI > E2E > returnStaticArray +(skip) ABI > E2E > staticArrayArg +(skip) ABI > E2E > nonLiteralStaticArrayElements +(skip) ABI > E2E > mixedStaticArrayElements +(skip) ABI > E2E > nonLiteralStaticArrayAccess +(skip) ABI > E2E > setStaticArrayElement +(skip) ABI > E2E > staticArrayInStorageRef +(skip) ABI > E2E > updateStaticArrayInStorageRef +(skip) ABI > E2E > staticArrayInStorageMap +(skip) ABI > E2E > updateStaticArrayInStorageMap +(skip) ABI > E2E > nestedStaticArray +(skip) ABI > E2E > updateNestedStaticArrayElement +(skip) ABI > E2E > updateNestedStaticArray +(skip) ABI > E2E > threeDimensionalUint16Array +(skip) ABI > E2E > simpleTuple +(skip) ABI > E2E > arrayInTuple +(skip) ABI > E2E > tupleInArray +(skip) ABI > E2E > tupleInTuple +(skip) ABI > E2E > shortTypeNotation +(skip) ABI > E2E > disgusting +(skip) ABI > E2E > returnTuple +(skip) ABI > E2E > tupleArg +(skip) ABI > E2E > dynamicArray +(skip) ABI > E2E > returnDynamicArray +(skip) ABI > E2E > dynamicArrayArg +(skip) ABI > E2E > updateDynamicArrayElement +(skip) ABI > E2E > dynamicTupleArray +(skip) ABI > E2E > returnTupleWithDyamicArray +(skip) ABI > E2E > returnDynamicArrayFromTuple +(skip) ABI > E2E > updateDynamicArrayInTuple +(skip) ABI > E2E > nonLiteralDynamicElementInTuple +(skip) ABI > E2E > arrayPush +(skip) ABI > E2E > arrayPop +(skip) ABI > E2E > arrayPopValue +(skip) ABI > E2E > arraySplice +(skip) ABI > E2E > arraySpliceValue +(skip) ABI > E2E > dynamicArrayElements +(skip) ABI > E2E > spliceLastElement +(skip) ABI > E2E > spliceLastElementValue +(skip) ABI > E2E > spliceFirstElement +(skip) ABI > E2E > spliceFirstElementValue +(skip) ABI > E2E > stringReturn +(skip) ABI > E2E > stringArg +(skip) ABI > E2E > stringInTuple +(skip) ABI > E2E > accesStringInTuple +(skip) ABI > E2E > updateStringInTuple +(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes +(skip) ABI > E2E > shortenDynamicElementInTuple +(skip) ABI > E2E > namedTuple +(skip) ABI > E2E > updateNamedTuple +(skip) ABI > E2E > customTypes +(skip) ABI > E2E > staticStringArrayArg +(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray +(skip) ABI > E2E > dynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > accessDynamicArrayElementInTuple +(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple +(skip) ABI > E2E > nestedTuple +(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength +(skip) ABI > E2E > accessDynamicStringArray +(skip) ABI > E2E > txnTypes +(skip) ABI > E2E > arrayLength +(skip) ABI > E2E > stringLength +(skip) ABI > E2E > arrayRef +(skip) ABI > E2E > nestedArrayRef +(skip) ABI > E2E > nonLiteralNestedArrayRef +(skip) ABI > E2E > multiNestedArrayRef +(skip) ABI > E2E > objectArrayRef +(skip) ABI > E2E > stringAccessor +(skip) ABI > E2E > emptyStaticArray +(skip) ABI > E2E > partialStaticArray +(skip) ABI > E2E > emptyDynamicArray +(skip) ABI > E2E > booleanArgAndReturn +(skip) ABI > E2E > boolTuple +(skip) ABI > E2E > staticBoolArray +(skip) ABI > E2E > boolTupleAccess +(skip) ABI > E2E > staticBoolArrayAccess +(skip) ABI > E2E > dynamicBoolArray +(skip) ABI > E2E > dynamicBoolArrayAccess +(skip) ABI > E2E > staticBoolArrayUpdate +(skip) ABI > E2E > dynamicBoolArrayUpdate +(skip) ABI > E2E > boolTupleUpdate +(skip) ABI > E2E > objectRef +(skip) ABI > E2E > storageRefKey +(skip) ABI > E2E > storageRefAccount +(skip) ABI > E2E > angularCasting +(skip) ABI > E2E > castBytesFunction +(skip) ABI > E2E > rawBytesFunction +(skip) ABI > E2E > globalMethodInChain +(skip) ABI > E2E > opcodeParamFromObject +(skip) ABI > E2E > arrayInObjectInState +(skip) ABI > E2E > nestedObject +(skip) ABI > E2E > updateArrayRefInBoxStorage +(skip) ABI > E2E > extractUint +(skip) ABI > E2E > bytesReturn +(skip) ABI > E2E > nestedTypesInSignature +(skip) ABI > E2E > maxUfixed +(skip) ABI > E2E > chainedPropertyAfterTuple +(skip) ABI > E2E > uintCasting +(skip) ABI > E2E > uint64Casting +(skip) ABI > E2E > bytesCasting +(skip) ABI > E2E > biggerByteCasting +(skip) ABI > E2E > smallerByteCasting +(skip) ABI > E2E > multiBytesTuple +(skip) ABI > E2E > boolInObj +(skip) ABI > E2E > plusEqualsArrayValue +(skip) ABI > E2E > plusEqualsObjValue +(skip) ABI > E2E > plusEqualsObjValueInBox +(skip) ABI > E2E > uintNComparison +(skip) ABI > E2E > booleanLastInObj +(skip) ABI > E2E > nestedStructInBoxMap +(skip) ABI > E2E > staticForEach +(skip) ABI > E2E > nestedStaticForEach +(skip) ABI > E2E > nestedStaticForEachInBox +(skip) ABI > E2E > largeNestedStaticForEachInBox +(skip) ABI > E2E > forEachReturn +(skip) ABI > E2E > staticArrayLength +(skip) ABI > E2E > objectInArgs +(skip) ABI > E2E > nestedStaticArrayLength +(skip) ABI > E2E > nestedArrayLengthInObjectVariable +(skip) ABI > staticForOf +(skip) ABI > largeNestedStaticForOfInBox +(skip) ABI > forOfContinue +(skip) ABI > forOfBreak +(skip) ABI > accessStaticArrayInBoxInVariable +(skip) ABI > staticTypeInBox +(skip) ABI > storagePropertyReferenceInBox +(skip) ABI > pushToArrayInBox +(skip) ABI > updateStaticFieldInDynamicObjectInBox +(skip) ABI > dynamicArrayLength +(skip) ABI > dynamicArrayIteration +(skip) ABI > postBoolTupleOffset +(skip) ABI > nestedArrayInBox +(skip) ABI > nestedArrayInBoxLast +(skip) ABI > nestedArrayInBoxWithoutBool +Received error executing Atomic Transaction Composer, for more information enable the debug flag +TEAL | PC | STACK +-------------------------------|------|------- +intcblock 1 | 1 | [] +bytecblock 0x | 4 | [] +txn ApplicationID | 7 | [3360] +! | 9 | [0] +pushint 6 | 10 | [0,6] +* | 12 | [0] +txn OnCompletion | 13 | [0,0] ++ | 15 | [0] +switch *call_NoOp *NOT_IMPL... | 16 | [] +pushbytes 0x5e2d718a // met... | 154 | [0x5e2d718a] +txna ApplicationArgs 0 | 160 | [0x5e2d718a,0x5e2d718a] +match *abi_route_nestedArra... | 163 | [] +pushbytes 0x151f7c75 | 43 | [0x151f7c75] +callsub nestedArrayAlongsid... | 49 | [0x151f7c75] +proto 0 1 | 56 | [0x151f7c75] +bytec 0 // 0x | 59 | [0x151f7c75,0] +bytec 0 // initial head | 60 | [0x151f7c75,0,0] +bytec 0 // initial tail | 61 | [0x151f7c75,0,0,0] +pushbytes 0x001b // initial... | 62 | [0x151f7c75,0,0,0,0x001b] +pushbytes 0x000261626364656... | 66 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +callsub *process_dynamic_tu... | 78 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +proto 4 3 | 181 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] +frame_dig -4 // tuple head | 184 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0] +frame_dig -2 // head offset | 186 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0,0x001b] +concat | 188 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0x001b] +frame_bury -4 // tuple head | 189 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768] +frame_dig -1 // element | 191 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768] +dup | 193 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] +len | 194 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10] +frame_dig -2 // head offset | 195 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,0x001b] +btoi | 197 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,27] ++ | 198 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,37] +itob | 199 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0000000000000025] +extract 6 2 | 200 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0025] +frame_bury -2 // head offset | 203 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] +frame_dig -3 // tuple tail | 205 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768,0] +swap | 207 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0,0x00026162636465666768] +concat | 208 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] +frame_bury -3 // tuple tail | 209 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768] +frame_dig -4 // tuple head | 211 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b] +frame_dig -3 // tuple tail | 213 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768] +frame_dig -2 // head offset | 215 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768,0x0025] +retsub | 217 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000001 | 81 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +callsub *process_static_tup... | 91 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +proto 4 3 | 168 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b,0x0000000000000001] +concat | 175 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000002 | 94 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +callsub *process_static_tup... | 104 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +proto 4 3 | 168 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001,0x0000000000000002] +concat | 175 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] +pushbytes 0x0000000000000003 | 107 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +callsub *process_static_tup... | 117 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +proto 4 3 | 168 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002,0x0000000000000003] +concat | 175 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] +pushbytes 0x08 | 120 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08] +callsub *process_static_tup... | 123 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08] +proto 4 3 | 168 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08] +frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b000000000000000100000000000000020000000000000003] +frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b000000000000000100000000000000020000000000000003,0x08] +concat | 175 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b00000000000000010000000000000002000000000000000308] +frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768] +frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768,0x0025] +retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768,0x0025] +pop // pop head offset | 126 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768] +concat // concat head and tail | 127 | [0x151f7c75,0,0x001b0000000000000001000000000000000200000000000000030800026162636465666768] +frame_bury 0 // o: T10 | 128 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030800026162636465666768] +pushint 0 | 130 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030800026162636465666768,0] +assert | 132 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030800026162636465666768] +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction UXK72RP6QGAAFDGJSO3IS2VWQUYD6BNMX53HN4QBOW4E6RJD5F3Q: logic eval error: assert failed pc=132. Details: app=3360, pc=132, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 + +24 | * @param errorDetails The details of the logic error +25 | * @param program The TEAL source code, split by line +26 | * @param map The source map of the TEAL source code +27 | */ +28 | constructor(errorDetails, program, map) { +29 | super(); + ^ +error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction UXK72RP6QGAAFDGJSO3IS2VWQUYD6BNMX53HN4QBOW4E6RJD5F3Q: logic eval error: assert failed pc=132. Details: app=3360, pc=132, opcodes=frame_bury 0; pushint 0; assert + at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 +(fail) ABI > nestedArrayAlongsideBoolean [1062.40ms] + + 0 pass + 136 skip + 1 fail +Ran 137 tests across 1 files. [2.51s] From af228d1998e146af86219953905e19d1f7969081 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Wed, 18 Dec 2024 14:41:21 -0500 Subject: [PATCH 07/11] if the last element is a bool, make sure to add the length --- src/lib/compiler.ts | 5 +++++ tests/contracts/abi.algo.ts | 8 +++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/lib/compiler.ts b/src/lib/compiler.ts index dcdb8c6ff..4b7ceb47b 100644 --- a/src/lib/compiler.ts +++ b/src/lib/compiler.ts @@ -2397,6 +2397,11 @@ export default class Compiler { } }); + // If the last element is a bool, make sure to add the length + if (consecutiveBools > 0) { + totalLength += Math.ceil(consecutiveBools / 8); + } + return totalLength; } diff --git a/tests/contracts/abi.algo.ts b/tests/contracts/abi.algo.ts index 5d557a53c..e3e2bd5a3 100644 --- a/tests/contracts/abi.algo.ts +++ b/tests/contracts/abi.algo.ts @@ -1631,7 +1631,7 @@ type T10 = { u64a: uint64; u64b: uint64; u64c: uint64; - boolValue: uint8; + boolValue: boolean; }; class ABITestNestedArrayInBox extends Contract { @@ -1643,7 +1643,7 @@ class ABITestNestedArrayInBox extends Contract { u64a: 1, u64b: 2, u64c: 3, - boolValue: 8, + boolValue: false, }; return this.bMap('bMap').value; @@ -1705,11 +1705,9 @@ class ABITestNestedArrayAlongsideBoolean extends Contract { u64a: 1, u64b: 2, u64c: 3, - boolValue: 8, + boolValue: false, }; - assert(false); - return o; } } From a1f333e64f303e330dff53cfd741dce40632639a Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Wed, 18 Dec 2024 14:43:05 -0500 Subject: [PATCH 08/11] undo debugging-related changes --- bool.log | 255 ----------------------------------------------- bool_2.log | 254 ----------------------------------------------- tests/common.ts | 18 ++-- u64.log | 252 ----------------------------------------------- u8.log | 257 ------------------------------------------------ u8_2.log | 251 ---------------------------------------------- 6 files changed, 9 insertions(+), 1278 deletions(-) delete mode 100644 bool.log delete mode 100644 bool_2.log delete mode 100644 u64.log delete mode 100644 u8.log delete mode 100644 u8_2.log diff --git a/bool.log b/bool.log deleted file mode 100644 index a42470c5d..000000000 --- a/bool.log +++ /dev/null @@ -1,255 +0,0 @@ -bun test v1.1.38 (bf2f153f) - -tests/abi.test.ts: -(skip) ABI > E2E > staticArray -(skip) ABI > E2E > returnStaticArray -(skip) ABI > E2E > staticArrayArg -(skip) ABI > E2E > nonLiteralStaticArrayElements -(skip) ABI > E2E > mixedStaticArrayElements -(skip) ABI > E2E > nonLiteralStaticArrayAccess -(skip) ABI > E2E > setStaticArrayElement -(skip) ABI > E2E > staticArrayInStorageRef -(skip) ABI > E2E > updateStaticArrayInStorageRef -(skip) ABI > E2E > staticArrayInStorageMap -(skip) ABI > E2E > updateStaticArrayInStorageMap -(skip) ABI > E2E > nestedStaticArray -(skip) ABI > E2E > updateNestedStaticArrayElement -(skip) ABI > E2E > updateNestedStaticArray -(skip) ABI > E2E > threeDimensionalUint16Array -(skip) ABI > E2E > simpleTuple -(skip) ABI > E2E > arrayInTuple -(skip) ABI > E2E > tupleInArray -(skip) ABI > E2E > tupleInTuple -(skip) ABI > E2E > shortTypeNotation -(skip) ABI > E2E > disgusting -(skip) ABI > E2E > returnTuple -(skip) ABI > E2E > tupleArg -(skip) ABI > E2E > dynamicArray -(skip) ABI > E2E > returnDynamicArray -(skip) ABI > E2E > dynamicArrayArg -(skip) ABI > E2E > updateDynamicArrayElement -(skip) ABI > E2E > dynamicTupleArray -(skip) ABI > E2E > returnTupleWithDyamicArray -(skip) ABI > E2E > returnDynamicArrayFromTuple -(skip) ABI > E2E > updateDynamicArrayInTuple -(skip) ABI > E2E > nonLiteralDynamicElementInTuple -(skip) ABI > E2E > arrayPush -(skip) ABI > E2E > arrayPop -(skip) ABI > E2E > arrayPopValue -(skip) ABI > E2E > arraySplice -(skip) ABI > E2E > arraySpliceValue -(skip) ABI > E2E > dynamicArrayElements -(skip) ABI > E2E > spliceLastElement -(skip) ABI > E2E > spliceLastElementValue -(skip) ABI > E2E > spliceFirstElement -(skip) ABI > E2E > spliceFirstElementValue -(skip) ABI > E2E > stringReturn -(skip) ABI > E2E > stringArg -(skip) ABI > E2E > stringInTuple -(skip) ABI > E2E > accesStringInTuple -(skip) ABI > E2E > updateStringInTuple -(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes -(skip) ABI > E2E > shortenDynamicElementInTuple -(skip) ABI > E2E > namedTuple -(skip) ABI > E2E > updateNamedTuple -(skip) ABI > E2E > customTypes -(skip) ABI > E2E > staticStringArrayArg -(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray -(skip) ABI > E2E > dynamicArrayInMiddleOfTuple -(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple -(skip) ABI > E2E > accessDynamicArrayElementInTuple -(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple -(skip) ABI > E2E > nestedTuple -(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength -(skip) ABI > E2E > accessDynamicStringArray -(skip) ABI > E2E > txnTypes -(skip) ABI > E2E > arrayLength -(skip) ABI > E2E > stringLength -(skip) ABI > E2E > arrayRef -(skip) ABI > E2E > nestedArrayRef -(skip) ABI > E2E > nonLiteralNestedArrayRef -(skip) ABI > E2E > multiNestedArrayRef -(skip) ABI > E2E > objectArrayRef -(skip) ABI > E2E > stringAccessor -(skip) ABI > E2E > emptyStaticArray -(skip) ABI > E2E > partialStaticArray -(skip) ABI > E2E > emptyDynamicArray -(skip) ABI > E2E > booleanArgAndReturn -(skip) ABI > E2E > boolTuple -(skip) ABI > E2E > staticBoolArray -(skip) ABI > E2E > boolTupleAccess -(skip) ABI > E2E > staticBoolArrayAccess -(skip) ABI > E2E > dynamicBoolArray -(skip) ABI > E2E > dynamicBoolArrayAccess -(skip) ABI > E2E > staticBoolArrayUpdate -(skip) ABI > E2E > dynamicBoolArrayUpdate -(skip) ABI > E2E > boolTupleUpdate -(skip) ABI > E2E > objectRef -(skip) ABI > E2E > storageRefKey -(skip) ABI > E2E > storageRefAccount -(skip) ABI > E2E > angularCasting -(skip) ABI > E2E > castBytesFunction -(skip) ABI > E2E > rawBytesFunction -(skip) ABI > E2E > globalMethodInChain -(skip) ABI > E2E > opcodeParamFromObject -(skip) ABI > E2E > arrayInObjectInState -(skip) ABI > E2E > nestedObject -(skip) ABI > E2E > updateArrayRefInBoxStorage -(skip) ABI > E2E > extractUint -(skip) ABI > E2E > bytesReturn -(skip) ABI > E2E > nestedTypesInSignature -(skip) ABI > E2E > maxUfixed -(skip) ABI > E2E > chainedPropertyAfterTuple -(skip) ABI > E2E > uintCasting -(skip) ABI > E2E > uint64Casting -(skip) ABI > E2E > bytesCasting -(skip) ABI > E2E > biggerByteCasting -(skip) ABI > E2E > smallerByteCasting -(skip) ABI > E2E > multiBytesTuple -(skip) ABI > E2E > boolInObj -(skip) ABI > E2E > plusEqualsArrayValue -(skip) ABI > E2E > plusEqualsObjValue -(skip) ABI > E2E > plusEqualsObjValueInBox -(skip) ABI > E2E > uintNComparison -(skip) ABI > E2E > booleanLastInObj -(skip) ABI > E2E > nestedStructInBoxMap -(skip) ABI > E2E > staticForEach -(skip) ABI > E2E > nestedStaticForEach -(skip) ABI > E2E > nestedStaticForEachInBox -(skip) ABI > E2E > largeNestedStaticForEachInBox -(skip) ABI > E2E > forEachReturn -(skip) ABI > E2E > staticArrayLength -(skip) ABI > E2E > objectInArgs -(skip) ABI > E2E > nestedStaticArrayLength -(skip) ABI > E2E > nestedArrayLengthInObjectVariable -(skip) ABI > staticForOf -(skip) ABI > largeNestedStaticForOfInBox -(skip) ABI > forOfContinue -(skip) ABI > forOfBreak -(skip) ABI > accessStaticArrayInBoxInVariable -(skip) ABI > staticTypeInBox -(skip) ABI > storagePropertyReferenceInBox -(skip) ABI > pushToArrayInBox -(skip) ABI > updateStaticFieldInDynamicObjectInBox -(skip) ABI > dynamicArrayLength -(skip) ABI > dynamicArrayIteration -(skip) ABI > postBoolTupleOffset -(skip) ABI > nestedArrayInBox -(skip) ABI > nestedArrayInBoxLast -(skip) ABI > nestedArrayInBoxWithoutBool -Received error executing Atomic Transaction Composer, for more information enable the debug flag -TEAL | PC | STACK --------------------------------|------|------- -intcblock 0 1 | 1 | [] -bytecblock 0x | 5 | [] -txn ApplicationID | 8 | [2608] -! | 10 | [0] -pushint 6 | 11 | [0,6] -* | 13 | [0] -txn OnCompletion | 14 | [0,0] -+ | 16 | [0] -switch *call_NoOp *NOT_IMPL... | 17 | [] -pushbytes 0xc49cb9a7 // met... | 156 | [0xc49cb9a7] -txna ApplicationArgs 0 | 162 | [0xc49cb9a7,0xc49cb9a7] -match *abi_route_nestedArra... | 165 | [] -pushbytes 0x151f7c75 | 44 | [0x151f7c75] -callsub nestedArrayAlongsid... | 50 | [0x151f7c75] -proto 0 1 | 57 | [0x151f7c75] -bytec 0 // 0x | 60 | [0x151f7c75,0] -bytec 0 // initial head | 61 | [0x151f7c75,0,0] -bytec 0 // initial tail | 62 | [0x151f7c75,0,0,0] -pushbytes 0x001a // initial... | 63 | [0x151f7c75,0,0,0,0x001a] -pushbytes 0x000261626364656... | 67 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] -callsub *process_dynamic_tu... | 79 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] -proto 4 3 | 183 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] -frame_dig -4 // tuple head | 186 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0] -frame_dig -2 // head offset | 188 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0,0x001a] -concat | 190 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0x001a] -frame_bury -4 // tuple head | 191 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768] -frame_dig -1 // element | 193 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768] -dup | 195 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] -len | 196 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10] -frame_dig -2 // head offset | 197 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,0x001a] -btoi | 199 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,26] -+ | 200 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,36] -itob | 201 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0000000000000024] -extract 6 2 | 202 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0024] -frame_bury -2 // head offset | 205 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] -frame_dig -3 // tuple tail | 207 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768,0] -swap | 209 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0,0x00026162636465666768] -concat | 210 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] -frame_bury -3 // tuple tail | 211 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768] -frame_dig -4 // tuple head | 213 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a] -frame_dig -3 // tuple tail | 215 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768] -frame_dig -2 // head offset | 217 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768,0x0024] -retsub | 219 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024] -pushbytes 0x0000000000000001 | 82 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] -callsub *process_static_tup... | 92 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] -proto 4 3 | 170 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] -frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a] -frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a,0x0000000000000001] -concat | 177 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001] -frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768] -frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768,0x0024] -retsub | 182 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024] -pushbytes 0x0000000000000002 | 95 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] -callsub *process_static_tup... | 105 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] -proto 4 3 | 170 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] -frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001] -frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001,0x0000000000000002] -concat | 177 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002] -frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768] -frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] -retsub | 182 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] -pushbytes 0x0000000000000003 | 108 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] -callsub *process_static_tup... | 118 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] -proto 4 3 | 170 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] -frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002] -frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002,0x0000000000000003] -concat | 177 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003] -frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768] -frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] -retsub | 182 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] -pushbytes 0x00 | 121 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] -intc 0 // 0 | 124 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0] -dup | 125 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0,0] -setbit | 126 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] - -callsub *process_static_tup... | 127 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] -proto 4 3 | 170 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] -frame_dig -4 // tuple head | 173 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003] -frame_dig -1 // element | 175 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003,0x00] -concat | 177 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300] -frame_dig -3 // tuple tail | 178 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768] -frame_dig -2 // head offset | 180 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] -retsub | 182 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] -concat | 130 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x000261626364656667680024] -pop // pop head offset | 131 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300] -concat // concat head and tail | 132 | [0x151f7c75,0x001a00000000000000010000000000000002000000000000000300] -frame_bury 0 // o: T10 | 133 | [0x151f7c75] -24 | * @param errorDetails The details of the logic error -25 | * @param program The TEAL source code, split by line -26 | * @param map The source map of the TEAL source code -27 | */ -28 | constructor(errorDetails, program, map) { -29 | super(); - ^ -error: frame_bury above stack. at:72. Error during resource population simulation in transaction 0: transaction AJ655D3QX3FPHISBAYATEFN67MS2CTZY3IYXOYPNYASBUHL5OVJQ: logic eval error: frame_bury above stack. Details: app=2608, pc=133, opcodes=pop; concat; frame_bury 0 - at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 - -24 | * @param errorDetails The details of the logic error -25 | * @param program The TEAL source code, split by line -26 | * @param map The source map of the TEAL source code -27 | */ -28 | constructor(errorDetails, program, map) { -29 | super(); - ^ -error: frame_bury above stack. at:72. Error during resource population simulation in transaction 0: transaction AJ655D3QX3FPHISBAYATEFN67MS2CTZY3IYXOYPNYASBUHL5OVJQ: logic eval error: frame_bury above stack. Details: app=2608, pc=133, opcodes=pop; concat; frame_bury 0 - at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 -(fail) ABI > nestedArrayAlongsideBoolean [1040.50ms] - - 0 pass - 136 skip - 1 fail - 3 expect() calls -Ran 137 tests across 1 files. [2.52s] diff --git a/bool_2.log b/bool_2.log deleted file mode 100644 index f866a4e1f..000000000 --- a/bool_2.log +++ /dev/null @@ -1,254 +0,0 @@ -bun test v1.1.38 (bf2f153f) - -tests/abi.test.ts: -(skip) ABI > E2E > staticArray -(skip) ABI > E2E > returnStaticArray -(skip) ABI > E2E > staticArrayArg -(skip) ABI > E2E > nonLiteralStaticArrayElements -(skip) ABI > E2E > mixedStaticArrayElements -(skip) ABI > E2E > nonLiteralStaticArrayAccess -(skip) ABI > E2E > setStaticArrayElement -(skip) ABI > E2E > staticArrayInStorageRef -(skip) ABI > E2E > updateStaticArrayInStorageRef -(skip) ABI > E2E > staticArrayInStorageMap -(skip) ABI > E2E > updateStaticArrayInStorageMap -(skip) ABI > E2E > nestedStaticArray -(skip) ABI > E2E > updateNestedStaticArrayElement -(skip) ABI > E2E > updateNestedStaticArray -(skip) ABI > E2E > threeDimensionalUint16Array -(skip) ABI > E2E > simpleTuple -(skip) ABI > E2E > arrayInTuple -(skip) ABI > E2E > tupleInArray -(skip) ABI > E2E > tupleInTuple -(skip) ABI > E2E > shortTypeNotation -(skip) ABI > E2E > disgusting -(skip) ABI > E2E > returnTuple -(skip) ABI > E2E > tupleArg -(skip) ABI > E2E > dynamicArray -(skip) ABI > E2E > returnDynamicArray -(skip) ABI > E2E > dynamicArrayArg -(skip) ABI > E2E > updateDynamicArrayElement -(skip) ABI > E2E > dynamicTupleArray -(skip) ABI > E2E > returnTupleWithDyamicArray -(skip) ABI > E2E > returnDynamicArrayFromTuple -(skip) ABI > E2E > updateDynamicArrayInTuple -(skip) ABI > E2E > nonLiteralDynamicElementInTuple -(skip) ABI > E2E > arrayPush -(skip) ABI > E2E > arrayPop -(skip) ABI > E2E > arrayPopValue -(skip) ABI > E2E > arraySplice -(skip) ABI > E2E > arraySpliceValue -(skip) ABI > E2E > dynamicArrayElements -(skip) ABI > E2E > spliceLastElement -(skip) ABI > E2E > spliceLastElementValue -(skip) ABI > E2E > spliceFirstElement -(skip) ABI > E2E > spliceFirstElementValue -(skip) ABI > E2E > stringReturn -(skip) ABI > E2E > stringArg -(skip) ABI > E2E > stringInTuple -(skip) ABI > E2E > accesStringInTuple -(skip) ABI > E2E > updateStringInTuple -(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes -(skip) ABI > E2E > shortenDynamicElementInTuple -(skip) ABI > E2E > namedTuple -(skip) ABI > E2E > updateNamedTuple -(skip) ABI > E2E > customTypes -(skip) ABI > E2E > staticStringArrayArg -(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray -(skip) ABI > E2E > dynamicArrayInMiddleOfTuple -(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple -(skip) ABI > E2E > accessDynamicArrayElementInTuple -(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple -(skip) ABI > E2E > nestedTuple -(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength -(skip) ABI > E2E > accessDynamicStringArray -(skip) ABI > E2E > txnTypes -(skip) ABI > E2E > arrayLength -(skip) ABI > E2E > stringLength -(skip) ABI > E2E > arrayRef -(skip) ABI > E2E > nestedArrayRef -(skip) ABI > E2E > nonLiteralNestedArrayRef -(skip) ABI > E2E > multiNestedArrayRef -(skip) ABI > E2E > objectArrayRef -(skip) ABI > E2E > stringAccessor -(skip) ABI > E2E > emptyStaticArray -(skip) ABI > E2E > partialStaticArray -(skip) ABI > E2E > emptyDynamicArray -(skip) ABI > E2E > booleanArgAndReturn -(skip) ABI > E2E > boolTuple -(skip) ABI > E2E > staticBoolArray -(skip) ABI > E2E > boolTupleAccess -(skip) ABI > E2E > staticBoolArrayAccess -(skip) ABI > E2E > dynamicBoolArray -(skip) ABI > E2E > dynamicBoolArrayAccess -(skip) ABI > E2E > staticBoolArrayUpdate -(skip) ABI > E2E > dynamicBoolArrayUpdate -(skip) ABI > E2E > boolTupleUpdate -(skip) ABI > E2E > objectRef -(skip) ABI > E2E > storageRefKey -(skip) ABI > E2E > storageRefAccount -(skip) ABI > E2E > angularCasting -(skip) ABI > E2E > castBytesFunction -(skip) ABI > E2E > rawBytesFunction -(skip) ABI > E2E > globalMethodInChain -(skip) ABI > E2E > opcodeParamFromObject -(skip) ABI > E2E > arrayInObjectInState -(skip) ABI > E2E > nestedObject -(skip) ABI > E2E > updateArrayRefInBoxStorage -(skip) ABI > E2E > extractUint -(skip) ABI > E2E > bytesReturn -(skip) ABI > E2E > nestedTypesInSignature -(skip) ABI > E2E > maxUfixed -(skip) ABI > E2E > chainedPropertyAfterTuple -(skip) ABI > E2E > uintCasting -(skip) ABI > E2E > uint64Casting -(skip) ABI > E2E > bytesCasting -(skip) ABI > E2E > biggerByteCasting -(skip) ABI > E2E > smallerByteCasting -(skip) ABI > E2E > multiBytesTuple -(skip) ABI > E2E > boolInObj -(skip) ABI > E2E > plusEqualsArrayValue -(skip) ABI > E2E > plusEqualsObjValue -(skip) ABI > E2E > plusEqualsObjValueInBox -(skip) ABI > E2E > uintNComparison -(skip) ABI > E2E > booleanLastInObj -(skip) ABI > E2E > nestedStructInBoxMap -(skip) ABI > E2E > staticForEach -(skip) ABI > E2E > nestedStaticForEach -(skip) ABI > E2E > nestedStaticForEachInBox -(skip) ABI > E2E > largeNestedStaticForEachInBox -(skip) ABI > E2E > forEachReturn -(skip) ABI > E2E > staticArrayLength -(skip) ABI > E2E > objectInArgs -(skip) ABI > E2E > nestedStaticArrayLength -(skip) ABI > E2E > nestedArrayLengthInObjectVariable -(skip) ABI > staticForOf -(skip) ABI > largeNestedStaticForOfInBox -(skip) ABI > forOfContinue -(skip) ABI > forOfBreak -(skip) ABI > accessStaticArrayInBoxInVariable -(skip) ABI > staticTypeInBox -(skip) ABI > storagePropertyReferenceInBox -(skip) ABI > pushToArrayInBox -(skip) ABI > updateStaticFieldInDynamicObjectInBox -(skip) ABI > dynamicArrayLength -(skip) ABI > dynamicArrayIteration -(skip) ABI > postBoolTupleOffset -(skip) ABI > nestedArrayInBox -(skip) ABI > nestedArrayInBoxLast -(skip) ABI > nestedArrayInBoxWithoutBool -Received error executing Atomic Transaction Composer, for more information enable the debug flag -TEAL | PC | STACK --------------------------------|------|------- -intcblock 0 1 | 1 | [] -bytecblock 0x | 5 | [] -txn ApplicationID | 8 | [3359] -! | 10 | [0] -pushint 6 | 11 | [0,6] -* | 13 | [0] -txn OnCompletion | 14 | [0,0] -+ | 16 | [0] -switch *call_NoOp *NOT_IMPL... | 17 | [] -pushbytes 0xc49cb9a7 // met... | 157 | [0xc49cb9a7] -txna ApplicationArgs 0 | 163 | [0xc49cb9a7,0xc49cb9a7] -match *abi_route_nestedArra... | 166 | [] -pushbytes 0x151f7c75 | 44 | [0x151f7c75] -callsub nestedArrayAlongsid... | 50 | [0x151f7c75] -proto 0 1 | 57 | [0x151f7c75] -bytec 0 // 0x | 60 | [0x151f7c75,0] -bytec 0 // initial head | 61 | [0x151f7c75,0,0] -bytec 0 // initial tail | 62 | [0x151f7c75,0,0,0] -pushbytes 0x001a // initial... | 63 | [0x151f7c75,0,0,0,0x001a] -pushbytes 0x000261626364656... | 67 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] -callsub *process_dynamic_tu... | 79 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] -proto 4 3 | 184 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768] -frame_dig -4 // tuple head | 187 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0] -frame_dig -2 // head offset | 189 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0,0x001a] -concat | 191 | [0x151f7c75,0,0,0,0x001a,0x00026162636465666768,0x001a] -frame_bury -4 // tuple head | 192 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768] -frame_dig -1 // element | 194 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768] -dup | 196 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] -len | 197 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10] -frame_dig -2 // head offset | 198 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,0x001a] -btoi | 200 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,10,26] -+ | 201 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,36] -itob | 202 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0000000000000024] -extract 6 2 | 203 | [0x151f7c75,0,0x001a,0,0x001a,0x00026162636465666768,0x00026162636465666768,0x0024] -frame_bury -2 // head offset | 206 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] -frame_dig -3 // tuple tail | 208 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768,0] -swap | 210 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0,0x00026162636465666768] -concat | 211 | [0x151f7c75,0,0x001a,0,0x0024,0x00026162636465666768,0x00026162636465666768] -frame_bury -3 // tuple tail | 212 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768] -frame_dig -4 // tuple head | 214 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a] -frame_dig -3 // tuple tail | 216 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768] -frame_dig -2 // head offset | 218 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x00026162636465666768,0x001a,0x00026162636465666768,0x0024] -retsub | 220 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024] -pushbytes 0x0000000000000001 | 82 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] -callsub *process_static_tup... | 92 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] -proto 4 3 | 171 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001] -frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a] -frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a,0x0000000000000001] -concat | 178 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001] -frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768] -frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a,0x00026162636465666768,0x0024,0x0000000000000001,0x001a0000000000000001,0x00026162636465666768,0x0024] -retsub | 183 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024] -pushbytes 0x0000000000000002 | 95 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] -callsub *process_static_tup... | 105 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] -proto 4 3 | 171 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002] -frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001] -frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a0000000000000001,0x0000000000000002] -concat | 178 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002] -frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768] -frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a0000000000000001,0x00026162636465666768,0x0024,0x0000000000000002,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] -retsub | 183 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024] -pushbytes 0x0000000000000003 | 108 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] -callsub *process_static_tup... | 118 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] -proto 4 3 | 171 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003] -frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002] -frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a00000000000000010000000000000002,0x0000000000000003] -concat | 178 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003] -frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768] -frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a00000000000000010000000000000002,0x00026162636465666768,0x0024,0x0000000000000003,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] -retsub | 183 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024] -pushbytes 0x00 | 121 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] -intc 0 // 0 | 124 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0] -dup | 125 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0,0] -setbit | 126 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] -callsub *process_static_tup... | 127 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] -proto 4 3 | 171 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00] -frame_dig -4 // tuple head | 174 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003] -frame_dig -1 // element | 176 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a000000000000000100000000000000020000000000000003,0x00] -concat | 178 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300] -frame_dig -3 // tuple tail | 179 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768] -frame_dig -2 // head offset | 181 | [0x151f7c75,0,0x001a000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0024,0x00,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] -retsub | 183 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768,0x0024] -pop // pop head offset | 130 | [0x151f7c75,0,0x001a00000000000000010000000000000002000000000000000300,0x00026162636465666768] -concat // concat head and tail | 131 | [0x151f7c75,0,0x001a0000000000000001000000000000000200000000000000030000026162636465666768] -frame_bury 0 // o: T10 | 132 | [0x151f7c75,0x001a0000000000000001000000000000000200000000000000030000026162636465666768] -intc 0 // 0 | 134 | [0x151f7c75,0x001a0000000000000001000000000000000200000000000000030000026162636465666768,0] -assert | 135 | [0x151f7c75,0x001a0000000000000001000000000000000200000000000000030000026162636465666768] -24 | * @param errorDetails The details of the logic error -25 | * @param program The TEAL source code, split by line -26 | * @param map The source map of the TEAL source code -27 | */ -28 | constructor(errorDetails, program, map) { -29 | super(); - ^ -error: assert failed pc=135. at:76. Error during resource population simulation in transaction 0: transaction ONARQYW7XPG7SRUNYRS55TD3Y53HJKP2Y44MJZ34NNZGZJTAHDWA: logic eval error: assert failed pc=135. Details: app=3359, pc=135, opcodes=frame_bury 0; intc_0 // 0; assert - at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 - -24 | * @param errorDetails The details of the logic error -25 | * @param program The TEAL source code, split by line -26 | * @param map The source map of the TEAL source code -27 | */ -28 | constructor(errorDetails, program, map) { -29 | super(); - ^ -error: assert failed pc=135. at:76. Error during resource population simulation in transaction 0: transaction ONARQYW7XPG7SRUNYRS55TD3Y53HJKP2Y44MJZ34NNZGZJTAHDWA: logic eval error: assert failed pc=135. Details: app=3359, pc=135, opcodes=frame_bury 0; intc_0 // 0; assert - at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 -(fail) ABI > nestedArrayAlongsideBoolean [1022.31ms] - - 0 pass - 136 skip - 1 fail -Ran 137 tests across 1 files. [2.34s] diff --git a/tests/common.ts b/tests/common.ts index 362967da6..4ce221737 100644 --- a/tests/common.ts +++ b/tests/common.ts @@ -118,15 +118,15 @@ export async function compileAndCreate( await compiler.compile(); await compiler.algodCompile(); - // expect(compiler.teal.approval.map((t) => t.teal).join('\n')).toEqual( - // fs.readFileSync(`${artifactsPath}/${className}.approval.teal`, 'utf-8') - // ); - // expect(compiler.arc4Description()).toEqual( - // JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc4.json`, 'utf-8')) - // ); - // expect(compiler.arc32Description()).toEqual( - // JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc32.json`, 'utf-8')) - // ); + expect(compiler.teal.approval.map((t) => t.teal).join('\n')).toEqual( + fs.readFileSync(`${artifactsPath}/${className}.approval.teal`, 'utf-8') + ); + expect(compiler.arc4Description()).toEqual( + JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc4.json`, 'utf-8')) + ); + expect(compiler.arc32Description()).toEqual( + JSON.parse(fs.readFileSync(`${artifactsPath}/${className}.arc32.json`, 'utf-8')) + ); const appClient = algokit.getAppClient( { diff --git a/u64.log b/u64.log deleted file mode 100644 index 30cd8193a..000000000 --- a/u64.log +++ /dev/null @@ -1,252 +0,0 @@ -bun test v1.1.38 (bf2f153f) - -tests/abi.test.ts: -(skip) ABI > E2E > staticArray -(skip) ABI > E2E > returnStaticArray -(skip) ABI > E2E > staticArrayArg -(skip) ABI > E2E > nonLiteralStaticArrayElements -(skip) ABI > E2E > mixedStaticArrayElements -(skip) ABI > E2E > nonLiteralStaticArrayAccess -(skip) ABI > E2E > setStaticArrayElement -(skip) ABI > E2E > staticArrayInStorageRef -(skip) ABI > E2E > updateStaticArrayInStorageRef -(skip) ABI > E2E > staticArrayInStorageMap -(skip) ABI > E2E > updateStaticArrayInStorageMap -(skip) ABI > E2E > nestedStaticArray -(skip) ABI > E2E > updateNestedStaticArrayElement -(skip) ABI > E2E > updateNestedStaticArray -(skip) ABI > E2E > threeDimensionalUint16Array -(skip) ABI > E2E > simpleTuple -(skip) ABI > E2E > arrayInTuple -(skip) ABI > E2E > tupleInArray -(skip) ABI > E2E > tupleInTuple -(skip) ABI > E2E > shortTypeNotation -(skip) ABI > E2E > disgusting -(skip) ABI > E2E > returnTuple -(skip) ABI > E2E > tupleArg -(skip) ABI > E2E > dynamicArray -(skip) ABI > E2E > returnDynamicArray -(skip) ABI > E2E > dynamicArrayArg -(skip) ABI > E2E > updateDynamicArrayElement -(skip) ABI > E2E > dynamicTupleArray -(skip) ABI > E2E > returnTupleWithDyamicArray -(skip) ABI > E2E > returnDynamicArrayFromTuple -(skip) ABI > E2E > updateDynamicArrayInTuple -(skip) ABI > E2E > nonLiteralDynamicElementInTuple -(skip) ABI > E2E > arrayPush -(skip) ABI > E2E > arrayPop -(skip) ABI > E2E > arrayPopValue -(skip) ABI > E2E > arraySplice -(skip) ABI > E2E > arraySpliceValue -(skip) ABI > E2E > dynamicArrayElements -(skip) ABI > E2E > spliceLastElement -(skip) ABI > E2E > spliceLastElementValue -(skip) ABI > E2E > spliceFirstElement -(skip) ABI > E2E > spliceFirstElementValue -(skip) ABI > E2E > stringReturn -(skip) ABI > E2E > stringArg -(skip) ABI > E2E > stringInTuple -(skip) ABI > E2E > accesStringInTuple -(skip) ABI > E2E > updateStringInTuple -(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes -(skip) ABI > E2E > shortenDynamicElementInTuple -(skip) ABI > E2E > namedTuple -(skip) ABI > E2E > updateNamedTuple -(skip) ABI > E2E > customTypes -(skip) ABI > E2E > staticStringArrayArg -(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray -(skip) ABI > E2E > dynamicArrayInMiddleOfTuple -(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple -(skip) ABI > E2E > accessDynamicArrayElementInTuple -(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple -(skip) ABI > E2E > nestedTuple -(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength -(skip) ABI > E2E > accessDynamicStringArray -(skip) ABI > E2E > txnTypes -(skip) ABI > E2E > arrayLength -(skip) ABI > E2E > stringLength -(skip) ABI > E2E > arrayRef -(skip) ABI > E2E > nestedArrayRef -(skip) ABI > E2E > nonLiteralNestedArrayRef -(skip) ABI > E2E > multiNestedArrayRef -(skip) ABI > E2E > objectArrayRef -(skip) ABI > E2E > stringAccessor -(skip) ABI > E2E > emptyStaticArray -(skip) ABI > E2E > partialStaticArray -(skip) ABI > E2E > emptyDynamicArray -(skip) ABI > E2E > booleanArgAndReturn -(skip) ABI > E2E > boolTuple -(skip) ABI > E2E > staticBoolArray -(skip) ABI > E2E > boolTupleAccess -(skip) ABI > E2E > staticBoolArrayAccess -(skip) ABI > E2E > dynamicBoolArray -(skip) ABI > E2E > dynamicBoolArrayAccess -(skip) ABI > E2E > staticBoolArrayUpdate -(skip) ABI > E2E > dynamicBoolArrayUpdate -(skip) ABI > E2E > boolTupleUpdate -(skip) ABI > E2E > objectRef -(skip) ABI > E2E > storageRefKey -(skip) ABI > E2E > storageRefAccount -(skip) ABI > E2E > angularCasting -(skip) ABI > E2E > castBytesFunction -(skip) ABI > E2E > rawBytesFunction -(skip) ABI > E2E > globalMethodInChain -(skip) ABI > E2E > opcodeParamFromObject -(skip) ABI > E2E > arrayInObjectInState -(skip) ABI > E2E > nestedObject -(skip) ABI > E2E > updateArrayRefInBoxStorage -(skip) ABI > E2E > extractUint -(skip) ABI > E2E > bytesReturn -(skip) ABI > E2E > nestedTypesInSignature -(skip) ABI > E2E > maxUfixed -(skip) ABI > E2E > chainedPropertyAfterTuple -(skip) ABI > E2E > uintCasting -(skip) ABI > E2E > uint64Casting -(skip) ABI > E2E > bytesCasting -(skip) ABI > E2E > biggerByteCasting -(skip) ABI > E2E > smallerByteCasting -(skip) ABI > E2E > multiBytesTuple -(skip) ABI > E2E > boolInObj -(skip) ABI > E2E > plusEqualsArrayValue -(skip) ABI > E2E > plusEqualsObjValue -(skip) ABI > E2E > plusEqualsObjValueInBox -(skip) ABI > E2E > uintNComparison -(skip) ABI > E2E > booleanLastInObj -(skip) ABI > E2E > nestedStructInBoxMap -(skip) ABI > E2E > staticForEach -(skip) ABI > E2E > nestedStaticForEach -(skip) ABI > E2E > nestedStaticForEachInBox -(skip) ABI > E2E > largeNestedStaticForEachInBox -(skip) ABI > E2E > forEachReturn -(skip) ABI > E2E > staticArrayLength -(skip) ABI > E2E > objectInArgs -(skip) ABI > E2E > nestedStaticArrayLength -(skip) ABI > E2E > nestedArrayLengthInObjectVariable -(skip) ABI > staticForOf -(skip) ABI > largeNestedStaticForOfInBox -(skip) ABI > forOfContinue -(skip) ABI > forOfBreak -(skip) ABI > accessStaticArrayInBoxInVariable -(skip) ABI > staticTypeInBox -(skip) ABI > storagePropertyReferenceInBox -(skip) ABI > pushToArrayInBox -(skip) ABI > updateStaticFieldInDynamicObjectInBox -(skip) ABI > dynamicArrayLength -(skip) ABI > dynamicArrayIteration -(skip) ABI > postBoolTupleOffset -(skip) ABI > nestedArrayInBox -(skip) ABI > nestedArrayInBoxLast -(skip) ABI > nestedArrayInBoxWithoutBool -Received error executing Atomic Transaction Composer, for more information enable the debug flag -TEAL | PC | STACK --------------------------------|------|------- -intcblock 1 | 1 | [] -bytecblock 0x | 4 | [] -txn ApplicationID | 7 | [2607] -! | 9 | [0] -pushint 6 | 10 | [0,6] -* | 12 | [0] -txn OnCompletion | 13 | [0,0] -+ | 15 | [0] -switch *call_NoOp *NOT_IMPL... | 16 | [] -pushbytes 0x915e4eb7 // met... | 161 | [0x915e4eb7] -txna ApplicationArgs 0 | 167 | [0x915e4eb7,0x915e4eb7] -match *abi_route_nestedArra... | 170 | [] -pushbytes 0x151f7c75 | 43 | [0x151f7c75] -callsub nestedArrayAlongsid... | 49 | [0x151f7c75] -proto 0 1 | 56 | [0x151f7c75] -bytec 0 // 0x | 59 | [0x151f7c75,0] -bytec 0 // initial head | 60 | [0x151f7c75,0,0] -bytec 0 // initial tail | 61 | [0x151f7c75,0,0,0] -pushbytes 0x0022 // initial... | 62 | [0x151f7c75,0,0,0,0x0022] -pushbytes 0x000261626364656... | 66 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768] -callsub *process_dynamic_tu... | 78 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768] -proto 4 3 | 188 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768] -frame_dig -4 // tuple head | 191 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768,0] -frame_dig -2 // head offset | 193 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768,0,0x0022] -concat | 195 | [0x151f7c75,0,0,0,0x0022,0x00026162636465666768,0x0022] -frame_bury -4 // tuple head | 196 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768] -frame_dig -1 // element | 198 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768] -dup | 200 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] -len | 201 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,10] -frame_dig -2 // head offset | 202 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,10,0x0022] -btoi | 204 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,10,34] -+ | 205 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,44] -itob | 206 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,0x000000000000002c] -extract 6 2 | 207 | [0x151f7c75,0,0x0022,0,0x0022,0x00026162636465666768,0x00026162636465666768,0x002c] -frame_bury -2 // head offset | 210 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0x00026162636465666768] -frame_dig -3 // tuple tail | 212 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0x00026162636465666768,0] -swap | 214 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0,0x00026162636465666768] -concat | 215 | [0x151f7c75,0,0x0022,0,0x002c,0x00026162636465666768,0x00026162636465666768] -frame_bury -3 // tuple tail | 216 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768] -frame_dig -4 // tuple head | 218 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768,0x0022] -frame_dig -3 // tuple tail | 220 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768,0x0022,0x00026162636465666768] -frame_dig -2 // head offset | 222 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x00026162636465666768,0x0022,0x00026162636465666768,0x002c] -retsub | 224 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c] -pushbytes 0x0000000000000001 | 81 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001] -callsub *process_static_tup... | 91 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001] -proto 4 3 | 175 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001] -frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x0022] -frame_dig -1 // element | 180 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x0022,0x0000000000000001] -concat | 182 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x00220000000000000001] -frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x00220000000000000001,0x00026162636465666768] -frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x0022,0x00026162636465666768,0x002c,0x0000000000000001,0x00220000000000000001,0x00026162636465666768,0x002c] -retsub | 187 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c] -pushbytes 0x0000000000000002 | 94 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002] -callsub *process_static_tup... | 104 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002] -proto 4 3 | 175 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002] -frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x00220000000000000001] -frame_dig -1 // element | 180 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x00220000000000000001,0x0000000000000002] -concat | 182 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x002200000000000000010000000000000002] -frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x002200000000000000010000000000000002,0x00026162636465666768] -frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x00220000000000000001,0x00026162636465666768,0x002c,0x0000000000000002,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c] -retsub | 187 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c] -pushbytes 0x0000000000000003 | 107 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003] -callsub *process_static_tup... | 117 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003] -proto 4 3 | 175 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003] -frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x002200000000000000010000000000000002] -frame_dig -1 // element | 180 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x002200000000000000010000000000000002,0x0000000000000003] -concat | 182 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x0022000000000000000100000000000000020000000000000003] -frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768] -frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x002200000000000000010000000000000002,0x00026162636465666768,0x002c,0x0000000000000003,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c] -retsub | 187 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c] -pushbytes 0x0000000000000004 | 120 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004] -callsub *process_static_tup... | 130 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004] -proto 4 3 | 175 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004] -frame_dig -4 // tuple head | 178 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x0022000000000000000100000000000000020000000000000003] -frame_dig -1 // element | 180 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x0022000000000000000100000000000000020000000000000003,0x0000000000000004] -concat | 182 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x00220000000000000001000000000000000200000000000000030000000000000004] -frame_dig -3 // tuple tail | 183 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768] -frame_dig -2 // head offset | 185 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003,0x00026162636465666768,0x002c,0x0000000000000004,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768,0x002c] -retsub | 187 | [0x151f7c75,0,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768,0x002c] -pop // pop head offset | 133 | [0x151f7c75,0,0x00220000000000000001000000000000000200000000000000030000000000000004,0x00026162636465666768] -concat // concat head and tail | 134 | [0x151f7c75,0,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768] -frame_bury 0 // o: T10 | 135 | [0x151f7c75,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768] -pushint 0 | 137 | [0x151f7c75,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768,0] -assert | 139 | [0x151f7c75,0x0022000000000000000100000000000000020000000000000003000000000000000400026162636465666768] -24 | * @param errorDetails The details of the logic error -25 | * @param program The TEAL source code, split by line -26 | * @param map The source map of the TEAL source code -27 | */ -28 | constructor(errorDetails, program, map) { -29 | super(); - ^ -error: assert failed pc=139. at:73. Error during resource population simulation in transaction 0: transaction OCF5N2YKM2STTXNZPGFBZ4GNUT6MHMC5NV24P7NYT7MTBVTKKGIQ: logic eval error: assert failed pc=139. Details: app=2607, pc=139, opcodes=frame_bury 0; pushint 0; assert - at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 - -24 | * @param errorDetails The details of the logic error -25 | * @param program The TEAL source code, split by line -26 | * @param map The source map of the TEAL source code -27 | */ -28 | constructor(errorDetails, program, map) { -29 | super(); - ^ -error: assert failed pc=139. at:73. Error during resource population simulation in transaction 0: transaction OCF5N2YKM2STTXNZPGFBZ4GNUT6MHMC5NV24P7NYT7MTBVTKKGIQ: logic eval error: assert failed pc=139. Details: app=2607, pc=139, opcodes=frame_bury 0; pushint 0; assert - at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 -(fail) ABI > nestedArrayAlongsideBoolean [855.04ms] - - 0 pass - 136 skip - 1 fail - 3 expect() calls -Ran 137 tests across 1 files. [2.19s] diff --git a/u8.log b/u8.log deleted file mode 100644 index 07b73833a..000000000 --- a/u8.log +++ /dev/null @@ -1,257 +0,0 @@ -bun test v1.1.38 (bf2f153f) - -tests/abi.test.ts: -(skip) ABI > E2E > staticArray -(skip) ABI > E2E > returnStaticArray -(skip) ABI > E2E > staticArrayArg -(skip) ABI > E2E > nonLiteralStaticArrayElements -(skip) ABI > E2E > mixedStaticArrayElements -(skip) ABI > E2E > nonLiteralStaticArrayAccess -(skip) ABI > E2E > setStaticArrayElement -(skip) ABI > E2E > staticArrayInStorageRef -(skip) ABI > E2E > updateStaticArrayInStorageRef -(skip) ABI > E2E > staticArrayInStorageMap -(skip) ABI > E2E > updateStaticArrayInStorageMap -(skip) ABI > E2E > nestedStaticArray -(skip) ABI > E2E > updateNestedStaticArrayElement -(skip) ABI > E2E > updateNestedStaticArray -(skip) ABI > E2E > threeDimensionalUint16Array -(skip) ABI > E2E > simpleTuple -(skip) ABI > E2E > arrayInTuple -(skip) ABI > E2E > tupleInArray -(skip) ABI > E2E > tupleInTuple -(skip) ABI > E2E > shortTypeNotation -(skip) ABI > E2E > disgusting -(skip) ABI > E2E > returnTuple -(skip) ABI > E2E > tupleArg -(skip) ABI > E2E > dynamicArray -(skip) ABI > E2E > returnDynamicArray -(skip) ABI > E2E > dynamicArrayArg -(skip) ABI > E2E > updateDynamicArrayElement -(skip) ABI > E2E > dynamicTupleArray -(skip) ABI > E2E > returnTupleWithDyamicArray -(skip) ABI > E2E > returnDynamicArrayFromTuple -(skip) ABI > E2E > updateDynamicArrayInTuple -(skip) ABI > E2E > nonLiteralDynamicElementInTuple -(skip) ABI > E2E > arrayPush -(skip) ABI > E2E > arrayPop -(skip) ABI > E2E > arrayPopValue -(skip) ABI > E2E > arraySplice -(skip) ABI > E2E > arraySpliceValue -(skip) ABI > E2E > dynamicArrayElements -(skip) ABI > E2E > spliceLastElement -(skip) ABI > E2E > spliceLastElementValue -(skip) ABI > E2E > spliceFirstElement -(skip) ABI > E2E > spliceFirstElementValue -(skip) ABI > E2E > stringReturn -(skip) ABI > E2E > stringArg -(skip) ABI > E2E > stringInTuple -(skip) ABI > E2E > accesStringInTuple -(skip) ABI > E2E > updateStringInTuple -(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes -(skip) ABI > E2E > shortenDynamicElementInTuple -(skip) ABI > E2E > namedTuple -(skip) ABI > E2E > updateNamedTuple -(skip) ABI > E2E > customTypes -(skip) ABI > E2E > staticStringArrayArg -(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray -(skip) ABI > E2E > dynamicArrayInMiddleOfTuple -(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple -(skip) ABI > E2E > accessDynamicArrayElementInTuple -(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple -(skip) ABI > E2E > nestedTuple -(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength -(skip) ABI > E2E > accessDynamicStringArray -(skip) ABI > E2E > txnTypes -(skip) ABI > E2E > arrayLength -(skip) ABI > E2E > stringLength -(skip) ABI > E2E > arrayRef -(skip) ABI > E2E > nestedArrayRef -(skip) ABI > E2E > nonLiteralNestedArrayRef -(skip) ABI > E2E > multiNestedArrayRef -(skip) ABI > E2E > objectArrayRef -(skip) ABI > E2E > stringAccessor -(skip) ABI > E2E > emptyStaticArray -(skip) ABI > E2E > partialStaticArray -(skip) ABI > E2E > emptyDynamicArray -(skip) ABI > E2E > booleanArgAndReturn -(skip) ABI > E2E > boolTuple -(skip) ABI > E2E > staticBoolArray -(skip) ABI > E2E > boolTupleAccess -(skip) ABI > E2E > staticBoolArrayAccess -(skip) ABI > E2E > dynamicBoolArray -(skip) ABI > E2E > dynamicBoolArrayAccess -(skip) ABI > E2E > staticBoolArrayUpdate -(skip) ABI > E2E > dynamicBoolArrayUpdate -(skip) ABI > E2E > boolTupleUpdate -(skip) ABI > E2E > objectRef -(skip) ABI > E2E > storageRefKey -(skip) ABI > E2E > storageRefAccount -(skip) ABI > E2E > angularCasting -(skip) ABI > E2E > castBytesFunction -(skip) ABI > E2E > rawBytesFunction -(skip) ABI > E2E > globalMethodInChain -(skip) ABI > E2E > opcodeParamFromObject -(skip) ABI > E2E > arrayInObjectInState -(skip) ABI > E2E > nestedObject -(skip) ABI > E2E > updateArrayRefInBoxStorage -(skip) ABI > E2E > extractUint -(skip) ABI > E2E > bytesReturn -(skip) ABI > E2E > nestedTypesInSignature -(skip) ABI > E2E > maxUfixed -(skip) ABI > E2E > chainedPropertyAfterTuple -(skip) ABI > E2E > uintCasting -(skip) ABI > E2E > uint64Casting -(skip) ABI > E2E > bytesCasting -(skip) ABI > E2E > biggerByteCasting -(skip) ABI > E2E > smallerByteCasting -(skip) ABI > E2E > multiBytesTuple -(skip) ABI > E2E > boolInObj -(skip) ABI > E2E > plusEqualsArrayValue -(skip) ABI > E2E > plusEqualsObjValue -(skip) ABI > E2E > plusEqualsObjValueInBox -(skip) ABI > E2E > uintNComparison -(skip) ABI > E2E > booleanLastInObj -(skip) ABI > E2E > nestedStructInBoxMap -(skip) ABI > E2E > staticForEach -(skip) ABI > E2E > nestedStaticForEach -(skip) ABI > E2E > nestedStaticForEachInBox -(skip) ABI > E2E > largeNestedStaticForEachInBox -(skip) ABI > E2E > forEachReturn -(skip) ABI > E2E > staticArrayLength -(skip) ABI > E2E > objectInArgs -(skip) ABI > E2E > nestedStaticArrayLength -(skip) ABI > E2E > nestedArrayLengthInObjectVariable -(skip) ABI > staticForOf -(skip) ABI > largeNestedStaticForOfInBox -(skip) ABI > forOfContinue -(skip) ABI > forOfBreak -(skip) ABI > accessStaticArrayInBoxInVariable -(skip) ABI > staticTypeInBox -(skip) ABI > storagePropertyReferenceInBox -(skip) ABI > pushToArrayInBox -(skip) ABI > updateStaticFieldInDynamicObjectInBox -(skip) ABI > dynamicArrayLength -(skip) ABI > dynamicArrayIteration -(skip) ABI > postBoolTupleOffset -(skip) ABI > nestedArrayInBox -(skip) ABI > nestedArrayInBoxLast -(skip) ABI > nestedArrayInBoxWithoutBool -Received error executing Atomic Transaction Composer, for more information enable the debug flag -TEAL | PC | STACK --------------------------------|------|------- -intcblock 1 | 1 | [] -bytecblock 0x | 4 | [] -txn ApplicationID | 7 | [2611] -! | 9 | [0] -pushint 6 | 10 | [0,6] -* | 12 | [0] -txn OnCompletion | 13 | [0,0] -+ | 15 | [0] -switch *call_NoOp *NOT_IMPL... | 16 | [] -pushbytes 0x5e2d718a // met... | 154 | [0x5e2d718a] -txna ApplicationArgs 0 | 160 | [0x5e2d718a,0x5e2d718a] -match *abi_route_nestedArra... | 163 | [] -pushbytes 0x151f7c75 | 43 | [0x151f7c75] -callsub nestedArrayAlongsid... | 49 | [0x151f7c75] -proto 0 1 | 56 | [0x151f7c75] -bytec 0 // 0x | 59 | [0x151f7c75,0] -bytec 0 // initial head | 60 | [0x151f7c75,0,0] -bytec 0 // initial tail | 61 | [0x151f7c75,0,0,0] -pushbytes 0x001b // initial... | 62 | [0x151f7c75,0,0,0,0x001b] -pushbytes 0x000261626364656... | 66 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] -callsub *process_dynamic_tu... | 78 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] -proto 4 3 | 181 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] -frame_dig -4 // tuple head | 184 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0] -frame_dig -2 // head offset | 186 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0,0x001b] -concat | 188 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0x001b] -frame_bury -4 // tuple head | 189 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768] -frame_dig -1 // element | 191 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768] -dup | 193 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] -len | 194 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10] -frame_dig -2 // head offset | 195 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,0x001b] -btoi | 197 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,27] -+ | 198 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,37] -itob | 199 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0000000000000025] -extract 6 2 | 200 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0025] -frame_bury -2 // head offset | 203 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] -frame_dig -3 // tuple tail | 205 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768,0] -swap | 207 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0,0x00026162636465666768] -concat | 208 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] -frame_bury -3 // tuple tail | 209 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768] -frame_dig -4 // tuple head | 211 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b] -frame_dig -3 // tuple tail | 213 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768] -frame_dig -2 // head offset | 215 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768,0x0025] -retsub | 217 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025] -pushbytes 0x0000000000000001 | 81 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] -callsub *process_static_tup... | 91 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] -proto 4 3 | 168 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] -frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b] -frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b,0x0000000000000001] -concat | 175 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001] -frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768] -frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768,0x0025] -retsub | 180 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025] -pushbytes 0x0000000000000002 | 94 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] -callsub *process_static_tup... | 104 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] -proto 4 3 | 168 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] -frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001] -frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001,0x0000000000000002] -concat | 175 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002] -frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768] -frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] -retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] -pushbytes 0x0000000000000003 | 107 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] -callsub *process_static_tup... | 117 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] -proto 4 3 | 168 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] -frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002] -frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002,0x0000000000000003] -concat | 175 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003] -frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768] -frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] -retsub | 180 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] -pushbytes 0x04 | 120 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04] - - - - -callsub *process_static_tup... | 123 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04] -proto 4 3 | 168 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04] -frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b000000000000000100000000000000020000000000000003] -frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b000000000000000100000000000000020000000000000003,0x04] -concat | 175 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b00000000000000010000000000000002000000000000000304] -frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768] -frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x04,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768,0x0025] -retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768,0x0025] -THERE'S AN EXTRA CONCAT HERE WITH BOOLEANS -pop // pop head offset | 126 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000304,0x00026162636465666768] -concat // concat head and tail | 127 | [0x151f7c75,0,0x001b0000000000000001000000000000000200000000000000030400026162636465666768] -frame_bury 0 // o: T10 | 128 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030400026162636465666768] -pushint 0 | 130 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030400026162636465666768,0] -assert | 132 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030400026162636465666768] -24 | * @param errorDetails The details of the logic error -25 | * @param program The TEAL source code, split by line -26 | * @param map The source map of the TEAL source code -27 | */ -28 | constructor(errorDetails, program, map) { -29 | super(); - ^ -error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction AFW5J5BVPB55EZLNUDP3NPDUKGWO7NP6L3GP6XXLHHXOZVPXUUNA: logic eval error: assert failed pc=132. Details: app=2611, pc=132, opcodes=frame_bury 0; pushint 0; assert - at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 - -24 | * @param errorDetails The details of the logic error -25 | * @param program The TEAL source code, split by line -26 | * @param map The source map of the TEAL source code -27 | */ -28 | constructor(errorDetails, program, map) { -29 | super(); - ^ -error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction AFW5J5BVPB55EZLNUDP3NPDUKGWO7NP6L3GP6XXLHHXOZVPXUUNA: logic eval error: assert failed pc=132. Details: app=2611, pc=132, opcodes=frame_bury 0; pushint 0; assert - at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 -(fail) ABI > nestedArrayAlongsideBoolean [850.66ms] - - 0 pass - 136 skip - 1 fail - 3 expect() calls -Ran 137 tests across 1 files. [2.11s] diff --git a/u8_2.log b/u8_2.log deleted file mode 100644 index b0a62330d..000000000 --- a/u8_2.log +++ /dev/null @@ -1,251 +0,0 @@ -bun test v1.1.38 (bf2f153f) - -tests/abi.test.ts: -(skip) ABI > E2E > staticArray -(skip) ABI > E2E > returnStaticArray -(skip) ABI > E2E > staticArrayArg -(skip) ABI > E2E > nonLiteralStaticArrayElements -(skip) ABI > E2E > mixedStaticArrayElements -(skip) ABI > E2E > nonLiteralStaticArrayAccess -(skip) ABI > E2E > setStaticArrayElement -(skip) ABI > E2E > staticArrayInStorageRef -(skip) ABI > E2E > updateStaticArrayInStorageRef -(skip) ABI > E2E > staticArrayInStorageMap -(skip) ABI > E2E > updateStaticArrayInStorageMap -(skip) ABI > E2E > nestedStaticArray -(skip) ABI > E2E > updateNestedStaticArrayElement -(skip) ABI > E2E > updateNestedStaticArray -(skip) ABI > E2E > threeDimensionalUint16Array -(skip) ABI > E2E > simpleTuple -(skip) ABI > E2E > arrayInTuple -(skip) ABI > E2E > tupleInArray -(skip) ABI > E2E > tupleInTuple -(skip) ABI > E2E > shortTypeNotation -(skip) ABI > E2E > disgusting -(skip) ABI > E2E > returnTuple -(skip) ABI > E2E > tupleArg -(skip) ABI > E2E > dynamicArray -(skip) ABI > E2E > returnDynamicArray -(skip) ABI > E2E > dynamicArrayArg -(skip) ABI > E2E > updateDynamicArrayElement -(skip) ABI > E2E > dynamicTupleArray -(skip) ABI > E2E > returnTupleWithDyamicArray -(skip) ABI > E2E > returnDynamicArrayFromTuple -(skip) ABI > E2E > updateDynamicArrayInTuple -(skip) ABI > E2E > nonLiteralDynamicElementInTuple -(skip) ABI > E2E > arrayPush -(skip) ABI > E2E > arrayPop -(skip) ABI > E2E > arrayPopValue -(skip) ABI > E2E > arraySplice -(skip) ABI > E2E > arraySpliceValue -(skip) ABI > E2E > dynamicArrayElements -(skip) ABI > E2E > spliceLastElement -(skip) ABI > E2E > spliceLastElementValue -(skip) ABI > E2E > spliceFirstElement -(skip) ABI > E2E > spliceFirstElementValue -(skip) ABI > E2E > stringReturn -(skip) ABI > E2E > stringArg -(skip) ABI > E2E > stringInTuple -(skip) ABI > E2E > accesStringInTuple -(skip) ABI > E2E > updateStringInTuple -(skip) ABI > E2E > updateTupleWithOnlyDynamicTypes -(skip) ABI > E2E > shortenDynamicElementInTuple -(skip) ABI > E2E > namedTuple -(skip) ABI > E2E > updateNamedTuple -(skip) ABI > E2E > customTypes -(skip) ABI > E2E > staticStringArrayArg -(skip) ABI > E2E > dynamicAccessOfDynamicElementInStaticArray -(skip) ABI > E2E > dynamicArrayInMiddleOfTuple -(skip) ABI > E2E > accessDynamicArrayInMiddleOfTuple -(skip) ABI > E2E > accessDynamicArrayElementInTuple -(skip) ABI > E2E > updateDynamicArrayInMiddleOfTuple -(skip) ABI > E2E > nestedTuple -(skip) ABI > E2E > updateDynamicElementInTupleWithSameLength -(skip) ABI > E2E > accessDynamicStringArray -(skip) ABI > E2E > txnTypes -(skip) ABI > E2E > arrayLength -(skip) ABI > E2E > stringLength -(skip) ABI > E2E > arrayRef -(skip) ABI > E2E > nestedArrayRef -(skip) ABI > E2E > nonLiteralNestedArrayRef -(skip) ABI > E2E > multiNestedArrayRef -(skip) ABI > E2E > objectArrayRef -(skip) ABI > E2E > stringAccessor -(skip) ABI > E2E > emptyStaticArray -(skip) ABI > E2E > partialStaticArray -(skip) ABI > E2E > emptyDynamicArray -(skip) ABI > E2E > booleanArgAndReturn -(skip) ABI > E2E > boolTuple -(skip) ABI > E2E > staticBoolArray -(skip) ABI > E2E > boolTupleAccess -(skip) ABI > E2E > staticBoolArrayAccess -(skip) ABI > E2E > dynamicBoolArray -(skip) ABI > E2E > dynamicBoolArrayAccess -(skip) ABI > E2E > staticBoolArrayUpdate -(skip) ABI > E2E > dynamicBoolArrayUpdate -(skip) ABI > E2E > boolTupleUpdate -(skip) ABI > E2E > objectRef -(skip) ABI > E2E > storageRefKey -(skip) ABI > E2E > storageRefAccount -(skip) ABI > E2E > angularCasting -(skip) ABI > E2E > castBytesFunction -(skip) ABI > E2E > rawBytesFunction -(skip) ABI > E2E > globalMethodInChain -(skip) ABI > E2E > opcodeParamFromObject -(skip) ABI > E2E > arrayInObjectInState -(skip) ABI > E2E > nestedObject -(skip) ABI > E2E > updateArrayRefInBoxStorage -(skip) ABI > E2E > extractUint -(skip) ABI > E2E > bytesReturn -(skip) ABI > E2E > nestedTypesInSignature -(skip) ABI > E2E > maxUfixed -(skip) ABI > E2E > chainedPropertyAfterTuple -(skip) ABI > E2E > uintCasting -(skip) ABI > E2E > uint64Casting -(skip) ABI > E2E > bytesCasting -(skip) ABI > E2E > biggerByteCasting -(skip) ABI > E2E > smallerByteCasting -(skip) ABI > E2E > multiBytesTuple -(skip) ABI > E2E > boolInObj -(skip) ABI > E2E > plusEqualsArrayValue -(skip) ABI > E2E > plusEqualsObjValue -(skip) ABI > E2E > plusEqualsObjValueInBox -(skip) ABI > E2E > uintNComparison -(skip) ABI > E2E > booleanLastInObj -(skip) ABI > E2E > nestedStructInBoxMap -(skip) ABI > E2E > staticForEach -(skip) ABI > E2E > nestedStaticForEach -(skip) ABI > E2E > nestedStaticForEachInBox -(skip) ABI > E2E > largeNestedStaticForEachInBox -(skip) ABI > E2E > forEachReturn -(skip) ABI > E2E > staticArrayLength -(skip) ABI > E2E > objectInArgs -(skip) ABI > E2E > nestedStaticArrayLength -(skip) ABI > E2E > nestedArrayLengthInObjectVariable -(skip) ABI > staticForOf -(skip) ABI > largeNestedStaticForOfInBox -(skip) ABI > forOfContinue -(skip) ABI > forOfBreak -(skip) ABI > accessStaticArrayInBoxInVariable -(skip) ABI > staticTypeInBox -(skip) ABI > storagePropertyReferenceInBox -(skip) ABI > pushToArrayInBox -(skip) ABI > updateStaticFieldInDynamicObjectInBox -(skip) ABI > dynamicArrayLength -(skip) ABI > dynamicArrayIteration -(skip) ABI > postBoolTupleOffset -(skip) ABI > nestedArrayInBox -(skip) ABI > nestedArrayInBoxLast -(skip) ABI > nestedArrayInBoxWithoutBool -Received error executing Atomic Transaction Composer, for more information enable the debug flag -TEAL | PC | STACK --------------------------------|------|------- -intcblock 1 | 1 | [] -bytecblock 0x | 4 | [] -txn ApplicationID | 7 | [3360] -! | 9 | [0] -pushint 6 | 10 | [0,6] -* | 12 | [0] -txn OnCompletion | 13 | [0,0] -+ | 15 | [0] -switch *call_NoOp *NOT_IMPL... | 16 | [] -pushbytes 0x5e2d718a // met... | 154 | [0x5e2d718a] -txna ApplicationArgs 0 | 160 | [0x5e2d718a,0x5e2d718a] -match *abi_route_nestedArra... | 163 | [] -pushbytes 0x151f7c75 | 43 | [0x151f7c75] -callsub nestedArrayAlongsid... | 49 | [0x151f7c75] -proto 0 1 | 56 | [0x151f7c75] -bytec 0 // 0x | 59 | [0x151f7c75,0] -bytec 0 // initial head | 60 | [0x151f7c75,0,0] -bytec 0 // initial tail | 61 | [0x151f7c75,0,0,0] -pushbytes 0x001b // initial... | 62 | [0x151f7c75,0,0,0,0x001b] -pushbytes 0x000261626364656... | 66 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] -callsub *process_dynamic_tu... | 78 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] -proto 4 3 | 181 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768] -frame_dig -4 // tuple head | 184 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0] -frame_dig -2 // head offset | 186 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0,0x001b] -concat | 188 | [0x151f7c75,0,0,0,0x001b,0x00026162636465666768,0x001b] -frame_bury -4 // tuple head | 189 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768] -frame_dig -1 // element | 191 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768] -dup | 193 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x00026162636465666768] -len | 194 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10] -frame_dig -2 // head offset | 195 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,0x001b] -btoi | 197 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,10,27] -+ | 198 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,37] -itob | 199 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0000000000000025] -extract 6 2 | 200 | [0x151f7c75,0,0x001b,0,0x001b,0x00026162636465666768,0x00026162636465666768,0x0025] -frame_bury -2 // head offset | 203 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] -frame_dig -3 // tuple tail | 205 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768,0] -swap | 207 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0,0x00026162636465666768] -concat | 208 | [0x151f7c75,0,0x001b,0,0x0025,0x00026162636465666768,0x00026162636465666768] -frame_bury -3 // tuple tail | 209 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768] -frame_dig -4 // tuple head | 211 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b] -frame_dig -3 // tuple tail | 213 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768] -frame_dig -2 // head offset | 215 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x00026162636465666768,0x001b,0x00026162636465666768,0x0025] -retsub | 217 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025] -pushbytes 0x0000000000000001 | 81 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] -callsub *process_static_tup... | 91 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] -proto 4 3 | 168 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001] -frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b] -frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b,0x0000000000000001] -concat | 175 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001] -frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768] -frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b,0x00026162636465666768,0x0025,0x0000000000000001,0x001b0000000000000001,0x00026162636465666768,0x0025] -retsub | 180 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025] -pushbytes 0x0000000000000002 | 94 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] -callsub *process_static_tup... | 104 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] -proto 4 3 | 168 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002] -frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001] -frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b0000000000000001,0x0000000000000002] -concat | 175 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002] -frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768] -frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b0000000000000001,0x00026162636465666768,0x0025,0x0000000000000002,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] -retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025] -pushbytes 0x0000000000000003 | 107 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] -callsub *process_static_tup... | 117 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] -proto 4 3 | 168 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003] -frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002] -frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b00000000000000010000000000000002,0x0000000000000003] -concat | 175 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003] -frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768] -frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b00000000000000010000000000000002,0x00026162636465666768,0x0025,0x0000000000000003,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] -retsub | 180 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025] -pushbytes 0x08 | 120 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08] -callsub *process_static_tup... | 123 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08] -proto 4 3 | 168 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08] -frame_dig -4 // tuple head | 171 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b000000000000000100000000000000020000000000000003] -frame_dig -1 // element | 173 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b000000000000000100000000000000020000000000000003,0x08] -concat | 175 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b00000000000000010000000000000002000000000000000308] -frame_dig -3 // tuple tail | 176 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768] -frame_dig -2 // head offset | 178 | [0x151f7c75,0,0x001b000000000000000100000000000000020000000000000003,0x00026162636465666768,0x0025,0x08,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768,0x0025] -retsub | 180 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768,0x0025] -pop // pop head offset | 126 | [0x151f7c75,0,0x001b00000000000000010000000000000002000000000000000308,0x00026162636465666768] -concat // concat head and tail | 127 | [0x151f7c75,0,0x001b0000000000000001000000000000000200000000000000030800026162636465666768] -frame_bury 0 // o: T10 | 128 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030800026162636465666768] -pushint 0 | 130 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030800026162636465666768,0] -assert | 132 | [0x151f7c75,0x001b0000000000000001000000000000000200000000000000030800026162636465666768] -24 | * @param errorDetails The details of the logic error -25 | * @param program The TEAL source code, split by line -26 | * @param map The source map of the TEAL source code -27 | */ -28 | constructor(errorDetails, program, map) { -29 | super(); - ^ -error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction UXK72RP6QGAAFDGJSO3IS2VWQUYD6BNMX53HN4QBOW4E6RJD5F3Q: logic eval error: assert failed pc=132. Details: app=3360, pc=132, opcodes=frame_bury 0; pushint 0; assert - at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 - -24 | * @param errorDetails The details of the logic error -25 | * @param program The TEAL source code, split by line -26 | * @param map The source map of the TEAL source code -27 | */ -28 | constructor(errorDetails, program, map) { -29 | super(); - ^ -error: assert failed pc=132. at:73. Error during resource population simulation in transaction 0: transaction UXK72RP6QGAAFDGJSO3IS2VWQUYD6BNMX53HN4QBOW4E6RJD5F3Q: logic eval error: assert failed pc=132. Details: app=3360, pc=132, opcodes=frame_bury 0; pushint 0; assert - at /Users/joe/git/algorandfoundation/tealscript/node_modules/@algorandfoundation/algokit-utils/types/logic-error.mjs:29:9 -(fail) ABI > nestedArrayAlongsideBoolean [1062.40ms] - - 0 pass - 136 skip - 1 fail -Ran 137 tests across 1 files. [2.51s] From 3ea8b6c855bfa7269910300abdcdeb46b0ba270d Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Wed, 18 Dec 2024 14:50:47 -0500 Subject: [PATCH 09/11] eslint --- src/lib/compiler.ts | 1 + tests/common.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/lib/compiler.ts b/src/lib/compiler.ts index 4b7ceb47b..09f4ab1ef 100644 --- a/src/lib/compiler.ts +++ b/src/lib/compiler.ts @@ -7493,6 +7493,7 @@ declare type AssetFreezeTxn = Required; if (this.isDynamicType(tVar.type) || isNumeric(tVar.type)) { if (program === 'lsig' || (program === 'approval' && !dynamicTemplateWarning)) { + // eslint-disable-next-line no-console console.warn( `WARNING: Due to dynamic template variable type for ${tVar.name} (${typeInfoToABIString( tVar.type diff --git a/tests/common.ts b/tests/common.ts index 4ce221737..c18b8eec2 100644 --- a/tests/common.ts +++ b/tests/common.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ /* eslint-disable func-names */ import fs from 'fs'; @@ -213,6 +214,7 @@ export async function runMethod({ const trace = resp.simulateResponse.txnGroups[0].txnResults[0].execTrace!.approvalProgramTrace!; // eslint-disable-next-line no-use-before-define const fullTrace = await getFullTrace(trace, approvalProgramTeal, algodClient); + // eslint-disable-next-line no-use-before-define printFullTrace(fullTrace); console.warn(e); throw e; @@ -231,6 +233,7 @@ type FullTrace = { stack: (string | number)[]; }[]; +// eslint-disable-next-line @typescript-eslint/no-explicit-any async function getFullTrace(simTrace: any[], teal: string, algod: algosdk.Algodv2): Promise { const result = await algod.compile(teal).sourcemap(true).do(); @@ -247,6 +250,7 @@ async function getFullTrace(simTrace: any[], teal: string, algod: algosdk.Algodv newStack = newStack.slice(0, -t.stackPopCount); } + // eslint-disable-next-line @typescript-eslint/no-explicit-any t.stackAdditions?.forEach((s: any) => { if (s.bytes) { newStack.push(`0x${Buffer.from(s.bytes, 'base64').toString('hex')}`); From 1cf4561af65dd53f8291a3316f72be1a42274f94 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Wed, 18 Dec 2024 14:54:23 -0500 Subject: [PATCH 10/11] recompile --- .../artifacts/ABITestBoolInNestedTuple.approval.teal | 2 +- tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json | 2 +- tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json | 2 +- .../contracts/artifacts/ABITestBooleanLastInObj.approval.teal | 2 +- tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json | 2 +- tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json | 2 +- .../ABITestNestedArrayAlongsideBoolean.approval.teal | 2 +- .../artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json | 2 +- .../artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json | 4 ++-- .../contracts/artifacts/ABITestNestedArrayInBox.approval.teal | 2 +- tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json | 2 +- tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json | 4 ++-- .../artifacts/ABITestNestedArrayInBoxLast.approval.teal | 2 +- .../artifacts/ABITestNestedArrayInBoxLast.arc32.json | 2 +- .../artifacts/ABITestNestedArrayInBoxLast.arc56.json | 4 ++-- 15 files changed, 18 insertions(+), 18 deletions(-) diff --git a/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal b/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal index e4fce9442..6c46c8615 100644 --- a/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal +++ b/tests/contracts/artifacts/ABITestBoolInNestedTuple.approval.teal @@ -57,7 +57,7 @@ boolInNestedTuple: intc 0 // 1 intc 1 // 0 setbit - concat // HERE + concat frame_bury 0 // a: [[uint64, uint64, uint64], boolean, boolean] // tests/contracts/abi.algo.ts:1444 diff --git a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json index a837cd0ce..d8df78fc5 100644 --- a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json +++ b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0IC8vIEhFUkUKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ0CgkvLyBhWzFdID0gZmFsc2UKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJcHVzaGludCAxOTIKCWludGMgMSAvLyAwCglzZXRiaXQKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ1CgkvLyBhWzJdID0gdHJ1ZQoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglpbnRjIDAgLy8gMQoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NwoJLy8gcmV0dXJuIGFbMl07CglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMiAvLyAxOTMKCWdldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAwIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDM4Y2VmNTk4IC8vIG1ldGhvZCAiYm9vbEluTmVzdGVkVHVwbGUoKWJvb2wiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2Jvb2xJbk5lc3RlZFR1cGxlCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NAoJLy8gYVsxXSA9IGZhbHNlCglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkyCglpbnRjIDEgLy8gMAoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NQoJLy8gYVsyXSA9IHRydWUKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAyIC8vIDE5MwoJaW50YyAwIC8vIDEKCXNldGJpdAoJZnJhbWVfYnVyeSAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE0NDcKCS8vIHJldHVybiBhWzJdOwoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglnZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMCAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHgzOGNlZjU5OCAvLyBtZXRob2QgImJvb2xJbk5lc3RlZFR1cGxlKClib29sIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sSW5OZXN0ZWRUdXBsZQoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json index 710ed0caf..7e4a07e34 100644 --- a/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json +++ b/tests/contracts/artifacts/ABITestBoolInNestedTuple.arc56.json @@ -630,7 +630,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0IC8vIEhFUkUKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ0CgkvLyBhWzFdID0gZmFsc2UKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJcHVzaGludCAxOTIKCWludGMgMSAvLyAwCglzZXRiaXQKCWZyYW1lX2J1cnkgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQ1CgkvLyBhWzJdID0gdHJ1ZQoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglpbnRjIDAgLy8gMQoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NwoJLy8gcmV0dXJuIGFbMl07CglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMiAvLyAxOTMKCWdldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAwIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDM4Y2VmNTk4IC8vIG1ldGhvZCAiYm9vbEluTmVzdGVkVHVwbGUoKWJvb2wiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2Jvb2xJbk5lc3RlZFR1cGxlCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgMTkzCmJ5dGVjYmxvY2sgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb2xJbk5lc3RlZFR1cGxlKClib29sCiphYmlfcm91dGVfYm9vbEluTmVzdGVkVHVwbGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBib29sSW5OZXN0ZWRUdXBsZSgpYm9vbAoJY2FsbHN1YiBib29sSW5OZXN0ZWRUdXBsZQoJYnl0ZWMgMCAvLyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWNvbmNhdAoJbG9nCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib29sSW5OZXN0ZWRUdXBsZSgpOiBib29sZWFuCmJvb2xJbk5lc3RlZFR1cGxlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCXB1c2hieXRlcyAweAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNDQyCgkvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXSA9IFtbMCwgMCwgMF0sIHRydWUsIGZhbHNlXQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglieXRlYyAwIC8vIDB4MDAKCWludGMgMSAvLyAwCglpbnRjIDAgLy8gMQoJc2V0Yml0CglpbnRjIDAgLy8gMQoJaW50YyAxIC8vIDAKCXNldGJpdAoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NAoJLy8gYVsxXSA9IGZhbHNlCglmcmFtZV9kaWcgMCAvLyBhOiBbW3VpbnQ2NCwgdWludDY0LCB1aW50NjRdLCBib29sZWFuLCBib29sZWFuXQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkyCglpbnRjIDEgLy8gMAoJc2V0Yml0CglmcmFtZV9idXJ5IDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCgkvLyB0ZXN0cy9jb250cmFjdHMvYWJpLmFsZ28udHM6MTQ0NQoJLy8gYVsyXSA9IHRydWUKCWZyYW1lX2RpZyAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJaW50YyAyIC8vIDE5MwoJaW50YyAwIC8vIDEKCXNldGJpdAoJZnJhbWVfYnVyeSAwIC8vIGE6IFtbdWludDY0LCB1aW50NjQsIHVpbnQ2NF0sIGJvb2xlYW4sIGJvb2xlYW5dCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE0NDcKCS8vIHJldHVybiBhWzJdOwoJZnJhbWVfZGlnIDAgLy8gYTogW1t1aW50NjQsIHVpbnQ2NCwgdWludDY0XSwgYm9vbGVhbiwgYm9vbGVhbl0KCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIgLy8gMTkzCglnZXRiaXQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMCAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHgzOGNlZjU5OCAvLyBtZXRob2QgImJvb2xJbk5lc3RlZFR1cGxlKClib29sIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sSW5OZXN0ZWRUdXBsZQoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { diff --git a/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal b/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal index a3769c0ca..b5b803090 100644 --- a/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal +++ b/tests/contracts/artifacts/ABITestBooleanLastInObj.approval.teal @@ -49,7 +49,7 @@ booleanLastInObj: intc 0 // 0 dup setbit - concat // HERE + concat retsub *abi_route_createApplication: diff --git a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json index 004480592..005c7e423 100644 --- a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json +++ b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdCAvLyBIRVJFCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4NjZjODkwY2EgLy8gbWV0aG9kICJib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sZWFuTGFzdEluT2JqCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDY2Yzg5MGNhIC8vIG1ldGhvZCAiYm9vbGVhbkxhc3RJbk9iaigpKHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iagoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json index a248ff074..e26ff07b8 100644 --- a/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json +++ b/tests/contracts/artifacts/ABITestBooleanLastInObj.arc56.json @@ -396,7 +396,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdCAvLyBIRVJFCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDEgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4NjZjODkwY2EgLy8gbWV0aG9kICJib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib29sZWFuTGFzdEluT2JqCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCnB1c2hpbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBib29sZWFuTGFzdEluT2JqKCkodWludDY0LGJvb2wpCiphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iajoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGJvb2xlYW5MYXN0SW5PYmooKSh1aW50NjQsYm9vbCkKCWNhbGxzdWIgYm9vbGVhbkxhc3RJbk9iagoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGJvb2xlYW5MYXN0SW5PYmooKTogeyBuOiB1aW50NjQ7IGI6IGJvb2xlYW4gfQpib29sZWFuTGFzdEluT2JqOgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjEyNjUKCS8vIHJldHVybiB7CgkvLyAgICAgICBuOiAxLAoJLy8gICAgICAgYjogZmFsc2UsCgkvLyAgICAgfTsKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNvbmNhdAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDY2Yzg5MGNhIC8vIG1ldGhvZCAiYm9vbGVhbkxhc3RJbk9iaigpKHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfYm9vbGVhbkxhc3RJbk9iagoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal index 31c6e69ca..8e2563e83 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.approval.teal @@ -53,7 +53,7 @@ nestedArrayAlongsideBoolean: // } bytec 0 // initial head bytec 0 // initial tail - pushbytes 0x001a // initial head offset + pushbytes 0x001b // initial head offset pushbytes 0x00026162636465666768 callsub *process_dynamic_tuple_element pushbytes 0x0000000000000001 diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json index 66e22dffe..e66b79763 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJZnJhbWVfYnVyeSAwIC8vIG86IFQxMAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNzExCgkvLyByZXR1cm4gbzsKCWZyYW1lX2RpZyAwIC8vIG86IFQxMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGM0OWNiOWE3IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlBbG9uZ3NpZGVCb29sZWFuKCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3ViCgoqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJZHVwCglsZW4KCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJYnRvaQoJKwoJaXRvYgoJZXh0cmFjdCA2IDIKCWZyYW1lX2J1cnkgLTIgLy8gaGVhZCBvZmZzZXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglzd2FwCgljb25jYXQKCWZyYW1lX2J1cnkgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1Yg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYiAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJZnJhbWVfYnVyeSAwIC8vIG86IFQxMAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNzExCgkvLyByZXR1cm4gbzsKCWZyYW1lX2RpZyAwIC8vIG86IFQxMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGM0OWNiOWE3IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlBbG9uZ3NpZGVCb29sZWFuKCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3ViCgoqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJZHVwCglsZW4KCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJYnRvaQoJKwoJaXRvYgoJZXh0cmFjdCA2IDIKCWZyYW1lX2J1cnkgLTIgLy8gaGVhZCBvZmZzZXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglzd2FwCgljb25jYXQKCWZyYW1lX2J1cnkgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1Yg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json index 6122f942e..44d64a28b 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayAlongsideBoolean.arc56.json @@ -803,11 +803,11 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYSAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJZnJhbWVfYnVyeSAwIC8vIG86IFQxMAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNzExCgkvLyByZXR1cm4gbzsKCWZyYW1lX2RpZyAwIC8vIG86IFQxMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGM0OWNiOWE3IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlBbG9uZ3NpZGVCb29sZWFuKCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3ViCgoqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJZHVwCglsZW4KCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJYnRvaQoJKwoJaXRvYgoJZXh0cmFjdCA2IDIKCWZyYW1lX2J1cnkgLTIgLy8gaGVhZCBvZmZzZXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglzd2FwCgljb25jYXQKCWZyYW1lX2J1cnkgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1Yg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKcHVzaGludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbigpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoJY2FsbHN1YiBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4oKTogVDEwCm5lc3RlZEFycmF5QWxvbmdzaWRlQm9vbGVhbjoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE3MDMKCS8vIG86IFQxMCA9IHsKCS8vICAgICAgIGJ5dGVzNEFycmF5OiBbJ2FiY2QnIGFzIGJ5dGVzPDQ+LCAnZWZnaCcgYXMgYnl0ZXM8ND5dLAoJLy8gICAgICAgdTY0YTogMSwKCS8vICAgICAgIHU2NGI6IDIsCgkvLyAgICAgICB1NjRjOiAzLAoJLy8gICAgICAgYm9vbFZhbHVlOiBmYWxzZSwKCS8vICAgICB9CglieXRlYyAwIC8vICBpbml0aWFsIGhlYWQKCWJ5dGVjIDAgLy8gIGluaXRpYWwgdGFpbAoJcHVzaGJ5dGVzIDB4MDAxYiAvLyBpbml0aWFsIGhlYWQgb2Zmc2V0CglwdXNoYnl0ZXMgMHgwMDAyNjE2MjYzNjQ2NTY2Njc2OAoJY2FsbHN1YiAqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXBvcCAvLyBwb3AgaGVhZCBvZmZzZXQKCWNvbmNhdCAvLyBjb25jYXQgaGVhZCBhbmQgdGFpbAoJZnJhbWVfYnVyeSAwIC8vIG86IFQxMAoKCS8vIHRlc3RzL2NvbnRyYWN0cy9hYmkuYWxnby50czoxNzExCgkvLyByZXR1cm4gbzsKCWZyYW1lX2RpZyAwIC8vIG86IFQxMAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGM0OWNiOWE3IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlBbG9uZ3NpZGVCb29sZWFuKCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUFsb25nc2lkZUJvb2xlYW4KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnIKCipwcm9jZXNzX3N0YXRpY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3ViCgoqcHJvY2Vzc19keW5hbWljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWNvbmNhdAoJZnJhbWVfYnVyeSAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJZHVwCglsZW4KCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJYnRvaQoJKwoJaXRvYgoJZXh0cmFjdCA2IDIKCWZyYW1lX2J1cnkgLTIgLy8gaGVhZCBvZmZzZXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglzd2FwCgljb25jYXQKCWZyYW1lX2J1cnkgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1Yg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { - "approval": "CiACAAEmAQAxGBSBBgsxGQiNDABwAAAAAAAAAAAAAABiAAAAAAAAAAAAAACABBUffHWIAARQsCNDigABKCgogAIAGoAKAAJhYmNkZWZnaIgAZIAIAAAAAAAAAAGIAEqACAAAAAAAAAACiAA9gAgAAAAAAAAAA4gAMIABACJJVIgAJ0hQjACLAIwAiSNDgAS4RHs2NhoAjgH/8QCABMScuac2GgCOAf+EAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", + "approval": "CiACAAEmAQAxGBSBBgsxGQiNDABwAAAAAAAAAAAAAABiAAAAAAAAAAAAAACABBUffHWIAARQsCNDigABKCgogAIAG4AKAAJhYmNkZWZnaIgAZIAIAAAAAAAAAAGIAEqACAAAAAAAAAACiAA9gAgAAAAAAAAAA4gAMIABACJJVIgAJ0hQjACLAIwAiSNDgAS4RHs2NhoAjgH/8QCABMScuac2GgCOAf+EAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", "clear": "Cg==" }, "compilerInfo": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal index 58cda2d4a..684d0258e 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.approval.teal @@ -54,7 +54,7 @@ nestedArrayInBox: pop bytec 1 // initial head bytec 1 // initial tail - pushbytes 0x001a // initial head offset + pushbytes 0x001b // initial head offset pushbytes 0x00026162636465666768 callsub *process_dynamic_tuple_element pushbytes 0x0000000000000001 diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json index c9cbf00d6..0ff1c8f3f 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDkKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGEwN2NhMGM4IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFiIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDkKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGEwN2NhMGM4IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json index e1e42ed88..400d8b2d0 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBox.arc56.json @@ -834,11 +834,11 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDkKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGEwN2NhMGM4IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKQoqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3g6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCXB1c2hieXRlcyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBuZXN0ZWRBcnJheUluQm94KCkoYnl0ZVs0XVtdLHVpbnQ2NCx1aW50NjQsdWludDY0LGJvb2wpCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3gKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBuZXN0ZWRBcnJheUluQm94KCk6IFQxMApuZXN0ZWRBcnJheUluQm94OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDEKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFiIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMQoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMgoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcHVzaGJ5dGVzIDB4MDAKCWludGMgMCAvLyAwCglkdXAKCXNldGJpdAoJY2FsbHN1YiAqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NDkKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGEwN2NhMGM4IC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveCgpKGJ5dGVbNF1bXSx1aW50NjQsdWludDY0LHVpbnQ2NCxib29sKSIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfbmVzdGVkQXJyYXlJbkJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQ6Cglwcm90byA0IDMKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTEgLy8gZWxlbWVudAoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWIKCipwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJY29uY2F0CglmcmFtZV9idXJ5IC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50CglkdXAKCWxlbgoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglidG9pCgkrCglpdG9iCglleHRyYWN0IDYgMgoJZnJhbWVfYnVyeSAtMiAvLyBoZWFkIG9mZnNldAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCXN3YXAKCWNvbmNhdAoJZnJhbWVfYnVyeSAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtMiAvLyBoZWFkIG9mZnNldAoJcmV0c3Vi", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { - "approval": "CiACAAEmAgRiTWFwADEYFIEGCzEZCI0MAHEAAAAAAAAAAAAAAGMAAAAAAAAAAAAAAIAEFR98dYgABFCwI0OKAAEoSbxIKSmAAgAagAoAAmFiY2RlZmdoiABigAgAAAAAAAAAAYgASIAIAAAAAAAAAAKIADuACAAAAAAAAAADiAAugAEAIklUiAAlSFC/KL5EiSNDgAS4RHs2NhoAjgH/8QCABKB8oMg2GgCOAf+DAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", + "approval": "CiACAAEmAgRiTWFwADEYFIEGCzEZCI0MAHEAAAAAAAAAAAAAAGMAAAAAAAAAAAAAAIAEFR98dYgABFCwI0OKAAEoSbxIKSmAAgAbgAoAAmFiY2RlZmdoiABigAgAAAAAAAAAAYgASIAIAAAAAAAAAAKIADuACAAAAAAAAAADiAAugAEAIklUiAAlSFC/KL5EiSNDgAS4RHs2NhoAjgH/8QCABKB8oMg2GgCOAf+DAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", "clear": "Cg==" }, "compilerInfo": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal index b7fff67e2..e86e617fa 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.approval.teal @@ -54,7 +54,7 @@ nestedArrayInBoxLast: pop bytec 1 // initial head bytec 1 // initial tail - pushbytes 0x001a // initial head offset + pushbytes 0x001b // initial head offset pushbytes 0x0000000000000001 callsub *process_static_tuple_element pushbytes 0x0000000000000002 diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json index c3c32dac3..838450a32 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc32.json @@ -39,7 +39,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5SW5Cb3hMYXN0KCkodWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCxieXRlWzRdW10pCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3hMYXN0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKTogVDExCm5lc3RlZEFycmF5SW5Cb3hMYXN0OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NjUKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NzMKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDk1Mjg3ODhiIC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3hMYXN0CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5SW5Cb3hMYXN0KCkodWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCxieXRlWzRdW10pCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3hMYXN0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKTogVDExCm5lc3RlZEFycmF5SW5Cb3hMYXN0OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NjUKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFiIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NzMKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDk1Mjg3ODhiIC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3hMYXN0CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { diff --git a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json index a4ee9a3d8..6d8712fe8 100644 --- a/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json +++ b/tests/contracts/artifacts/ABITestNestedArrayInBoxLast.arc56.json @@ -834,11 +834,11 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5SW5Cb3hMYXN0KCkodWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCxieXRlWzRdW10pCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3hMYXN0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKTogVDExCm5lc3RlZEFycmF5SW5Cb3hMYXN0OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NjUKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFhIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NzMKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDk1Mjg3ODhiIC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3hMYXN0CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAwIDEKYnl0ZWNibG9jayAweDYyNGQ2MTcwIDB4CgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkKKmFiaV9yb3V0ZV9uZXN0ZWRBcnJheUluQm94TGFzdDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJcHVzaGJ5dGVzIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG5lc3RlZEFycmF5SW5Cb3hMYXN0KCkodWludDY0LHVpbnQ2NCx1aW50NjQsYm9vbCxieXRlWzRdW10pCgljYWxsc3ViIG5lc3RlZEFycmF5SW5Cb3hMYXN0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbmVzdGVkQXJyYXlJbkJveExhc3QoKTogVDExCm5lc3RlZEFycmF5SW5Cb3hMYXN0OgoJcHJvdG8gMCAxCgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NjUKCS8vIHRoaXMuYk1hcCgnYk1hcCcpLnZhbHVlID0gewoJLy8gICAgICAgYnl0ZXM0QXJyYXk6IFsnYWJjZCcgYXMgYnl0ZXM8ND4sICdlZmdoJyBhcyBieXRlczw0Pl0sCgkvLyAgICAgICB1NjRhOiAxLAoJLy8gICAgICAgdTY0YjogMiwKCS8vICAgICAgIHU2NGM6IDMsCgkvLyAgICAgICBib29sVmFsdWU6IGZhbHNlLAoJLy8gICAgIH0KCWJ5dGVjIDAgLy8gICJiTWFwIgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGVjIDEgLy8gIGluaXRpYWwgaGVhZAoJYnl0ZWMgMSAvLyAgaW5pdGlhbCB0YWlsCglwdXNoYnl0ZXMgMHgwMDFiIC8vIGluaXRpYWwgaGVhZCBvZmZzZXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwCglpbnRjIDAgLy8gMAoJZHVwCglzZXRiaXQKCWNhbGxzdWIgKnByb2Nlc3Nfc3RhdGljX3R1cGxlX2VsZW1lbnQKCXB1c2hieXRlcyAweDAwMDI2MTYyNjM2NDY1NjY2NzY4CgljYWxsc3ViICpwcm9jZXNzX2R5bmFtaWNfdHVwbGVfZWxlbWVudAoJcG9wIC8vIHBvcCBoZWFkIG9mZnNldAoJY29uY2F0IC8vIGNvbmNhdCBoZWFkIGFuZCB0YWlsCglib3hfcHV0CgoJLy8gdGVzdHMvY29udHJhY3RzL2FiaS5hbGdvLnRzOjE2NzMKCS8vIHJldHVybiB0aGlzLmJNYXAoJ2JNYXAnKS52YWx1ZTsKCWJ5dGVjIDAgLy8gICJiTWFwIgoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5iTWFwKCdiTWFwJykudmFsdWUKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAxIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJcHVzaGJ5dGVzIDB4Yjg0NDdiMzYgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweDk1Mjg3ODhiIC8vIG1ldGhvZCAibmVzdGVkQXJyYXlJbkJveExhc3QoKSh1aW50NjQsdWludDY0LHVpbnQ2NCxib29sLGJ5dGVbNF1bXSkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX25lc3RlZEFycmF5SW5Cb3hMYXN0CgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqcHJvY2Vzc19zdGF0aWNfdHVwbGVfZWxlbWVudDoKCXByb3RvIDQgMwoJZnJhbWVfZGlnIC00IC8vIHR1cGxlIGhlYWQKCWZyYW1lX2RpZyAtMSAvLyBlbGVtZW50Cgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyB0dXBsZSB0YWlsCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCXJldHN1YgoKKnByb2Nlc3NfZHluYW1pY190dXBsZV9lbGVtZW50OgoJcHJvdG8gNCAzCglmcmFtZV9kaWcgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0Cgljb25jYXQKCWZyYW1lX2J1cnkgLTQgLy8gdHVwbGUgaGVhZAoJZnJhbWVfZGlnIC0xIC8vIGVsZW1lbnQKCWR1cAoJbGVuCglmcmFtZV9kaWcgLTIgLy8gaGVhZCBvZmZzZXQKCWJ0b2kKCSsKCWl0b2IKCWV4dHJhY3QgNiAyCglmcmFtZV9idXJ5IC0yIC8vIGhlYWQgb2Zmc2V0CglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJc3dhcAoJY29uY2F0CglmcmFtZV9idXJ5IC0zIC8vIHR1cGxlIHRhaWwKCWZyYW1lX2RpZyAtNCAvLyB0dXBsZSBoZWFkCglmcmFtZV9kaWcgLTMgLy8gdHVwbGUgdGFpbAoJZnJhbWVfZGlnIC0yIC8vIGhlYWQgb2Zmc2V0CglyZXRzdWI=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "byteCode": { - "approval": "CiACAAEmAgRiTWFwADEYFIEGCzEZCI0MAHEAAAAAAAAAAAAAAGMAAAAAAAAAAAAAAIAEFR98dYgABFCwI0OKAAEoSbxIKSmAAgAagAgAAAAAAAAAAYgAV4AIAAAAAAAAAAKIAEqACAAAAAAAAAADiAA9gAEAIklUiAA0gAoAAmFiY2RlZmdoiAAySFC/KL5EiSNDgAS4RHs2NhoAjgH/8QCABJUoeIs2GgCOAf+DAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", + "approval": "CiACAAEmAgRiTWFwADEYFIEGCzEZCI0MAHEAAAAAAAAAAAAAAGMAAAAAAAAAAAAAAIAEFR98dYgABFCwI0OKAAEoSbxIKSmAAgAbgAgAAAAAAAAAAYgAV4AIAAAAAAAAAAKIAEqACAAAAAAAAAADiAA9gAEAIklUiAA0gAoAAmFiY2RlZmdoiAAySFC/KL5EiSNDgAS4RHs2NhoAjgH/8QCABJUoeIs2GgCOAf+DAIoEA4v8i/9Qi/2L/omKBAOL/Iv+UIz8i/9JFYv+FwgWVwYCjP6L/UxQjP2L/Iv9i/6J", "clear": "Cg==" }, "compilerInfo": { From ecf168ad254f3a0822b442c03a2aeb705019f800 Mon Sep 17 00:00:00 2001 From: Joe Polny Date: Wed, 18 Dec 2024 15:08:59 -0500 Subject: [PATCH 11/11] skipEvalTrace on tests that are expected to throw an error --- tests/common.ts | 6 ++++++ tests/general.test.ts | 4 ++-- tests/math.test.ts | 2 +- tests/templates.test.ts | 3 ++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/common.ts b/tests/common.ts index c18b8eec2..f4849f7c2 100644 --- a/tests/common.ts +++ b/tests/common.ts @@ -156,6 +156,7 @@ export async function runMethod({ callType = 'call', fundAmount = 0, fee = 1000, + skipEvalTrace = false, }: { appClient: ApplicationClient; method: string; @@ -163,6 +164,7 @@ export async function runMethod({ callType?: 'call' | 'optIn'; fundAmount?: number; fee?: number; + skipEvalTrace?: boolean; }) { const params = { method, @@ -179,6 +181,10 @@ export async function runMethod({ } return (await appClient[callType](params)).return?.returnValue; } catch (e) { + if (skipEvalTrace) { + console.warn(e); + throw e; + } // eslint-disable-next-line no-console const abiMethod = appClient.getABIMethod(params.method)!; const { appId } = await appClient.getAppReference(); diff --git a/tests/general.test.ts b/tests/general.test.ts index 71b6a56ee..4aa641746 100644 --- a/tests/general.test.ts +++ b/tests/general.test.ts @@ -99,7 +99,7 @@ describe('General', function () { const { appClient, compiler } = await compileAndCreate(await sender, PATH, ARTIFACTS_DIR, NAME); let msg = 'No error'; try { - await runMethod({ appClient, method: 'assertComment' }); + await runMethod({ appClient, method: 'assertComment', skipEvalTrace: true }); } catch (e) { msg = getErrorMessage(e.message, compiler.sourceInfo); } @@ -111,7 +111,7 @@ describe('General', function () { const { appClient, compiler } = await compileAndCreate(await sender, PATH, ARTIFACTS_DIR, NAME); let msg = 'No error'; try { - await runMethod({ appClient, method: 'throwErrorMessage' }); + await runMethod({ appClient, method: 'throwErrorMessage', skipEvalTrace: true }); } catch (e) { msg = getErrorMessage(e.message, compiler.sourceInfo); } diff --git a/tests/math.test.ts b/tests/math.test.ts index 454051707..2eb0100f0 100644 --- a/tests/math.test.ts +++ b/tests/math.test.ts @@ -85,7 +85,7 @@ describe('Math', function () { let msg: string; try { - await runMethod({ appClient, method: 'uint8plus', methodArgs: [2 ** 8 - 1, 1] }); + await runMethod({ appClient, method: 'uint8plus', methodArgs: [2 ** 8 - 1, 1], skipEvalTrace: true }); msg = 'No error'; // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (e: any) { diff --git a/tests/templates.test.ts b/tests/templates.test.ts index f63f90aa6..0d6504708 100644 --- a/tests/templates.test.ts +++ b/tests/templates.test.ts @@ -73,7 +73,7 @@ describe('Template Variables', function () { }); let pc = 0; try { - await runMethod({ appClient, method: 'throwError' }); + await runMethod({ appClient, method: 'throwError', skipEvalTrace: true }); } catch (error) { pc = Number(String(error).match(/pc=(\d+)/)?.[1]); } @@ -86,6 +86,7 @@ describe('Template Variables', function () { const offsetPc = pc - cblocksOffset; const sourceInfo = arc56.sourceInfo.approval.sourceInfo.find((s) => s.pc?.includes(offsetPc)); + console.debug(arc56.sourceInfo.approval.sourceInfo, offsetPc, pc); expect(sourceInfo?.errorMessage).toBe('this is an error'); }); });