From 0e1002ff4541fc04b3d5a738c56d202309da8ff7 Mon Sep 17 00:00:00 2001 From: neodiX Date: Mon, 12 Aug 2024 17:35:20 +0200 Subject: [PATCH] cell deserialization more tests - WIP --- ...estTonSdkTestCasesCellDeserialization.java | 235 ++++++++++++++++++ .../ton/java/cell/TestBocDeserealization.java | 5 +- 2 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 cell/src/test/java/org/ton/java/TestTonSdkTestCasesCellDeserialization.java diff --git a/cell/src/test/java/org/ton/java/TestTonSdkTestCasesCellDeserialization.java b/cell/src/test/java/org/ton/java/TestTonSdkTestCasesCellDeserialization.java new file mode 100644 index 00000000..7bd33511 --- /dev/null +++ b/cell/src/test/java/org/ton/java/TestTonSdkTestCasesCellDeserialization.java @@ -0,0 +1,235 @@ +package org.ton.java; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.ToNumberPolicy; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.ton.java.address.Address; +import org.ton.java.cell.Cell; +import org.ton.java.cell.CellBuilder; +import org.ton.java.cell.CellSlice; +import org.ton.java.utils.Utils; + +import java.io.IOException; +import java.math.BigInteger; +import java.net.URL; +import java.nio.charset.Charset; + +import static org.assertj.core.api.Assertions.assertThat; + +@Slf4j +@RunWith(JUnit4.class) +public class TestTonSdkTestCasesCellDeserialization { + public static final String numbersTestFileUrl = "https://raw.githubusercontent.com/neodix42/ton-sdk-test-cases/main/cell-deserialization.json"; + Gson gson = new GsonBuilder().setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE).create(); + String fileContentWithUseCases = IOUtils.toString(new URL(numbersTestFileUrl), Charset.defaultCharset()); + TonSdkTestCases tonSdkTestCases = gson.fromJson(fileContentWithUseCases, TonSdkTestCases.class); + + public TestTonSdkTestCasesCellDeserialization() throws IOException { + } + + @Test + public void testCellDeserialization1() { + + String testId = "cell-deserialization-1"; + TonSdkTestCases.TestCase testCase = tonSdkTestCases.getTestCases().get(testId); + + String description = testCase.getDescription(); + + log.info("testId: {}", testId); + log.info("description: {}", description); + + String bocAsHexWithCrc = testCase.getInput().get("bocAsHexWithCrc").toString(); + + + Cell cell = CellBuilder.beginCell().fromBoc(bocAsHexWithCrc).endCell(); + int actualInt = CellSlice.beginParse(cell).loadUint(7).intValue(); + + int expectedLoadUint7 = Integer.parseInt(testCase.getExpectedOutput().get("loadUint7").toString()); + String expectedCellPrint = testCase.getExpectedOutput().get("bitStringToFiftHex").toString(); + + assertThat(actualInt).isEqualTo(expectedLoadUint7); + + assertThat(StringUtils.trim(cell.print())).isEqualTo(expectedCellPrint); + } + + @Test + public void testCellDeserialization2() { + + String testId = "cell-deserialization-2"; + TonSdkTestCases.TestCase testCase = tonSdkTestCases.getTestCases().get(testId); + + String description = testCase.getDescription(); + + log.info("testId: {}", testId); + log.info("description: {}", description); + + String bocAsHexWithCrcOnly = testCase.getInput().get("bocAsHexWithCrcOnly").toString(); + + Cell cell5 = CellBuilder.beginCell().fromBoc(bocAsHexWithCrcOnly).endCell(); + + byte[] actualCell5Bytes = CellSlice.beginParse(cell5).loadBytes(16); + + Cell cell4 = cell5.getRefs().get(0); + Cell cell3 = cell5.getRefs().get(1); + Cell cell2 = cell5.getRefs().get(2); + Cell cell1 = cell5.getRefs().get(3); + + + Boolean expectedCell1Bits = Boolean.parseBoolean(testCase.getExpectedOutput().get("cell1_bits").toString()); + byte[] expectedCell2Bytes = gson.fromJson(testCase.getExpectedOutput().get("cell2_bytes").toString(), byte[].class); + byte[] expectedCell5Bytes = gson.fromJson(testCase.getExpectedOutput().get("cell5_bytes").toString(), byte[].class); + Address expectedAddressCell3 = CellSlice.beginParse(cell3).loadAddress(); + Cell cell2InsideCell3 = CellSlice.beginParse(cell3).loadRef(); + BigInteger expectedToncoinsCell4 = CellSlice.beginParse(cell4).loadCoins(); + Cell cell3InsideCell4 = CellSlice.beginParse(cell4).loadRef(); + + assertThat(CellSlice.beginParse(cell1).loadBit()).isEqualTo(expectedCell1Bits); + assertThat(CellSlice.beginParse(cell3).loadAddress()).isEqualTo(expectedAddressCell3); + assertThat(CellSlice.beginParse(cell3InsideCell4).loadAddress()).isEqualTo(expectedAddressCell3); + assertThat(CellSlice.beginParse(cell4).loadCoins()).isEqualTo(expectedToncoinsCell4); + + assertThat(CellSlice.beginParse(cell2).loadBytes(8)).isEqualTo(expectedCell2Bytes); + assertThat(CellSlice.beginParse(cell2InsideCell3).loadBytes(8)).isEqualTo(expectedCell2Bytes); + assertThat(actualCell5Bytes).isEqualTo(expectedCell5Bytes); + } + + @Test + public void testCellDeserialization3() { + + String testId = "cell-deserialization-3"; + TonSdkTestCases.TestCase testCase = tonSdkTestCases.getTestCases().get(testId); + + String description = testCase.getDescription(); + + log.info("testId: {}", testId); + log.info("description: {}", description); + + String bocAsBase64 = testCase.getInput().get("bocAsBase64").toString(); + Cell cell = CellBuilder.beginCell().fromBocBase64(bocAsBase64).endCell(); + + String expectedFiftOutput = testCase.getExpectedOutput().get("expectedFiftOutput").toString(); + String convertBackToBocAsBase64 = testCase.getExpectedOutput().get("convertBackToBocAsBase64").toString(); + + assertThat(StringUtils.trim(cell.print())).isEqualTo(expectedFiftOutput); +// assertThat(cell.toBase64(true)).isEqualTo(bocAsBase64); + } + + @Test + public void testCellDeserialization4() { + + String testId = "cell-deserialization-4"; + TonSdkTestCases.TestCase testCase = tonSdkTestCases.getTestCases().get(testId); + + String description = testCase.getDescription(); + + log.info("testId: {}", testId); + log.info("description: {}", description); + + String bocAsHex = testCase.getInput().get("bocAsHex").toString(); + CellBuilder.beginCell().fromBoc(bocAsHex).endCell(); + } + + @Test + public void testCellDeserialization5() { + + String testId = "cell-deserialization-5"; + TonSdkTestCases.TestCase testCase = tonSdkTestCases.getTestCases().get(testId); + + String description = testCase.getDescription(); + + log.info("testId: {}", testId); + log.info("description: {}", description); + + String bocAsHexWithCrc = testCase.getInput().get("bocAsHexWithCrc").toString(); + Cell cell = CellBuilder.beginCell().fromBoc(bocAsHexWithCrc).endCell(); + + String expectedBocAsHexWithCrc = testCase.getExpectedOutput().get("bocAsHexWithCrc").toString(); + + assertThat(cell.toHex(true).toUpperCase()).isEqualTo(expectedBocAsHexWithCrc); + + } + + @Test + public void testCellDeserialization6() { + + String testId = "cell-deserialization-6"; + TonSdkTestCases.TestCase testCase = tonSdkTestCases.getTestCases().get(testId); + + String description = testCase.getDescription(); + + log.info("testId: {}", testId); + log.info("description: {}", description); + + String bocAsHex = testCase.getInput().get("bocAsHex").toString(); + Cell cell = CellBuilder.beginCell().fromBoc(bocAsHex).endCell(); + + String expectedHash = testCase.getExpectedOutput().get("hash").toString(); + + assertThat(Utils.bytesToHex(cell.getHash())).isEqualTo(expectedHash); + } + + @Test + public void testCellDeserialization7() { + + String testId = "cell-deserialization-7"; + TonSdkTestCases.TestCase testCase = tonSdkTestCases.getTestCases().get(testId); + + String description = testCase.getDescription(); + + log.info("testId: {}", testId); + log.info("description: {}", description); + + String bocAsBse64 = testCase.getInput().get("bocAsBse64").toString(); + Cell cell = CellBuilder.beginCell().fromBocBase64(bocAsBse64).endCell(); + + String expectedHash = testCase.getExpectedOutput().get("hash").toString(); + + assertThat(Utils.bytesToHex(cell.getHash())).isEqualTo(expectedHash); + } + + @Test + public void testCellDeserialization8() { + + String testId = "cell-deserialization-8"; + TonSdkTestCases.TestCase testCase = tonSdkTestCases.getTestCases().get(testId); + + String description = testCase.getDescription(); + + log.info("testId: {}", testId); + log.info("description: {}", description); + + String bocAsHexWithCrc = testCase.getInput().get("bocAsHexWithCrc").toString(); + Cell cell = CellBuilder.beginCell().fromBoc(bocAsHexWithCrc).endCell(); + + String expectedHash = testCase.getExpectedOutput().get("hash").toString(); + int expectedRefsSize = Integer.parseInt(testCase.getExpectedOutput().get("sizeOfRefs").toString()); + + assertThat(Utils.bytesToHex(cell.getHash())).isEqualTo(expectedHash); + assertThat(cell.getRefs().size()).isEqualTo(expectedRefsSize); + } + + @Test + public void testCellDeserialization9() { + + String testId = "cell-deserialization-9"; + TonSdkTestCases.TestCase testCase = tonSdkTestCases.getTestCases().get(testId); + + String description = testCase.getDescription(); + + log.info("testId: {}", testId); + log.info("description: {}", description); + + String bocAsHexWithCrc = testCase.getInput().get("bocAsHexWithCrc").toString(); + Cell cell = CellBuilder.beginCell().fromBoc(bocAsHexWithCrc).endCell(); + + int expectedCellBitLength = Integer.parseInt(testCase.getExpectedOutput().get("cellBitLength").toString()); + + assertThat(cell.getBitLength()).isEqualTo(expectedCellBitLength); + } +} diff --git a/cell/src/test/java/org/ton/java/cell/TestBocDeserealization.java b/cell/src/test/java/org/ton/java/cell/TestBocDeserealization.java index 3aa0b094..50d2a0b6 100644 --- a/cell/src/test/java/org/ton/java/cell/TestBocDeserealization.java +++ b/cell/src/test/java/org/ton/java/cell/TestBocDeserealization.java @@ -71,6 +71,7 @@ public void testBocIssue74() { log.info("CellType {}", cell.getCellType()); log.info(cell.print()); log.info(Utils.bytesToHex(cell.toBoc(true))); + log.info(Utils.bytesToHex(cell.getHash())); } @Test @@ -293,7 +294,9 @@ public void testShouldDeserializeSerializeDeserializeBocFromBase64() { @Test public void testShouldDeserializeSerializeDeserializeBocWithExoticCells() { log.info("hex {}", Utils.base64ToHexString("te6ccuICASMAAQAAJm0AAAAkAMwA6gGAAmIC/gMwA0oDWQNyA4wEhAT0BQ4FtgX2BugHWAekCEwIjAj2CUMJjgpaCnoLEAsuC0wLaguIC6gLxgvkDAIMIAw+DFwNCg0uDVIN/g4eDj4OXg58DpoOtg7SDu4PCg+wEDQQWBB4EMQREBEwEVARcBGOEa4RzhHuEg4SLhLYE2ATxBRGFGQUghSgFLwVYBXgFe4V/BYKFhgWJhY0FkIWUBZeFmwWehaIFtQW4hbwFv4XDBcaFygXNhdEF5AXtBfYGCUY0BjwGRAZXRmpGcgZ5hozGn8anBq4GwUbURtsG4gb1RwhHDwc4h0vHbId/x5RHpwevB8JH1UfdB+UH+EgACAeIGsgiiDXIPYhFiFjIYIhzyIbIjoi5CMxI7gkBSRoJLUlASWCJc8l7CY5JlYmoybAJw0nWSd0KBgoZSjkKTEpfSnJKhUq4CstK0wr4iwvLEwsmSy2LQMtIC1tLYot1y32LkMuYC6tLsovFy80L4Evni/rMAgwVTByML8w3DGKMjgyRjKTMqAyrjK8MwkzFjNjM3AzvTPKNBc0JDRxNH40yzTYNSU1MjV/NYw12TXmNjM2QDb0N2w4IDhtOHo4xzjUOSE5Ljk8OYk51TniOfA6PTqJOpY6pDrxOz07SjwAPLY8wjzIPRY9Kj1+PYs9lD54PpA+nj6tPrw+zD9wQBhAwEDMQNhBXkIeQqRCtkNaRBtEJESqRMZFd0YYRiRGMEa2R3ZH/EgOSM5JVElmSgtKeUs4Sz9LxUvWTHpM2wQQEe9Vqv///xEAAQACAAMABAGgm8ephwAAAAAEAQFcY8oAAAABAP////8AAAAAAAAAAGL7u90AABusl7vrgAAAG6yXu+uEpYk+AwAFOWIBXGPGAVw1xMQAAAADAAAAAAAAAC4ABQIRuOSN+0ZVPxAEAAYABwqKBPTVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0za8SUx1HcFeKT2oruLoomx5yUkuOsElnlsSJNKY+/ENoBbgFuAAsADBSJmYD0kiPZUykP36g26WWT2iA3GY68wcz8ZL8QwW+fhvAACEoz9v2aCe+A7qvC9i2h3Y6Njxlya+THPWSTqtk2VhEmjFQ8JXqzCxqvVlxyT5lrgSew1WEQPh5vGG5G6aL+jSx7p9yWwAD1APYA9wD4AJgAABusl6ypRAFcY8mtUGDeEa5UtZnyUWZSv8kV786DFV0ENsQUkqouFOLX3rb1GiR3IplBS223L+1UZy+klFYI0IbJ4XbYN5fnBSteAiWB+InEuMrAkZwPxE4l+P/9DMAIAAgACAAVAjKp+IARlU/EAAgCASAACQAKABW+AAADvLNVq0Zq0AAVv////7y9Dv2lY9A0W/TVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0zire8kc/uikSA5tJI792XKtIcd16h+cRO+PhEg96KGUIBbgASkCOv4v///xEA/////wAAAAAAAAAAAVxjyQAAAAFi+7vaAAAbrJesqUQBXGPGYAASABMAFAAVJFuQI6/i////EQD/////AAAAAAAAAAABXGPKAAAAAWL7u90AABusl7vrhAFcY8ZgAA0ADgAPABABEQAAAAAAAAAAUAARMhMdtc3JNOOXcP4CUgqFLYe5jp9eFGCXN/2PYC5God0p7ETUNyBAKrRSk9HHSEaboZwqfwF4wdahjVNsDNrEHei6AW0AEYIH4icS/H/+hnAAYgB+IjMAAAAAAAAAAP//////////gfiJxL8f/6GYKAB+ABY0VVYFBXh8evRXt1/LXGzQvukMsZdguMASeBnedPbBTQIbXMJZIizmRhXnEzCtaN1v/eOKo/DPF2/JtB2rCC+iFr8AGwAQzCaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIyjH/9rdaTfgD6AKYApwCoAGuwQAAAAAAAAAAArjHlAAAN1kvWVKH//////////////////////////////////////////8AoSAEBDRhZGTMcB5HAoou+7uCSHdojFWI3aVx/gTlOrgNM7EMAATITslv1ooQGvZd9j8gshuttzHXVNdKRRvN/mR9pG838qiamUhqaVKTFYyGRZPN04LZpGPPs+x1U4wJQzWuvxOSisQFtABGCB+InEuMrAkZwACcAfiIzAAAAAAAAAAD//////////4H4icS4ysCRmCgAfgAWJFXMJqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwjKMf/qDNwt+ABcApgAYAKgoSAEB3lrfRcA6dF/J06QY2eK6CW25waqne8CJi22eu2EdK0AABShIAQFGlzTBTSSwdU7e8/LKUxeetluyfh48meRDu5i/7nNmxAACIr8AAWQScsUABTliYAADdZLzrOCIAADdSkrI7CAK4a4k3MTcNpg1uZOFvpC5rBKWZ0P1WPQRWS3kf6cDpXRMVxukXtLLI9AGxWzBWBGT0r8K5+PCFum+usBWf79fDcIKsL4AGQAaIhPDwAAG6yXnWcEgAKsAGzIBAIeYO1taU7Vt47RfsITJwl/++8dsGNT9TCMhHhPZKZzwOC8mAtEu1XBvUdKuOype4HXDZR/w85M69lBaaPLMbAARAAwgAEwAxiIRSAAA3WS86zgkAK0AHCIRSAAA3WS86zgkAK8AHSIRIAADdZLzrOCQALEAHiIRIAADdZLzrOCQALMAHyITcIAADdZLzrOCQAC1ACAiEQAAA3WS86zgkAC3ACEiEsYAABusl51nBAC5ACIiEQAAA3WS86zgkAC7ACMiEQAAA3WS86zgkAC9ACQiEQAAA3WS86zgkAC/ACUiEWAAADdZLzrOCQDBACYAqdgAAG6yXnWcEAAAN1kvOs4IArjHkTudJV0SlKNCqWUnI4kyFsiV7FJvc+iZb9/KSnIm0+PZpVZDIqeWFW40wsl3sBiz3QjPBcRm1nq1du4h0uyYkY8jEwED8ROJcZWBIzgAKABkAH4jEwECK5TBxH30z9gAKQAqAH4zEyS1HBlQyWV1/L9QPk10NseTZzQvTY7LSDuHmWW0fONXjCBDRmysNjVi7rthr3HunSe0TVCVx82sHdo9qcHqibwAJwAOAQFjPMnexedhGAA1ADYAfiITAQDIV/fluA1uyAArAGgiEwEAV54yFuvgvogAaQAsIhMBADz13V4WIrDIAC0AbCIRAOCuZLY6FbNoAG0ALiIRAOCpALYsBYqIAC8AcCIPAMEOztR6KcgAcQAwIg8AwCGBUPLlyAAxAHQiEGgMAhed2bEiAHUAMiIPAMAhcPIiPagAMwB4IZ286qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBgELXYw8Em76VSUMnKw9JT5KRLr8v5c2uNsLu1VjatI6JCHcN6fPgAAN1kvWVKHADQid8/1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQIusE3FoAAAAAAAABusl6ypRGAQtdjDwSV0AB6AHsjEwEAaGP/GESjy1gANwA4AH4iEwEA+tjKxoFDlcgAfwA5KEgBAaGc+foO9mwQKK0/lcoCYgNjeqF+Rcf0hypVXIKggFkPACIoSAEBLEE1u+B6Pk0CpLx8pLDrh03UJoXIyN8pfRyOb1bixnQAGSITAQDhVkQ8bIZIiAA6AIIiEwEAqy3xrx3f1YgAOwA8IhMBAJSAlZ7p1+IIAIUAPSIRAPatXBA0B/OIAEYAmSITAQCUcMvl8qMzaACHAD4iEwEAlHDIQ/8wKigAPwCKIhMBAJRwx55XnEioAEAAjCITAQCUb6RiXUfGSACNAEEiE1BAJRvpDhaAUmoAQgCQIaG82ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmCASjfSGxl/hHbLkKGckdjU0+pR7Ldji2RcYjpCbYWh+gEUEvL8M5Ju+AAA3WS9ZUoUAQyJ7z/MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzNAhiwX8fgAAAAAAAAG6yXrKlDgEo30hsZf4R1tAAkgBEI1Pqaqyy8Y7F9fQmfU6SVXmhZNA9h8s3xJLzWddS/Taz+9t+M8A8IIRGDQ0AlACVAEUheaBi+voTYvx6EwAAgAA+p0kqvNCyaB7D5ZviSXms66l+m1n97b8Z4B4QQiMGhsAQyQmCod2Jow9Zs4EfqKAAlyIRAPajgKQCsu7IAEcAmyIRAOpZ4BY7Jk6IAEgAnSIRAOpZ1zYha1JIAJ4ASSIPAMEP/gXtXAgASgChIZu9Yvj3vqMPirXp8Ww/uGQrEY9W7RvcSWANvlIgyLGvngQMR0+AOG3ulh67nIWc1bvFRUKvsQpoDoe3Svm0sURluoXmTIEAAA3WS9ZUocAASyNvz/NFF8e99Rh8Va9Pi2H9wyFYjHq3aN7iSwBt8pEGRY188hiB9IAAAAAAAABusl6ypREDEdPgF/AAowCkAKUiASAATQBOIgEgAE8AyiIBIADhAFkiASAAUADMIgEgAFEAziIBIABSANAiASAAUwDSIgEgAFQA1CIBIABVANYiASAAVgDYIgEgAFcA2iIBIABYANwoSAEBWXz3+FutVP/axJJUTkj4rn5fslFnw31b4NlqeeXZPyQAAiIBIADjAFoiASAA5QBbIgEgAFwA6CIBIADpAF0iASAAXgDsIgEgAO0AXyIBIABgAPAiASAA8QBhKEgBAXiAuo0sy9Es/AQVeLGsX3bKwdo5L7gJg8bUFVMYvlCaAAEjEwED8ROJfj//QzgAYwBkAH4jEwECK5TB0Shy79gAZQBmAH4oSAEBCTusJZLDistdSnk3sKJaV3Nm68vY//M0RTCS/JkL+vYBazMTdLk/0rGuPhFGIFQBGqMvu4GN8vtoij4X+a7O3fD3qZj20ydje0zcMjFHckMuvK+MI67IO6GiUsJwF68cm4u0QAAnAA4BAWM8yetwZYEYAHwAfQB+IhMBAMhX9+W4DW7IAGcAaCITAQBXnjIW6+C+iABpAGooSAEBeyCsyE2p70b7/VQ0ntN4AJEJsunk6+Nx7LyRSDW1z3YAJihIAQGfsYVYj5Wmsy5rly0uRvIzUM2N3Cc5w8DUGSad11BUGgAaIhMBADz13V4WIrDIAGsAbCIRAOCuZLY6FbNoAG0AbihIAQGBZTPuSKU+KHmVO6xrwLU6OwuqLneTuis9DRKAxcUA+gAbKEgBAb7AYTlRqYP2UWoDGWBjvAD1SdZ717/VWgdlSqpzhNOTABYiEQDgqQC2LAWKiABvAHAiDwDBDs7UeinIAHEAcihIAQFIYDAgJImOWHtSS8hNSUAXOTmNEpq4V1jp/N0lT5Wb5AAVKEgBAUTu+ORUtGItyumSSdty9phCUIHhiuiq6xVK85dHwZV5ABQiDwDAIYFQ8uXIAHMAdCIQaAwCF53ZsSIAdQB2KEgBAes475DFkL7bPOMRQNLUF21D22t6qzXfaFr8TM8qODIJAAsoSAEBoki4HyIzPMKPa2dE5CmK782bby3F18meHaGyjDfzqgwAByIPAMAhcPIiPagAdwB4IZ286qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBgELXYw8Ej5ghu+SvxvXTzy3LcCezJlVmTe+2mDSq9LkkWaIoPNggAAN1kvd9cHAHkoSAEBAUOz0t1nGyVZVDFV4AP4RwIuUQs6V6+rvKBdQGnDJ+8ADSJ3z/VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAi6wTcWgAAAAAAAAG6yXu+uEYBC12MPBJXQAHoAeyhIAQFkpDlw8gB6HabW/IF3PMCV0cwnDoE1nkcfOwNGmr63tQAMIUkAAAAny7nRBilUQ5qDqR8ng1+50uPnmJEDVmUMPEk8lGI0ZGhAAKYoSAEB0SwMTneYsjW00MK0A9i5Q3jbaxR8vQ2wLmeXsxDymd4AIyITAQD62MrTK8G1yAB/AIAoSAEBpafSQFfYZDslJ3CdmGzaOEatyz7dwy0o7CH2nhfbqu8AAShIAQFwmF79pkTSAf83WZJqc6g5kbaOfY9atu0pI4YodBxfcwAjIhMBAOFWREkXBGiIAIEAgiITAQCrLfG7yF31iACDAIQoSAEBfO7p2ssB/eXmSYPltxRBdpts2if5sMf2WviNrBNT+ZoAJCITAQCUgJWrlFYCCACFAIYiEQD2rVwQNAfziACYAJkoSAEBuNiIeDmTC8CohEL8WXsO4tdSDJBeYtl4sMMBQxC853EAEiITAQCUcMvynSFTaACHAIgoSAEBQAZWxryCW6vo6SQtze49o6msyt7YXgl6xL6djKAlK5YAFCITAQCUcMhQqa5KKACJAIoiEwEAlHDHqwIaaKgAiwCMKEgBAeLMlEjzp+SoP4n5ibseDWeDitDjLPkR9smWpZotmH+XABMiEwEAlG+kbwfF5kgAjQCOKEgBAaY9VjHCdxRq7JPuewHa7qp2qyCHelqp6amnLKh+9TQxABEoSAEBEMrIvXf6JGwryV0CaXWbYSMSu8BDjtXrfdUxFuVekCAACyITUEAlG+kRQR/aagCPAJAhobzZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYIBKN9Ihbr6Uc5/NcovAJ8r3yYRzaNjSyHFOeiQRQDJ4Am7uCNC7I4foAADdZL3fXBQCRKEgBAVByXu5S6GQy+EZpigisFTpnvJrZwWATCvkHw77wXylIAAcie8/zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzQIYsF/H4AAAAAAAABusl7vrg4BKN9Ihbr6UdbQAJIAkyhIAQFiF/hyyZ+vy4cPLBGjYvWTOb6VCV9w0Auc/y9tzWnT3QAOI1Pqaqyy8Y7F9fQmfU6SVXmhZNA9h8s3xJLzWddS/Taz+9t+M8A8IIRGDQ0AlACVAJYoSAEBKoKJur4cNCgC1IY6A5tNNnkdvnprZ6wrbVsT4L0BErcADChIAQFyfx/4vC1obPzivIEZwPMiZAus3yv95L7c5suIJOeEnAAGIXmgYvr6E2L8ehMAAIAAPqdJKrzQsmgew+Wb4kl5rOupfptZ/e2/GeAeEEIjBobAEMkJgqHdiaMPWeYrGCigAJcoSAEBTUBb2EkFFdUFoUF/vMNDkq98n95MgTsbEAKeYxIgJFAACyIRAPajgKQCsu7IAJoAmyhIAQFWXXYdQ+XLOTHJRquwFOp3rL9BsaKeXkAxlMCE/WWO3gAWIhEA6lngFjsmTogAnACdKEgBAUa6LKRwvrHJNfi+WKRsS5IqF/Gmwc73IhcXsj1qkHL1ABIiEQDqWdc2IWtSSACeAJ8oSAEBzzzYBD5+B/aYyD1Rdom3SuCkRrB4wXp2/DXemm47nacACyhIAQHivDN+zn869RcfMmX0TGEvwvy6h/S0Vj3H/cMoXdakTQAIIg8AwQ/+Be1cCACgAKEhm71i+Pe+ow+KtenxbD+4ZCsRj1btG9xJYA2+UiDIsa+eBAxHT4BdnG3BAY7IdB5cLbxlCmLLuPCMICapTYbDlO5GXa84bgAADdZL3fXBwACiKEgBARAHvdNtsKqXO9o37ZNREskXv+VhKnRwNRZlBQL7o8eqAAcjb8/zRRfHvfUYfFWvT4th/cMhWIx6t2je4ksAbfKRBkWNfPIYgfSAAAAAAAAAbrJe764RAxHT4BfwAKMApAClKEgBAXJp+5/rRdcZ69vDsIFrmHurBvQzeNyE3ITVVyeQVIIUAAIASBH9CWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChIAQGYbEmXG5YGLh+6RBDicknI1zsKk4D3/9RGQBZ+aLIV6AADKEgBATqEWgqr+KuoMj0Ep7y5srYNLqj8Ko8oK4RtjNlxx51mABAivwABZBJyxQAFOWJgAAN1kvWVKIgAAN1KSsjsIArhriTcxNw2mDW5k4W+kLmsEpZnQ/VY9BFZLeR/pwOldExXG6Re0ssj0AbFbMFYEZPSvwrn48IW6b66wFZ/v18NwgqwvgCpAKooSAEBsg42o7NqTN7mARBsZC6QcYsKWNryAHU9uzGJ+Va0lLYAASITw8AABusl6ypRIACrAKwyAQQMPGtMVL/GNGQbzQP6DzYsOmEUuDNFDdVXMRRrC7bdb0zkS579E6xgc85btrPnqMZ4cNfv8FuWSEMOrUrXCxkAEQAOIADFAMYoSAEBJY1gLqoh1iFjTc+GaSrq4wj/PPiI8+2vxqWyGEjXMvkAGCIRSAAA3WS9ZUokAK0ArihIAQFLAevPVCVzVGGqi4O66J5w+iHpXS7oXlewXa0mwdbVMAAWIhFIAADdZL1lSiQArwCwKEgBASfCBonEr7FAIn7sQ1UA7TEblKunHkxixYyeZj6FEZdmABQiESAAA3WS9ZUokACxALIoSAEBekek1ozh+guMdLUubbRmvyoSH2LkF7lZZ5lpZUTU6PoAEyIRIAADdZL1lSiQALMAtChIAQHkIuZtgKDG1WA5rRFS1NgwReHTZi1SNNMrSykiHZSQWgASIhNwgAAN1kvWVKJAALUAtihIAQGDGIJtvnMnTu5sMLkLSx8DSThVmkDQvPj7fykVEQf05AAOIhEAAAN1kvWVKJAAtwC4KEgBAezvv42McVxMlOH8j/2DvdCsojULurd9P1+o9FnsP9pjAA0iEsYAABusl6ypRAC5ALooSAEBDycKMAOkHc0WV8F/45XytNoU8ruL1HV86RwmRMftI6wACSIRAAADdZL1lSiQALsAvChIAQFYW+t4JCJBUivqDwGbmUPZdvYLNmFAtT4gHIzhpzfOfAAIIhEAAAN1kvWVKJAAvQC+KEgBAXieobvi/iOBzFQ0kaV5bb5KHY9IM8DDSyWDnATkIvi+AAciEQAAA3WS9ZUokAC/AMAoSAEBbY7wWPNhFRyh9yyuFOYtPBFpyHkPsk+4bGmAPVvkTmwABiIRYAAAN1kvWVKJAMEAwihIAQE1xseF+5VkDCW8P6vrHJuqaWZX2MU91gsAUTWxBnj9KAADAhHQAABusl6ypRIAwwDEAKkAAAN1kvOs4IAAAbrJedZwQBXGPInc6SrolKUaFUspORxJkLZEr2KTe59Ey37+UlORNp8ezSqyGRU8sKtxphZLvYDFnuhGeC4jNrPVq7dxDpdkxIx4AKkAAAN1kvWVKIAAAbrJesqUQBXGPJrVBg3hGuVLWZ8lFmUr/JFe/OgxVdBDbEFJKqLhTi19629RokdyKZQUttty/tVGcvpJRWCNCGyeF22DeX5wUrXoIgEgAMcAyChIAQGu8KqOGecHnC6xDLWXQcm/uh6mTarrEx0KLEjgO7lCnAAPIgEgAMkAyiIBIADhAOIiASAAywDMKEgBAXk9It6XVy2z31iyfsspPibIWfc1AgoAIBmXHR7z/cZvAA4iASAAzQDOKEgBAdUZoCCO2JJZf6mTcm03HI8LLFvYuAe2fE4AlNgL+0NGAAsiASAAzwDQKEgBAUzQzjz1ToVzH4CtlwM5TDJqFCBxherrDqUfR7kpZpDBAAoiASAA0QDSKEgBAYoQlE7G75o/5USR0RhvyC3jGmfPUG8EHJhMus/EWRZ1AAkiASAA0wDUKEgBAR3KAqycpFRKUYnugfdS7azvlvky4fhFVK7conEXyhyNAAgiASAA1QDWKEgBAQQn3ll4dzimR7sP3f6zbMQLp0qB0esPyrXUM4YBbAhdAAYiASAA1wDYKEgBAZfEoI/C66ckE9EKBrZxA+JkJED9MKX8Dz2iVsPFw67zAAQiASAA2QDaKEgBAfX8LosT2PFpwLv6bJVuGZdgJ56nXKOc0yESCVNnvHw/AAQiASAA2wDcKEgBAXr/n0ZSk673HB2/hZg/yrPGAA7V7add+YXUWw8fhesTAAICAUgA3QDeKEgBAZW3RqjT3l57qNFCi4WOkjGa8Fk3wYg6uNaTqLRsB+RwAAECAUgA3wDgALC8pDekRIKROMnn1zZps0fFD5xZK5HZclrTqTxEM/UVBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABi6PYHAAAAAAAAAEAAAAAFL13oXAAAAChBBG2JAHPeCMX3d7oAAAAAArjHkgAAA/O5oGIsAAB4gl7chi7F93e0AAAAABVmUS4AAAQuA5O3MgAAitGB8ZmfAK+8JNeodQB3S3ySJ6cBZcuXH+efQQdYFkivCIgtbFm+UYuD5BgAAAAAAAADNAAAACE2aoQoAAACCxJE282Lg3K8AAAAAAAAAbAAAAAnYxP1hAAAASrP1KOiKEgBAaAHMhgqir1hpSA49q8g+vwjThBQFBRI4/rIQD1w0GttAA0iASAA4wDkKEgBAf634adaXt7xxlvzCFezQIyAu/CbCmZ/740pRPZwl+pmAAsiASAA5QDmKEgBAXsuQVOKYqXV60R34Ec8ltU+Pf7LOrBKUf2CZFzE+G+VAAoiASAA5wDoIgEgAOkA6ihIAQFUphHuht53X4veeI4yL7SvbVehn1/3sloAjn65wp2C/gAJKEgBAY8K7AMxG0eELIwRfk/pJCAZ1KaXj9/v3eOmSuwuBn2jAAkiASAA6wDsIgEgAO0A7ihIAQFcg966pLrkrhJUoWZiwiiTL3P9he3aNEYjF3v9+o+/qQAIKEgBAapROzZGAJyr/fqAA8hrTycuSncvWRifZawhmGmFqDdRAAQiASAA7wDwIgEgAPEA8ihIAQFbeohx3HhM4ZWzeHNKjWp/y0GVaqjS7ocgrBTMjnKJGQAEKEgBAa3tlK6y0+tzmtCefNKPTUP/dxcHC003ELoKHvMYcHL9AAICASAA8wD0ALG9OWA4eehMEoTmgDaa4SJcv86bUGIwB9gX4minF4ESFRi8fYmAAAAAAAAAJAAAAAGtuObMQAAAGYQiF+dYvH5eAAAAAAAAAA1AAAABEJ9wbwAAAAmSwQh0IACxvQwsar1Zcck+Za4EnsNVhED4ebxhuRumi/o0se6fclkYvu73QAAAAAAAAB7AAAAA7tloooAAABU4x9lMGL7t6QAAAAAAAAAXQAAAAQNrrfsAAAAPxrkcjeABA4AgAPkAAQIRAQxeXB6oSoL05odUmWeAThjD1OZshufvFGK8ViRPedmHAAeCAQACB8ylQAQA+gD7AkegGfM+8Ws2eOef2kVcbyxEr3MJw1l+bFGcPAQ49ufZf2bgBhAA/wEMAQPQQAD8AQFQAP4B21ANcNBYCuMeSAAA3WS8cSYAAADdZLxxJgzsHGJrRZNbTTQ1eH3cPabQCIQi9mM60egKVWuV+4gYkJN64Ng0PrsLKth4FFkECnfLTUH02Kpoft6gUOt9s34IgAAp0bQAAAAAAAAAAArjHjMX3d6yAP0AE0O5rKACHc1lACACAWEA/wEMAQZGBgABEAIDQEABAQECAgN2BAEDAQQCl7+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqtAAAAbrJe764MEBHQEfA5e+szMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzApmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZz4AABusl7vrgBAAQUBBgEHA5e+hRfHvfUYfFWvT4th/cMhWIx6t2je4ksAbfKRBkWNfPApoovj3vqMPirXp8Ww/uGQrEY9W7RvcSWANvlIgyLGvnz4AABusl7vrgBAARIBEwEUAQNQQAEIAQNAQAEMAIJy0qHDnO/SzcI5bilMhsIcKm3pITcpPxDBdK3Z64h8IYn+syCiPXhx5T9fyITF9Y0fPlif+C0QKBMMK0lvSCwKeAOvczMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMwAAG6yXu+uB2XIUM5I7Gpp9Sj2W7HFsi4xHSE2wtD9AIoJeX4ZyTd8AABusl6ypQmL7u90AAUCAEeAQkBCgCCctKhw5zv0s3COW4pTIbCHCpt6SE3KT8QwXSt2euIfCGJnxz97kRUoZLKtpkXeo3Xbpy+UWbeKZ3NzRxyfPllajoCBSAwJAELASIAoEMbkATEtAAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA69zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzAAAbrJe764LY5VCdfnYYhGVXLYjVU+v6uHJRb6NcDw3NRpSNnCspvQAAG6yXu+uBYvu73QABQIAQ0BDgEPAQGgARAAgnKfHP3uRFShksq2mRd6jddunL5RZt4pnc3NHHJ8+WVqOv6zIKI9eHHlP1/IhMX1jR8+WJ/4LRAoEwwrSW9ILAp4Ag8ECRlU/EAYEQERASIAq2n+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE/zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzRlU/EAAAAADdZL3fXAMX3d7pAAJ5CYUwKYEAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQNQQAEVAQNQQAEYAIJyTWmRD8NJqUfLl75L02fHhXVpb3JuHACpgHMDT+PKd6Jiz4PoIzw+RMGZ2HI+ufbDfymjK25GIJb5nl8bY8RDHwOvc0UXx731GHxVr0+LYf3DIViMerdo3uJLAG3ykQZFjXzwAAG6yXu+uBcNvdLD13OQs5q3eKioVfYhTQHQ9ulfNpYojLdQvMmQIAABusl6ypQ2L7u90AAUCAEeARYBFwCCck1pkQ/DSalHy5e+S9Nnx4V1aW9ybhwAqYBzA0/jyneiYyyZipJkBBAiORSu6XurIo5WH7e7FJvKz1BZhYEdci0CBSAwNAEbARwDr3NFF8e99Rh8Va9Pi2H9wyFYjHq3aN7iSwBt8pEGRY188AABusl7vrg0QKXxJI3glhzVmF4v5qE5Kbo9UUSPfxymTt5j/SLxMuAAAbrJe764Fi+7vdAAFAgBHgEZARoAgnJjLJmKkmQEECI5FK7pe6sijlYft7sUm8rPUFmFgR1yLWLPg+gjPD5EwZnYcj659sN/KaMrbkYglvmeXxtjxEMfAgUwMDQBGwEcAKBCZlAExLQAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpYAAAAJYAAAAEAAYAAAAAAAUZroTxe4+LIgJql1/1Xxqxn95KdodE0heN+mO7Uz4QekCQJrwDr3VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAABusl7vrg930qkoZOVh6SnyUiXX5fy5tcbYXdqrG1aR0SEO4b0+fAAAbrJesqUNi+7vdAAFAgBHgEfASAAASAAgnInQXosH901OQ60ZXqLtWVUUFO/VYx/Z7op4IQCiAP8fRm2u+U+GlbHutvOYI/sv7vz/AhoIuwzJHex5xE22/o6AgUwMCQBIQEiAKBBKXAExLQAAAAAAAAAAAAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbwAAAAAAAAAAAAAAAAS1FLaRJ5QuM990nhh8UYSKv4bVGu4tw/IIW8MYUE5+OBDyXW64=")); - CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes("te6ccuICASMAAQAAJm0AAAAkAMwA6gGAAmIC/gMwA0oDWQNyA4wEhAT0BQ4FtgX2BugHWAekCEwIjAj2CUMJjgpaCnoLEAsuC0wLaguIC6gLxgvkDAIMIAw+DFwNCg0uDVIN/g4eDj4OXg58DpoOtg7SDu4PCg+wEDQQWBB4EMQREBEwEVARcBGOEa4RzhHuEg4SLhLYE2ATxBRGFGQUghSgFLwVYBXgFe4V/BYKFhgWJhY0FkIWUBZeFmwWehaIFtQW4hbwFv4XDBcaFygXNhdEF5AXtBfYGCUY0BjwGRAZXRmpGcgZ5hozGn8anBq4GwUbURtsG4gb1RwhHDwc4h0vHbId/x5RHpwevB8JH1UfdB+UH+EgACAeIGsgiiDXIPYhFiFjIYIhzyIbIjoi5CMxI7gkBSRoJLUlASWCJc8l7CY5JlYmoybAJw0nWSd0KBgoZSjkKTEpfSnJKhUq4CstK0wr4iwvLEwsmSy2LQMtIC1tLYot1y32LkMuYC6tLsovFy80L4Evni/rMAgwVTByML8w3DGKMjgyRjKTMqAyrjK8MwkzFjNjM3AzvTPKNBc0JDRxNH40yzTYNSU1MjV/NYw12TXmNjM2QDb0N2w4IDhtOHo4xzjUOSE5Ljk8OYk51TniOfA6PTqJOpY6pDrxOz07SjwAPLY8wjzIPRY9Kj1+PYs9lD54PpA+nj6tPrw+zD9wQBhAwEDMQNhBXkIeQqRCtkNaRBtEJESqRMZFd0YYRiRGMEa2R3ZH/EgOSM5JVElmSgtKeUs4Sz9LxUvWTHpM2wQQEe9Vqv///xEAAQACAAMABAGgm8ephwAAAAAEAQFcY8oAAAABAP////8AAAAAAAAAAGL7u90AABusl7vrgAAAG6yXu+uEpYk+AwAFOWIBXGPGAVw1xMQAAAADAAAAAAAAAC4ABQIRuOSN+0ZVPxAEAAYABwqKBPTVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0za8SUx1HcFeKT2oruLoomx5yUkuOsElnlsSJNKY+/ENoBbgFuAAsADBSJmYD0kiPZUykP36g26WWT2iA3GY68wcz8ZL8QwW+fhvAACEoz9v2aCe+A7qvC9i2h3Y6Njxlya+THPWSTqtk2VhEmjFQ8JXqzCxqvVlxyT5lrgSew1WEQPh5vGG5G6aL+jSx7p9yWwAD1APYA9wD4AJgAABusl6ypRAFcY8mtUGDeEa5UtZnyUWZSv8kV786DFV0ENsQUkqouFOLX3rb1GiR3IplBS223L+1UZy+klFYI0IbJ4XbYN5fnBSteAiWB+InEuMrAkZwPxE4l+P/9DMAIAAgACAAVAjKp+IARlU/EAAgCASAACQAKABW+AAADvLNVq0Zq0AAVv////7y9Dv2lY9A0W/TVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0zire8kc/uikSA5tJI792XKtIcd16h+cRO+PhEg96KGUIBbgASkCOv4v///xEA/////wAAAAAAAAAAAVxjyQAAAAFi+7vaAAAbrJesqUQBXGPGYAASABMAFAAVJFuQI6/i////EQD/////AAAAAAAAAAABXGPKAAAAAWL7u90AABusl7vrhAFcY8ZgAA0ADgAPABABEQAAAAAAAAAAUAARMhMdtc3JNOOXcP4CUgqFLYe5jp9eFGCXN/2PYC5God0p7ETUNyBAKrRSk9HHSEaboZwqfwF4wdahjVNsDNrEHei6AW0AEYIH4icS/H/+hnAAYgB+IjMAAAAAAAAAAP//////////gfiJxL8f/6GYKAB+ABY0VVYFBXh8evRXt1/LXGzQvukMsZdguMASeBnedPbBTQIbXMJZIizmRhXnEzCtaN1v/eOKo/DPF2/JtB2rCC+iFr8AGwAQzCaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIyjH/9rdaTfgD6AKYApwCoAGuwQAAAAAAAAAAArjHlAAAN1kvWVKH//////////////////////////////////////////8AoSAEBDRhZGTMcB5HAoou+7uCSHdojFWI3aVx/gTlOrgNM7EMAATITslv1ooQGvZd9j8gshuttzHXVNdKRRvN/mR9pG838qiamUhqaVKTFYyGRZPN04LZpGPPs+x1U4wJQzWuvxOSisQFtABGCB+InEuMrAkZwACcAfiIzAAAAAAAAAAD//////////4H4icS4ysCRmCgAfgAWJFXMJqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwjKMf/qDNwt+ABcApgAYAKgoSAEB3lrfRcA6dF/J06QY2eK6CW25waqne8CJi22eu2EdK0AABShIAQFGlzTBTSSwdU7e8/LK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")); + Cell c = CellBuilder.beginCell().fromBoc(Utils.base64ToSignedBytes("te6ccuICASMAAQAAJm0AAAAkAMwA6gGAAmIC/gMwA0oDWQNyA4wEhAT0BQ4FtgX2BugHWAekCEwIjAj2CUMJjgpaCnoLEAsuC0wLaguIC6gLxgvkDAIMIAw+DFwNCg0uDVIN/g4eDj4OXg58DpoOtg7SDu4PCg+wEDQQWBB4EMQREBEwEVARcBGOEa4RzhHuEg4SLhLYE2ATxBRGFGQUghSgFLwVYBXgFe4V/BYKFhgWJhY0FkIWUBZeFmwWehaIFtQW4hbwFv4XDBcaFygXNhdEF5AXtBfYGCUY0BjwGRAZXRmpGcgZ5hozGn8anBq4GwUbURtsG4gb1RwhHDwc4h0vHbId/x5RHpwevB8JH1UfdB+UH+EgACAeIGsgiiDXIPYhFiFjIYIhzyIbIjoi5CMxI7gkBSRoJLUlASWCJc8l7CY5JlYmoybAJw0nWSd0KBgoZSjkKTEpfSnJKhUq4CstK0wr4iwvLEwsmSy2LQMtIC1tLYot1y32LkMuYC6tLsovFy80L4Evni/rMAgwVTByML8w3DGKMjgyRjKTMqAyrjK8MwkzFjNjM3AzvTPKNBc0JDRxNH40yzTYNSU1MjV/NYw12TXmNjM2QDb0N2w4IDhtOHo4xzjUOSE5Ljk8OYk51TniOfA6PTqJOpY6pDrxOz07SjwAPLY8wjzIPRY9Kj1+PYs9lD54PpA+nj6tPrw+zD9wQBhAwEDMQNhBXkIeQqRCtkNaRBtEJESqRMZFd0YYRiRGMEa2R3ZH/EgOSM5JVElmSgtKeUs4Sz9LxUvWTHpM2wQQEe9Vqv///xEAAQACAAMABAGgm8ephwAAAAAEAQFcY8oAAAABAP////8AAAAAAAAAAGL7u90AABusl7vrgAAAG6yXu+uEpYk+AwAFOWIBXGPGAVw1xMQAAAADAAAAAAAAAC4ABQIRuOSN+0ZVPxAEAAYABwqKBPTVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0za8SUx1HcFeKT2oruLoomx5yUkuOsElnlsSJNKY+/ENoBbgFuAAsADBSJmYD0kiPZUykP36g26WWT2iA3GY68wcz8ZL8QwW+fhvAACEoz9v2aCe+A7qvC9i2h3Y6Njxlya+THPWSTqtk2VhEmjFQ8JXqzCxqvVlxyT5lrgSew1WEQPh5vGG5G6aL+jSx7p9yWwAD1APYA9wD4AJgAABusl6ypRAFcY8mtUGDeEa5UtZnyUWZSv8kV786DFV0ENsQUkqouFOLX3rb1GiR3IplBS223L+1UZy+klFYI0IbJ4XbYN5fnBSteAiWB+InEuMrAkZwPxE4l+P/9DMAIAAgACAAVAjKp+IARlU/EAAgCASAACQAKABW+AAADvLNVq0Zq0AAVv////7y9Dv2lY9A0W/TVPFzdihzyG0ZA/Z/mBJ1yBqgO+orVswRwW9Ghgz0zire8kc/uikSA5tJI792XKtIcd16h+cRO+PhEg96KGUIBbgASkCOv4v///xEA/////wAAAAAAAAAAAVxjyQAAAAFi+7vaAAAbrJesqUQBXGPGYAASABMAFAAVJFuQI6/i////EQD/////AAAAAAAAAAABXGPKAAAAAWL7u90AABusl7vrhAFcY8ZgAA0ADgAPABABEQAAAAAAAAAAUAARMhMdtc3JNOOXcP4CUgqFLYe5jp9eFGCXN/2PYC5God0p7ETUNyBAKrRSk9HHSEaboZwqfwF4wdahjVNsDNrEHei6AW0AEYIH4icS/H/+hnAAYgB+IjMAAAAAAAAAAP//////////gfiJxL8f/6GYKAB+ABY0VVYFBXh8evRXt1/LXGzQvukMsZdguMASeBnedPbBTQIbXMJZIizmRhXnEzCtaN1v/eOKo/DPF2/JtB2rCC+iFr8AGwAQzCaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsIyjH/9rdaTfgD6AKYApwCoAGuwQAAAAAAAAAAArjHlAAAN1kvWVKH//////////////////////////////////////////8AoSAEBDRhZGTMcB5HAoou+7uCSHdojFWI3aVx/gTlOrgNM7EMAATITslv1ooQGvZd9j8gshuttzHXVNdKRRvN/mR9pG838qiamUhqaVKTFYyGRZPN04LZpGPPs+x1U4wJQzWuvxOSisQFtABGCB+InEuMrAkZwACcAfiIzAAAAAAAAAAD//////////4H4icS4ysCRmCgAfgAWJFXMJqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwjKMf/qDNwt+ABcApgAYAKgoSAEB3lrfRcA6dF/J06QY2eK6CW25waqne8CJi22eu2EdK0AABShIAQFGlzTBTSSwdU7e8/LKUxeetluyfh48meRDu5i/7nNmxAACIr8AAWQScsUABTliYAADdZLzrOCIAADdSkrI7CAK4a4k3MTcNpg1uZOFvpC5rBKWZ0P1WPQRWS3kf6cDpXRMVxukXtLLI9AGxWzBWBGT0r8K5+PCFum+usBWf79fDcIKsL4AGQAaIhPDwAAG6yXnWcEgAKsAGzIBAIeYO1taU7Vt47RfsITJwl/++8dsGNT9TCMhHhPZKZzwOC8mAtEu1XBvUdKuOype4HXDZR/w85M69lBaaPLMbAARAAwgAEwAxiIRSAAA3WS86zgkAK0AHCIRSAAA3WS86zgkAK8AHSIRIAADdZLzrOCQALEAHiIRIAADdZLzrOCQALMAHyITcIAADdZLzrOCQAC1ACAiEQAAA3WS86zgkAC3ACEiEsYAABusl51nBAC5ACIiEQAAA3WS86zgkAC7ACMiEQAAA3WS86zgkAC9ACQiEQAAA3WS86zgkAC/ACUiEWAAADdZLzrOCQDBACYAqdgAAG6yXnWcEAAAN1kvOs4IArjHkTudJV0SlKNCqWUnI4kyFsiV7FJvc+iZb9/KSnIm0+PZpVZDIqeWFW40wsl3sBiz3QjPBcRm1nq1du4h0uyYkY8jEwED8ROJcZWBIzgAKABkAH4jEwECK5TBxH30z9gAKQAqAH4zEyS1HBlQyWV1/L9QPk10NseTZzQvTY7LSDuHmWW0fONXjCBDRmysNjVi7rthr3HunSe0TVCVx82sHdo9qcHqibwAJwAOAQFjPMnexedhGAA1ADYAfiITAQDIV/fluA1uyAArAGgiEwEAV54yFuvgvogAaQAsIhMBADz13V4WIrDIAC0AbCIRAOCuZLY6FbNoAG0ALiIRAOCpALYsBYqIAC8AcCIPAMEOztR6KcgAcQAwIg8AwCGBUPLlyAAxAHQiEGgMAhed2bEiAHUAMiIPAMAhcPIiPagAMwB4IZ286qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBgELXYw8Em76VSUMnKw9JT5KRLr8v5c2uNsLu1VjatI6JCHcN6fPgAAN1kvWVKHADQid8/1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQIusE3FoAAAAAAAABusl6ypRGAQtdjDwSV0AB6AHsjEwEAaGP/GESjy1gANwA4AH4iEwEA+tjKxoFDlcgAfwA5KEgBAaGc+foO9mwQKK0/lcoCYgNjeqF+Rcf0hypVXIKggFkPACIoSAEBLEE1u+B6Pk0CpLx8pLDrh03UJoXIyN8pfRyOb1bixnQAGSITAQDhVkQ8bIZIiAA6AIIiEwEAqy3xrx3f1YgAOwA8IhMBAJSAlZ7p1+IIAIUAPSIRAPatXBA0B/OIAEYAmSITAQCUcMvl8qMzaACHAD4iEwEAlHDIQ/8wKigAPwCKIhMBAJRwx55XnEioAEAAjCITAQCUb6RiXUfGSACNAEEiE1BAJRvpDhaAUmoAQgCQIaG82ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmCASjfSGxl/hHbLkKGckdjU0+pR7Ldji2RcYjpCbYWh+gEUEvL8M5Ju+AAA3WS9ZUoUAQyJ7z/MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzNAhiwX8fgAAAAAAAAG6yXrKlDgEo30hsZf4R1tAAkgBEI1Pqaqyy8Y7F9fQmfU6SVXmhZNA9h8s3xJLzWddS/Taz+9t+M8A8IIRGDQ0AlACVAEUheaBi+voTYvx6EwAAgAA+p0kqvNCyaB7D5ZviSXms66l+m1n97b8Z4B4QQiMGhsAQyQmCod2Jow9Zs4EfqKAAlyIRAPajgKQCsu7IAEcAmyIRAOpZ4BY7Jk6IAEgAnSIRAOpZ1zYha1JIAJ4ASSIPAMEP/gXtXAgASgChIZu9Yvj3vqMPirXp8Ww/uGQrEY9W7RvcSWANvlIgyLGvngQMR0+AOG3ulh67nIWc1bvFRUKvsQpoDoe3Svm0sURluoXmTIEAAA3WS9ZUocAASyNvz/NFF8e99Rh8Va9Pi2H9wyFYjHq3aN7iSwBt8pEGRY188hiB9IAAAAAAAABusl6ypREDEdPgF/AAowCkAKUiASAATQBOIgEgAE8AyiIBIADhAFkiASAAUADMIgEgAFEAziIBIABSANAiASAAUwDSIgEgAFQA1CIBIABVANYiASAAVgDYIgEgAFcA2iIBIABYANwoSAEBWXz3+FutVP/axJJUTkj4rn5fslFnw31b4NlqeeXZPyQAAiIBIADjAFoiASAA5QBbIgEgAFwA6CIBIADpAF0iASAAXgDsIgEgAO0AXyIBIABgAPAiASAA8QBhKEgBAXiAuo0sy9Es/AQVeLGsX3bKwdo5L7gJg8bUFVMYvlCaAAEjEwED8ROJfj//QzgAYwBkAH4jEwECK5TB0Shy79gAZQBmAH4oSAEBCTusJZLDistdSnk3sKJaV3Nm68vY//M0RTCS/JkL+vYBazMTdLk/0rGuPhFGIFQBGqMvu4GN8vtoij4X+a7O3fD3qZj20ydje0zcMjFHckMuvK+MI67IO6GiUsJwF68cm4u0QAAnAA4BAWM8yetwZYEYAHwAfQB+IhMBAMhX9+W4DW7IAGcAaCITAQBXnjIW6+C+iABpAGooSAEBeyCsyE2p70b7/VQ0ntN4AJEJsunk6+Nx7LyRSDW1z3YAJihIAQGfsYVYj5Wmsy5rly0uRvIzUM2N3Cc5w8DUGSad11BUGgAaIhMBADz13V4WIrDIAGsAbCIRAOCuZLY6FbNoAG0AbihIAQGBZTPuSKU+KHmVO6xrwLU6OwuqLneTuis9DRKAxcUA+gAbKEgBAb7AYTlRqYP2UWoDGWBjvAD1SdZ717/VWgdlSqpzhNOTABYiEQDgqQC2LAWKiABvAHAiDwDBDs7UeinIAHEAcihIAQFIYDAgJImOWHtSS8hNSUAXOTmNEpq4V1jp/N0lT5Wb5AAVKEgBAUTu+ORUtGItyumSSdty9phCUIHhiuiq6xVK85dHwZV5ABQiDwDAIYFQ8uXIAHMAdCIQaAwCF53ZsSIAdQB2KEgBAes475DFkL7bPOMRQNLUF21D22t6qzXfaFr8TM8qODIJAAsoSAEBoki4HyIzPMKPa2dE5CmK782bby3F18meHaGyjDfzqgwAByIPAMAhcPIiPagAdwB4IZ286qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqBgELXYw8Ej5ghu+SvxvXTzy3LcCezJlVmTe+2mDSq9LkkWaIoPNggAAN1kvd9cHAHkoSAEBAUOz0t1nGyVZVDFV4AP4RwIuUQs6V6+rvKBdQGnDJ+8ADSJ3z/VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAi6wTcWgAAAAAAAAG6yXu+uEYBC12MPBJXQAHoAeyhIAQFkpDlw8gB6HabW/IF3PMCV0cwnDoE1nkcfOwNGmr63tQAMIUkAAAAny7nRBilUQ5qDqR8ng1+50uPnmJEDVmUMPEk8lGI0ZGhAAKYoSAEB0SwMTneYsjW00MK0A9i5Q3jbaxR8vQ2wLmeXsxDymd4AIyITAQD62MrTK8G1yAB/AIAoSAEBpafSQFfYZDslJ3CdmGzaOEatyz7dwy0o7CH2nhfbqu8AAShIAQFwmF79pkTSAf83WZJqc6g5kbaOfY9atu0pI4YodBxfcwAjIhMBAOFWREkXBGiIAIEAgiITAQCrLfG7yF31iACDAIQoSAEBfO7p2ssB/eXmSYPltxRBdpts2if5sMf2WviNrBNT+ZoAJCITAQCUgJWrlFYCCACFAIYiEQD2rVwQNAfziACYAJkoSAEBuNiIeDmTC8CohEL8WXsO4tdSDJBeYtl4sMMBQxC853EAEiITAQCUcMvynSFTaACHAIgoSAEBQAZWxryCW6vo6SQtze49o6msyt7YXgl6xL6djKAlK5YAFCITAQCUcMhQqa5KKACJAIoiEwEAlHDHqwIaaKgAiwCMKEgBAeLMlEjzp+SoP4n5ibseDWeDitDjLPkR9smWpZotmH+XABMiEwEAlG+kbwfF5kgAjQCOKEgBAaY9VjHCdxRq7JPuewHa7qp2qyCHelqp6amnLKh+9TQxABEoSAEBEMrIvXf6JGwryV0CaXWbYSMSu8BDjtXrfdUxFuVekCAACyITUEAlG+kRQR/aagCPAJAhobzZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYIBKN9Ihbr6Uc5/NcovAJ8r3yYRzaNjSyHFOeiQRQDJ4Am7uCNC7I4foAADdZL3fXBQCRKEgBAVByXu5S6GQy+EZpigisFTpnvJrZwWATCvkHw77wXylIAAcie8/zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzQIYsF/H4AAAAAAAABusl7vrg4BKN9Ihbr6UdbQAJIAkyhIAQFiF/hyyZ+vy4cPLBGjYvWTOb6VCV9w0Auc/y9tzWnT3QAOI1Pqaqyy8Y7F9fQmfU6SVXmhZNA9h8s3xJLzWddS/Taz+9t+M8A8IIRGDQ0AlACVAJYoSAEBKoKJur4cNCgC1IY6A5tNNnkdvnprZ6wrbVsT4L0BErcADChIAQFyfx/4vC1obPzivIEZwPMiZAus3yv95L7c5suIJOeEnAAGIXmgYvr6E2L8ehMAAIAAPqdJKrzQsmgew+Wb4kl5rOupfptZ/e2/GeAeEEIjBobAEMkJgqHdiaMPWeYrGCigAJcoSAEBTUBb2EkFFdUFoUF/vMNDkq98n95MgTsbEAKeYxIgJFAACyIRAPajgKQCsu7IAJoAmyhIAQFWXXYdQ+XLOTHJRquwFOp3rL9BsaKeXkAxlMCE/WWO3gAWIhEA6lngFjsmTogAnACdKEgBAUa6LKRwvrHJNfi+WKRsS5IqF/Gmwc73IhcXsj1qkHL1ABIiEQDqWdc2IWtSSACeAJ8oSAEBzzzYBD5+B/aYyD1Rdom3SuCkRrB4wXp2/DXemm47nacACyhIAQHivDN+zn869RcfMmX0TGEvwvy6h/S0Vj3H/cMoXdakTQAIIg8AwQ/+Be1cCACgAKEhm71i+Pe+ow+KtenxbD+4ZCsRj1btG9xJYA2+UiDIsa+eBAxHT4BdnG3BAY7IdB5cLbxlCmLLuPCMICapTYbDlO5GXa84bgAADdZL3fXBwACiKEgBARAHvdNtsKqXO9o37ZNREskXv+VhKnRwNRZlBQL7o8eqAAcjb8/zRRfHvfUYfFWvT4th/cMhWIx6t2je4ksAbfKRBkWNfPIYgfSAAAAAAAAAbrJe764RAxHT4BfwAKMApAClKEgBAXJp+5/rRdcZ69vDsIFrmHurBvQzeNyE3ITVVyeQVIIUAAIASBH9CWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChIAQGYbEmXG5YGLh+6RBDicknI1zsKk4D3/9RGQBZ+aLIV6AADKEgBATqEWgqr+KuoMj0Ep7y5srYNLqj8Ko8oK4RtjNlxx51mABAivwABZBJyxQAFOWJgAAN1kvWVKIgAAN1KSsjsIArhriTcxNw2mDW5k4W+kLmsEpZnQ/VY9BFZLeR/pwOldExXG6Re0ssj0AbFbMFYEZPSvwrn48IW6b66wFZ/v18NwgqwvgCpAKooSAEBsg42o7NqTN7mARBsZC6QcYsKWNryAHU9uzGJ+Va0lLYAASITw8AABusl6ypRIACrAKwyAQQMPGtMVL/GNGQbzQP6DzYsOmEUuDNFDdVXMRRrC7bdb0zkS579E6xgc85btrPnqMZ4cNfv8FuWSEMOrUrXCxkAEQAOIADFAMYoSAEBJY1gLqoh1iFjTc+GaSrq4wj/PPiI8+2vxqWyGEjXMvkAGCIRSAAA3WS9ZUokAK0ArihIAQFLAevPVCVzVGGqi4O66J5w+iHpXS7oXlewXa0mwdbVMAAWIhFIAADdZL1lSiQArwCwKEgBASfCBonEr7FAIn7sQ1UA7TEblKunHkxixYyeZj6FEZdmABQiESAAA3WS9ZUokACxALIoSAEBekek1ozh+guMdLUubbRmvyoSH2LkF7lZZ5lpZUTU6PoAEyIRIAADdZL1lSiQALMAtChIAQHkIuZtgKDG1WA5rRFS1NgwReHTZi1SNNMrSykiHZSQWgASIhNwgAAN1kvWVKJAALUAtihIAQGDGIJtvnMnTu5sMLkLSx8DSThVmkDQvPj7fykVEQf05AAOIhEAAAN1kvWVKJAAtwC4KEgBAezvv42McVxMlOH8j/2DvdCsojULurd9P1+o9FnsP9pjAA0iEsYAABusl6ypRAC5ALooSAEBDycKMAOkHc0WV8F/45XytNoU8ruL1HV86RwmRMftI6wACSIRAAADdZL1lSiQALsAvChIAQFYW+t4JCJBUivqDwGbmUPZdvYLNmFAtT4gHIzhpzfOfAAIIhEAAAN1kvWVKJAAvQC+KEgBAXieobvi/iOBzFQ0kaV5bb5KHY9IM8DDSyWDnATkIvi+AAciEQAAA3WS9ZUokAC/AMAoSAEBbY7wWPNhFRyh9yyuFOYtPBFpyHkPsk+4bGmAPVvkTmwABiIRYAAAN1kvWVKJAMEAwihIAQE1xseF+5VkDCW8P6vrHJuqaWZX2MU91gsAUTWxBnj9KAADAhHQAABusl6ypRIAwwDEAKkAAAN1kvOs4IAAAbrJedZwQBXGPInc6SrolKUaFUspORxJkLZEr2KTe59Ey37+UlORNp8ezSqyGRU8sKtxphZLvYDFnuhGeC4jNrPVq7dxDpdkxIx4AKkAAAN1kvWVKIAAAbrJesqUQBXGPJrVBg3hGuVLWZ8lFmUr/JFe/OgxVdBDbEFJKqLhTi19629RokdyKZQUttty/tVGcvpJRWCNCGyeF22DeX5wUrXoIgEgAMcAyChIAQGu8KqOGecHnC6xDLWXQcm/uh6mTarrEx0KLEjgO7lCnAAPIgEgAMkAyiIBIADhAOIiASAAywDMKEgBAXk9It6XVy2z31iyfsspPibIWfc1AgoAIBmXHR7z/cZvAA4iASAAzQDOKEgBAdUZoCCO2JJZf6mTcm03HI8LLFvYuAe2fE4AlNgL+0NGAAsiASAAzwDQKEgBAUzQzjz1ToVzH4CtlwM5TDJqFCBxherrDqUfR7kpZpDBAAoiASAA0QDSKEgBAYoQlE7G75o/5USR0RhvyC3jGmfPUG8EHJhMus/EWRZ1AAkiASAA0wDUKEgBAR3KAqycpFRKUYnugfdS7azvlvky4fhFVK7conEXyhyNAAgiASAA1QDWKEgBAQQn3ll4dzimR7sP3f6zbMQLp0qB0esPyrXUM4YBbAhdAAYiASAA1wDYKEgBAZfEoI/C66ckE9EKBrZxA+JkJED9MKX8Dz2iVsPFw67zAAQiASAA2QDaKEgBAfX8LosT2PFpwLv6bJVuGZdgJ56nXKOc0yESCVNnvHw/AAQiASAA2wDcKEgBAXr/n0ZSk673HB2/hZg/yrPGAA7V7add+YXUWw8fhesTAAICAUgA3QDeKEgBAZW3RqjT3l57qNFCi4WOkjGa8Fk3wYg6uNaTqLRsB+RwAAECAUgA3wDgALC8pDekRIKROMnn1zZps0fFD5xZK5HZclrTqTxEM/UVBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABi6PYHAAAAAAAAAEAAAAAFL13oXAAAAChBBG2JAHPeCMX3d7oAAAAAArjHkgAAA/O5oGIsAAB4gl7chi7F93e0AAAAABVmUS4AAAQuA5O3MgAAitGB8ZmfAK+8JNeodQB3S3ySJ6cBZcuXH+efQQdYFkivCIgtbFm+UYuD5BgAAAAAAAADNAAAACE2aoQoAAACCxJE282Lg3K8AAAAAAAAAbAAAAAnYxP1hAAAASrP1KOiKEgBAaAHMhgqir1hpSA49q8g+vwjThBQFBRI4/rIQD1w0GttAA0iASAA4wDkKEgBAf634adaXt7xxlvzCFezQIyAu/CbCmZ/740pRPZwl+pmAAsiASAA5QDmKEgBAXsuQVOKYqXV60R34Ec8ltU+Pf7LOrBKUf2CZFzE+G+VAAoiASAA5wDoIgEgAOkA6ihIAQFUphHuht53X4veeI4yL7SvbVehn1/3sloAjn65wp2C/gAJKEgBAY8K7AMxG0eELIwRfk/pJCAZ1KaXj9/v3eOmSuwuBn2jAAkiASAA6wDsIgEgAO0A7ihIAQFcg966pLrkrhJUoWZiwiiTL3P9he3aNEYjF3v9+o+/qQAIKEgBAapROzZGAJyr/fqAA8hrTycuSncvWRifZawhmGmFqDdRAAQiASAA7wDwIgEgAPEA8ihIAQFbeohx3HhM4ZWzeHNKjWp/y0GVaqjS7ocgrBTMjnKJGQAEKEgBAa3tlK6y0+tzmtCefNKPTUP/dxcHC003ELoKHvMYcHL9AAICASAA8wD0ALG9OWA4eehMEoTmgDaa4SJcv86bUGIwB9gX4minF4ESFRi8fYmAAAAAAAAAJAAAAAGtuObMQAAAGYQiF+dYvH5eAAAAAAAAAA1AAAABEJ9wbwAAAAmSwQh0IACxvQwsar1Zcck+Za4EnsNVhED4ebxhuRumi/o0se6fclkYvu73QAAAAAAAAB7AAAAA7tloooAAABU4x9lMGL7t6QAAAAAAAAAXQAAAAQNrrfsAAAAPxrkcjeABA4AgAPkAAQIRAQxeXB6oSoL05odUmWeAThjD1OZshufvFGK8ViRPedmHAAeCAQACB8ylQAQA+gD7AkegGfM+8Ws2eOef2kVcbyxEr3MJw1l+bFGcPAQ49ufZf2bgBhAA/wEMAQPQQAD8AQFQAP4B21ANcNBYCuMeSAAA3WS8cSYAAADdZLxxJgzsHGJrRZNbTTQ1eH3cPabQCIQi9mM60egKVWuV+4gYkJN64Ng0PrsLKth4FFkECnfLTUH02Kpoft6gUOt9s34IgAAp0bQAAAAAAAAAAArjHjMX3d6yAP0AE0O5rKACHc1lACACAWEA/wEMAQZGBgABEAIDQEABAQECAgN2BAEDAQQCl7+VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqtAAAAbrJe764MEBHQEfA5e+szMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzApmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZz4AABusl7vrgBAAQUBBgEHA5e+hRfHvfUYfFWvT4th/cMhWIx6t2je4ksAbfKRBkWNfPApoovj3vqMPirXp8Ww/uGQrEY9W7RvcSWANvlIgyLGvnz4AABusl7vrgBAARIBEwEUAQNQQAEIAQNAQAEMAIJy0qHDnO/SzcI5bilMhsIcKm3pITcpPxDBdK3Z64h8IYn+syCiPXhx5T9fyITF9Y0fPlif+C0QKBMMK0lvSCwKeAOvczMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMwAAG6yXu+uB2XIUM5I7Gpp9Sj2W7HFsi4xHSE2wtD9AIoJeX4ZyTd8AABusl6ypQmL7u90AAUCAEeAQkBCgCCctKhw5zv0s3COW4pTIbCHCpt6SE3KT8QwXSt2euIfCGJnxz97kRUoZLKtpkXeo3Xbpy+UWbeKZ3NzRxyfPllajoCBSAwJAELASIAoEMbkATEtAAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA69zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzAAAbrJe764LY5VCdfnYYhGVXLYjVU+v6uHJRb6NcDw3NRpSNnCspvQAAG6yXu+uBYvu73QABQIAQ0BDgEPAQGgARAAgnKfHP3uRFShksq2mRd6jddunL5RZt4pnc3NHHJ8+WVqOv6zIKI9eHHlP1/IhMX1jR8+WJ/4LRAoEwwrSW9ILAp4Ag8ECRlU/EAYEQERASIAq2n+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE/zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzRlU/EAAAAADdZL3fXAMX3d7pAAJ5CYUwKYEAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQNQQAEVAQNQQAEYAIJyTWmRD8NJqUfLl75L02fHhXVpb3JuHACpgHMDT+PKd6Jiz4PoIzw+RMGZ2HI+ufbDfymjK25GIJb5nl8bY8RDHwOvc0UXx731GHxVr0+LYf3DIViMerdo3uJLAG3ykQZFjXzwAAG6yXu+uBcNvdLD13OQs5q3eKioVfYhTQHQ9ulfNpYojLdQvMmQIAABusl6ypQ2L7u90AAUCAEeARYBFwCCck1pkQ/DSalHy5e+S9Nnx4V1aW9ybhwAqYBzA0/jyneiYyyZipJkBBAiORSu6XurIo5WH7e7FJvKz1BZhYEdci0CBSAwNAEbARwDr3NFF8e99Rh8Va9Pi2H9wyFYjHq3aN7iSwBt8pEGRY188AABusl7vrg0QKXxJI3glhzVmF4v5qE5Kbo9UUSPfxymTt5j/SLxMuAAAbrJe764Fi+7vdAAFAgBHgEZARoAgnJjLJmKkmQEECI5FK7pe6sijlYft7sUm8rPUFmFgR1yLWLPg+gjPD5EwZnYcj659sN/KaMrbkYglvmeXxtjxEMfAgUwMDQBGwEcAKBCZlAExLQAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpYAAAAJYAAAAEAAYAAAAAAAUZroTxe4+LIgJql1/1Xxqxn95KdodE0heN+mO7Uz4QekCQJrwDr3VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAABusl7vrg930qkoZOVh6SnyUiXX5fy5tcbYXdqrG1aR0SEO4b0+fAAAbrJesqUNi+7vdAAFAgBHgEfASAAASAAgnInQXosH901OQ60ZXqLtWVUUFO/VYx/Z7op4IQCiAP8fRm2u+U+GlbHutvOYI/sv7vz/AhoIuwzJHex5xE22/o6AgUwMCQBIQEiAKBBKXAExLQAAAAAAAAAAAAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbwAAAAAAAAAAAAAAAAS1FLaRJ5QuM990nhh8UYSKv4bVGu4tw/IIW8MYUE5+OBDyXW64=")).endCell(); + log.info("type {}", Utils.bytesToHex(c.getHash())); + } @Test