{
  "contractName": "WitnetBuffer",
  "abi": [
    {
      "inputs": [],
      "name": "EmptyBuffer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "range",
          "type": "uint256"
        }
      ],
      "name": "IndexOutOfBounds",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "expected",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "given",
          "type": "uint256"
        }
      ],
      "name": "MissingArgs",
      "type": "error"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EmptyBuffer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"range\",\"type\":\"uint256\"}],\"name\":\"IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"given\",\"type\":\"uint256\"}],\"name\":\"MissingArgs\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"The Witnet Foundation.\",\"details\":\"`uint32` is used here for `cursor` because `uint16` would only enable seeking up to 8KB, which could in some theoretical use cases be exceeded. Conversely, `uint32` supports up to 512MB, which cannot credibly be exceeded.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"A convenient wrapper around the `bytes memory` type that exposes a buffer-like interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"The buffer has an inner cursor that tracks the final offset of every read, i.e. any subsequent read will start with the byte that goes right after the last one in the previous read.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/libs/WitnetBuffer.sol\":\"WitnetBuffer\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0x8e07aebe2954ab3e6f2d8eceedb12db7cf915c1f3e8630f4fa9999cecb1c78ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6c54cc901183d61546e8fd15bd5ea8ef238ebc915642946071d435dd7481ea\",\"dweb:/ipfs/Qmcaqta7YjUSBbBUGqoh44bsCS6UqqoyHjBuz4qnKBShXM\"]}},\"version\":1}",
  "bytecode": "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220b46e49710b1095d8ee91d84474fca0526ddd1f2374d3974202e6655ed5dc878564736f6c634300081e0033",
  "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220b46e49710b1095d8ee91d84474fca0526ddd1f2374d3974202e6655ed5dc878564736f6c634300081e0033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "644:26479:117:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;644:26479:117;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "644:26479:117:-:0;;;;;;;;",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\n/// @title A convenient wrapper around the `bytes memory` type that exposes a buffer-like interface\r\n/// @notice The buffer has an inner cursor that tracks the final offset of every read, i.e. any subsequent read will\r\n/// start with the byte that goes right after the last one in the previous read.\r\n/// @dev `uint32` is used here for `cursor` because `uint16` would only enable seeking up to 8KB, which could in some\r\n/// theoretical use cases be exceeded. Conversely, `uint32` supports up to 512MB, which cannot credibly be exceeded.\r\n/// @author The Witnet Foundation.\r\nlibrary WitnetBuffer {\r\n\r\n  error EmptyBuffer();\r\n  error IndexOutOfBounds(uint index, uint range);\r\n  error MissingArgs(uint expected, uint given);\r\n\r\n  /// Iterable bytes buffer.\r\n  struct Buffer {\r\n      bytes data;\r\n      uint cursor;\r\n  }\r\n\r\n  // Ensures we access an existing index in an array\r\n  modifier withinRange(uint index, uint _range) {\r\n    if (index > _range) {\r\n      revert IndexOutOfBounds(index, _range);\r\n    }\r\n    _;\r\n  }\r\n\r\n  /// @notice Concatenate undefinite number of bytes chunks.\r\n  /// @dev Faster than looping on `abi.encodePacked(output, _buffs[ix])`.\r\n  function concat(bytes[] memory _buffs)\r\n    internal pure\r\n    returns (bytes memory output)\r\n  {\r\n    unchecked {\r\n      uint destinationPointer;\r\n      uint destinationLength;\r\n      assembly {\r\n        // get safe scratch location\r\n        output := mload(0x40)\r\n        // set starting destination pointer\r\n        destinationPointer := add(output, 32)\r\n      }      \r\n      for (uint ix = 1; ix <= _buffs.length; ix ++) {  \r\n        uint source;\r\n        uint sourceLength;\r\n        uint sourcePointer;        \r\n        assembly {\r\n          // load source length pointer\r\n          source := mload(add(_buffs, mul(ix, 32)))\r\n          // load source length\r\n          sourceLength := mload(source)\r\n          // sets source memory pointer\r\n          sourcePointer := add(source, 32)\r\n        }\r\n        memcpy(\r\n          destinationPointer,\r\n          sourcePointer,\r\n          sourceLength\r\n        );\r\n        assembly {          \r\n          // increase total destination length\r\n          destinationLength := add(destinationLength, sourceLength)\r\n          // sets destination memory pointer\r\n          destinationPointer := add(destinationPointer, sourceLength)\r\n        }\r\n      }\r\n      assembly {\r\n        // protect output bytes\r\n        mstore(output, destinationLength)\r\n        // set final output length\r\n        mstore(0x40, add(mload(0x40), add(destinationLength, 32)))\r\n      }\r\n    }\r\n  }\r\n\r\n  function fork(WitnetBuffer.Buffer memory buffer)\r\n    internal pure\r\n    returns (WitnetBuffer.Buffer memory)\r\n  {\r\n    return Buffer(\r\n      buffer.data,\r\n      buffer.cursor\r\n    );\r\n  }\r\n\r\n  function mutate(\r\n      WitnetBuffer.Buffer memory buffer,\r\n      uint length,\r\n      bytes memory pokes\r\n    )\r\n    internal pure\r\n    withinRange(length, buffer.data.length - buffer.cursor + 1)\r\n  {\r\n    bytes[] memory parts = new bytes[](3);\r\n    parts[0] = peek(\r\n      buffer,\r\n      0,\r\n      buffer.cursor\r\n    );\r\n    parts[1] = pokes;\r\n    parts[2] = peek(\r\n      buffer,\r\n      buffer.cursor + length,\r\n      buffer.data.length - buffer.cursor - length\r\n    );\r\n    buffer.data = concat(parts);\r\n  }\r\n\r\n  /// @notice Read and consume the next byte from the buffer.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @return The next byte in the buffer counting from the cursor position.\r\n  function next(Buffer memory buffer)\r\n    internal pure\r\n    withinRange(buffer.cursor, buffer.data.length)\r\n    returns (bytes1)\r\n  {\r\n    // Return the byte at the position marked by the cursor and advance the cursor all at once\r\n    return buffer.data[buffer.cursor ++];\r\n  }\r\n\r\n  function peek(\r\n      WitnetBuffer.Buffer memory buffer,\r\n      uint offset,\r\n      uint length\r\n    )\r\n    internal pure\r\n    withinRange(offset + length, buffer.data.length)\r\n    returns (bytes memory)\r\n  {\r\n    bytes memory data = buffer.data;\r\n    bytes memory peeks = new bytes(length);\r\n    uint destinationPointer;\r\n    uint sourcePointer;\r\n    assembly {\r\n      destinationPointer := add(peeks, 32)\r\n      sourcePointer := add(add(data, 32), offset)\r\n    }\r\n    memcpy(\r\n      destinationPointer,\r\n      sourcePointer,\r\n      length\r\n    );\r\n    return peeks;\r\n  }\r\n\r\n  // @notice Extract bytes array from buffer starting from current cursor.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @param length How many bytes to peek from the Buffer.\r\n  // solium-disable-next-line security/no-assign-params\r\n  function peek(\r\n      WitnetBuffer.Buffer memory buffer,\r\n      uint length\r\n    )\r\n    internal pure\r\n    withinRange(length, buffer.data.length - buffer.cursor)\r\n    returns (bytes memory)\r\n  {\r\n    return peek(\r\n      buffer,\r\n      buffer.cursor,\r\n      length\r\n    );\r\n  }\r\n\r\n  /// @notice Read and consume a certain amount of bytes from the buffer.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @param length How many bytes to read and consume from the buffer.\r\n  /// @return output A `bytes memory` containing the first `length` bytes from the buffer, counting from the cursor position.\r\n  function read(Buffer memory buffer, uint length)\r\n    internal pure\r\n    withinRange(buffer.cursor + length, buffer.data.length)\r\n    returns (bytes memory output)\r\n  {\r\n    // Create a new `bytes memory destination` value\r\n    output = new bytes(length);\r\n    // Early return in case that bytes length is 0\r\n    if (length > 0) {\r\n      bytes memory input = buffer.data;\r\n      uint offset = buffer.cursor;\r\n      // Get raw pointers for source and destination\r\n      uint sourcePointer;\r\n      uint destinationPointer;\r\n      assembly {\r\n        sourcePointer := add(add(input, 32), offset)\r\n        destinationPointer := add(output, 32)\r\n      }\r\n      // Copy `length` bytes from source to destination\r\n      memcpy(\r\n        destinationPointer,\r\n        sourcePointer,\r\n        length\r\n      );\r\n      // Move the cursor forward by `length` bytes\r\n      seek(\r\n        buffer,\r\n        length,\r\n        true\r\n      );\r\n    }\r\n  }\r\n  \r\n  /// @notice Read and consume the next 2 bytes from the buffer as an IEEE 754-2008 floating point number enclosed in an\r\n  /// `int32`.\r\n  /// @dev Due to the lack of support for floating or fixed point arithmetic in the EVM, this method offsets all values\r\n  /// by 5 decimal orders so as to get a fixed precision of 5 decimal positions, which should be OK for most `float16`\r\n  /// use cases. In other words, the integer output of this method is 10,000 times the actual value. The input bytes are\r\n  /// expected to follow the 16-bit base-2 format (a.k.a. `binary16`) in the IEEE 754-2008 standard.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @return result The `int32` value of the next 4 bytes in the buffer counting from the cursor position.\r\n  function readFloat16(Buffer memory buffer)\r\n    internal pure\r\n    returns (int32 result)\r\n  {\r\n    uint32 value = readUint16(buffer);\r\n    // Get bit at position 0\r\n    uint32 sign = value & 0x8000;\r\n    // Get bits 1 to 5, then normalize to the [-15, 16] range so as to counterweight the IEEE 754 exponent bias\r\n    int32 exponent = (int32(value & 0x7c00) >> 10) - 15;\r\n    // Get bits 6 to 15\r\n    int32 fraction = int32(value & 0x03ff);\r\n    // Add 2^10 to the fraction if exponent is not -15\r\n    if (exponent != -15) {\r\n      fraction |= 0x400;\r\n    } else if (exponent == 16) {\r\n      revert(\r\n        string(abi.encodePacked(\r\n          \"WitnetBuffer.readFloat16: \",\r\n          sign != 0 ? \"negative\" : hex\"\",\r\n          \" infinity\"\r\n        ))\r\n      );\r\n    }\r\n    // Compute `2 ^ exponent · (1 + fraction / 1024)`\r\n    if (exponent >= 0) {\r\n      result = int32(int(\r\n        int(1 << uint256(int256(exponent)))\r\n          * 10000\r\n          * fraction\r\n      ) >> 10);\r\n    } else {\r\n      result = int32(int(\r\n        int(fraction)\r\n          * 10000\r\n          / int(1 << uint(int(- exponent)))\r\n      ) >> 10);\r\n    }\r\n    // Make the result negative if the sign bit is not 0\r\n    if (sign != 0) {\r\n      result *= -1;\r\n    }\r\n  }\r\n\r\n  /// @notice Consume the next 4 bytes from the buffer as an IEEE 754-2008 floating point number enclosed into an `int`.\r\n  /// @dev Due to the lack of support for floating or fixed point arithmetic in the EVM, this method offsets all values\r\n  /// by 9 decimal orders so as to get a fixed precision of 9 decimal positions, which should be OK for most `float32`\r\n  /// use cases. In other words, the integer output of this method is 10^9 times the actual value. The input bytes are\r\n  /// expected to follow the 64-bit base-2 format (a.k.a. `binary32`) in the IEEE 754-2008 standard.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @return result The `int` value of the next 8 bytes in the buffer counting from the cursor position.\r\n  function readFloat32(Buffer memory buffer)\r\n    internal pure\r\n    returns (int result)\r\n  {\r\n    uint value = readUint32(buffer);\r\n    // Get bit at position 0\r\n    uint sign = value & 0x80000000;\r\n    // Get bits 1 to 8, then normalize to the [-127, 128] range so as to counterweight the IEEE 754 exponent bias\r\n    int exponent = (int(value & 0x7f800000) >> 23) - 127;\r\n    // Get bits 9 to 31\r\n    int fraction = int(value & 0x007fffff);\r\n    // Add 2^23 to the fraction if exponent is not -127\r\n    if (exponent != -127) {\r\n      fraction |= 0x800000;\r\n    } else if (exponent == 128) {\r\n      revert(\r\n        string(abi.encodePacked(\r\n          \"WitnetBuffer.readFloat32: \",\r\n          sign != 0 ? \"negative\" : hex\"\",\r\n          \" infinity\"\r\n        ))\r\n      );\r\n    }\r\n    // Compute `2 ^ exponent · (1 + fraction / 2^23)`\r\n    if (exponent >= 0) {\r\n      result = (\r\n        int(1 << uint(exponent))\r\n          * (10 ** 9)\r\n          * fraction\r\n      ) >> 23;\r\n    } else {\r\n      result = (\r\n        fraction \r\n          * (10 ** 9)\r\n          / int(1 << uint(-exponent)) \r\n      ) >> 23;\r\n    }\r\n    // Make the result negative if the sign bit is not 0\r\n    if (sign != 0) {\r\n      result *= -1;\r\n    }\r\n  }\r\n\r\n  /// @notice Consume the next 8 bytes from the buffer as an IEEE 754-2008 floating point number enclosed into an `int`.\r\n  /// @dev Due to the lack of support for floating or fixed point arithmetic in the EVM, this method offsets all values\r\n  /// by 15 decimal orders so as to get a fixed precision of 15 decimal positions, which should be OK for most `float64`\r\n  /// use cases. In other words, the integer output of this method is 10^15 times the actual value. The input bytes are\r\n  /// expected to follow the 64-bit base-2 format (a.k.a. `binary64`) in the IEEE 754-2008 standard.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @return result The `int` value of the next 8 bytes in the buffer counting from the cursor position.\r\n  function readFloat64(Buffer memory buffer)\r\n    internal pure\r\n    returns (int result)\r\n  {\r\n    uint value = readUint64(buffer);\r\n    // Get bit at position 0\r\n    uint sign = value & 0x8000000000000000;\r\n    // Get bits 1 to 12, then normalize to the [-1023, 1024] range so as to counterweight the IEEE 754 exponent bias\r\n    int exponent = (int(value & 0x7ff0000000000000) >> 52) - 1023;\r\n    // Get bits 6 to 15\r\n    int fraction = int(value & 0x000fffffffffffff);\r\n    // Add 2^52 to the fraction if exponent is not -1023\r\n    if (exponent != -1023) {\r\n      fraction |= 0x10000000000000;\r\n    } else if (exponent == 1024) {\r\n      revert(\r\n        string(abi.encodePacked(\r\n          \"WitnetBuffer.readFloat64: \",\r\n          sign != 0 ? \"negative\" : hex\"\",\r\n          \" infinity\"\r\n        ))\r\n      );\r\n    }\r\n    // Compute `2 ^ exponent · (1 + fraction / 1024)`\r\n    if (exponent >= 0) {\r\n      result = (\r\n        int(1 << uint(exponent))\r\n          * (10 ** 15)\r\n          * fraction\r\n      ) >> 52;\r\n    } else {\r\n      result = (\r\n        fraction \r\n          * (10 ** 15)\r\n          / int(1 << uint(-exponent)) \r\n      ) >> 52;\r\n    }\r\n    // Make the result negative if the sign bit is not 0\r\n    if (sign != 0) {\r\n      result *= -1;\r\n    }\r\n  }\r\n\r\n  // Read a text string of a given length from a buffer. Returns a `bytes memory` value for the sake of genericness,\r\n  /// but it can be easily casted into a string with `string(result)`.\r\n  // solium-disable-next-line security/no-assign-params\r\n  function readText(\r\n      WitnetBuffer.Buffer memory buffer,\r\n      uint64 length\r\n    )\r\n    internal pure\r\n    returns (bytes memory text)\r\n  {\r\n    text = new bytes(length);\r\n    unchecked {\r\n      for (uint64 index = 0; index < length; index ++) {\r\n        uint8 char = readUint8(buffer);\r\n        if (char & 0x80 != 0) {\r\n          if (char < 0xe0) {\r\n            char = (char & 0x1f) << 6\r\n              | (readUint8(buffer) & 0x3f);\r\n            length -= 1;\r\n          } else if (char < 0xf0) {\r\n            char  = (char & 0x0f) << 12\r\n              | (readUint8(buffer) & 0x3f) << 6\r\n              | (readUint8(buffer) & 0x3f);\r\n            length -= 2;\r\n          } else {\r\n            char = (char & 0x0f) << 18\r\n              | (readUint8(buffer) & 0x3f) << 12\r\n              | (readUint8(buffer) & 0x3f) << 6  \r\n              | (readUint8(buffer) & 0x3f);\r\n            length -= 3;\r\n          }\r\n        }\r\n        text[index] = bytes1(char);\r\n      }\r\n      // Adjust text to actual length:\r\n      assembly {\r\n        mstore(text, length)\r\n      }\r\n    }\r\n  }\r\n\r\n  /// @notice Read and consume the next byte from the buffer as an `uint8`.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @return value The `uint8` value of the next byte in the buffer counting from the cursor position.\r\n  function readUint8(Buffer memory buffer)\r\n    internal pure\r\n    withinRange(buffer.cursor, buffer.data.length)\r\n    returns (uint8 value)\r\n  {\r\n    bytes memory data = buffer.data;\r\n    uint offset = buffer.cursor;\r\n    assembly {\r\n      value := mload(add(add(data, 1), offset))\r\n    }\r\n    buffer.cursor ++;\r\n  }\r\n\r\n  /// @notice Read and consume the next 2 bytes from the buffer as an `uint16`.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @return value The `uint16` value of the next 2 bytes in the buffer counting from the cursor position.\r\n  function readUint16(Buffer memory buffer)\r\n    internal pure\r\n    withinRange(buffer.cursor + 2, buffer.data.length)\r\n    returns (uint16 value)\r\n  {\r\n    bytes memory data = buffer.data;\r\n    uint offset = buffer.cursor;\r\n    assembly {\r\n      value := mload(add(add(data, 2), offset))\r\n    }\r\n    buffer.cursor += 2;\r\n  }\r\n\r\n  /// @notice Read and consume the next 4 bytes from the buffer as an `uint32`.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @return value The `uint32` value of the next 4 bytes in the buffer counting from the cursor position.\r\n  function readUint32(Buffer memory buffer)\r\n    internal pure\r\n    withinRange(buffer.cursor + 4, buffer.data.length)\r\n    returns (uint32 value)\r\n  {\r\n    bytes memory data = buffer.data;\r\n    uint offset = buffer.cursor;\r\n    assembly {\r\n      value := mload(add(add(data, 4), offset))\r\n    }\r\n    buffer.cursor += 4;\r\n  }\r\n\r\n  /// @notice Read and consume the next 8 bytes from the buffer as an `uint64`.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @return value The `uint64` value of the next 8 bytes in the buffer counting from the cursor position.\r\n  function readUint64(Buffer memory buffer)\r\n    internal pure\r\n    withinRange(buffer.cursor + 8, buffer.data.length)\r\n    returns (uint64 value)\r\n  {\r\n    bytes memory data = buffer.data;\r\n    uint offset = buffer.cursor;\r\n    assembly {\r\n      value := mload(add(add(data, 8), offset))\r\n    }\r\n    buffer.cursor += 8;\r\n  }\r\n\r\n  /// @notice Read and consume the next 16 bytes from the buffer as an `uint128`.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @return value The `uint128` value of the next 16 bytes in the buffer counting from the cursor position.\r\n  function readUint128(Buffer memory buffer)\r\n    internal pure\r\n    withinRange(buffer.cursor + 16, buffer.data.length)\r\n    returns (uint128 value)\r\n  {\r\n    bytes memory data = buffer.data;\r\n    uint offset = buffer.cursor;\r\n    assembly {\r\n      value := mload(add(add(data, 16), offset))\r\n    }\r\n    buffer.cursor += 16;\r\n  }\r\n\r\n  /// @notice Read and consume the next 32 bytes from the buffer as an `uint256`.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @return value The `uint256` value of the next 32 bytes in the buffer counting from the cursor position.\r\n  function readUint256(Buffer memory buffer)\r\n    internal pure\r\n    withinRange(buffer.cursor + 32, buffer.data.length)\r\n    returns (uint256 value)\r\n  {\r\n    bytes memory data = buffer.data;\r\n    uint offset = buffer.cursor;\r\n    assembly {\r\n      value := mload(add(add(data, 32), offset))\r\n    }\r\n    buffer.cursor += 32;\r\n  }\r\n\r\n  /// @notice Count number of required parameters for given bytes arrays\r\n  /// @dev Wildcard format: \"\\#\\\", with # in [\"0\"..\"9\"].\r\n  /// @param input Bytes array containing strings.\r\n  /// @param count Highest wildcard index found, plus 1.\r\n  function argsCountOf(bytes memory input)\r\n    internal pure\r\n    returns (uint8 count)\r\n  {\r\n    if (input.length < 3) {\r\n      return 0;\r\n    }\r\n    unchecked {\r\n      uint ix = 0; \r\n      uint length = input.length - 2;\r\n      for (; ix < length; ) {\r\n        if (\r\n          input[ix] == bytes1(\"\\\\\")\r\n            && input[ix + 2] == bytes1(\"\\\\\")\r\n            && input[ix + 1] >= bytes1(\"0\")\r\n            && input[ix + 1] <= bytes1(\"9\")\r\n        ) {\r\n          uint8 ax = uint8(uint8(input[ix + 1]) - uint8(bytes1(\"0\")) + 1);\r\n          if (ax > count) {\r\n            count = ax;\r\n          }\r\n          ix += 3;\r\n        } else {\r\n          ix ++;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  /// @notice Replace indexed bytes-wildcards by correspondent substrings.\r\n  /// @dev Wildcard format: \"\\#\\\", with # in [\"0\"..\"9\"].\r\n  /// @param input Bytes array containing strings.\r\n  /// @param args Array of substring values for replacing indexed wildcards.\r\n  /// @return output Resulting bytes array after replacing all wildcards.\r\n  /// @return hits Total number of replaced wildcards.\r\n  function replace(bytes memory input, string[] memory args)\r\n    internal pure\r\n    returns (bytes memory output, uint hits)\r\n  {\r\n    uint ix = 0; uint lix = 0;\r\n    uint inputLength;\r\n    uint inputPointer;\r\n    uint outputLength;\r\n    uint outputPointer;    \r\n    uint source;\r\n    uint sourceLength;\r\n    uint sourcePointer;\r\n\r\n    if (input.length < 3) {\r\n      return (input, 0);\r\n    }\r\n    \r\n    assembly {\r\n      // set starting input pointer\r\n      inputPointer := add(input, 32)\r\n      // get safe output location\r\n      output := mload(0x40)\r\n      // set starting output pointer\r\n      outputPointer := add(output, 32)\r\n    }         \r\n\r\n    unchecked {\r\n      uint length = input.length - 2;\r\n      for (; ix < length; ) {\r\n        if (\r\n          input[ix] == bytes1(\"\\\\\")\r\n            && input[ix + 2] == bytes1(\"\\\\\")\r\n            && input[ix + 1] >= bytes1(\"0\")\r\n            && input[ix + 1] <= bytes1(\"9\")\r\n        ) {\r\n          inputLength = (ix - lix);\r\n          if (ix > lix) {\r\n            memcpy(\r\n              outputPointer,\r\n              inputPointer,\r\n              inputLength\r\n            );\r\n            inputPointer += inputLength + 3;\r\n            outputPointer += inputLength;\r\n          } else {\r\n            inputPointer += 3;\r\n          }\r\n          uint ax = uint(uint8(input[ix + 1]) - uint8(bytes1(\"0\")));\r\n          if (ax >= args.length) {\r\n            revert MissingArgs(ax + 1, args.length);\r\n          }\r\n          assembly {\r\n            source := mload(add(args, mul(32, add(ax, 1))))\r\n            sourceLength := mload(source)\r\n            sourcePointer := add(source, 32)      \r\n          }        \r\n          memcpy(\r\n            outputPointer,\r\n            sourcePointer,\r\n            sourceLength\r\n          );\r\n          outputLength += inputLength + sourceLength;\r\n          outputPointer += sourceLength;\r\n          ix += 3;\r\n          lix = ix;\r\n          hits ++;\r\n        } else {\r\n          ix ++;\r\n        }\r\n      }\r\n      ix = input.length;    \r\n    }\r\n    if (outputLength > 0) {\r\n      if (ix > lix ) {\r\n        memcpy(\r\n          outputPointer,\r\n          inputPointer,\r\n          ix - lix\r\n        );\r\n        outputLength += (ix - lix);\r\n      }\r\n      assembly {\r\n        // set final output length\r\n        mstore(output, outputLength)\r\n        // protect output bytes\r\n        mstore(0x40, add(mload(0x40), add(outputLength, 32)))\r\n      }\r\n    }\r\n    else {\r\n      return (input, 0);\r\n    }\r\n  }\r\n\r\n  /// @notice Replace indexed bytes-wildcard by given substring.\r\n  /// @dev Wildcard format: \"\\#\\\", with # in [\"0\"..\"9\"].\r\n  /// @param input Bytes array containing strings.\r\n  /// @param argIndex Index of the wildcard to be replaced.\r\n  /// @param argValue Replacing substring to be used.\r\n  /// @return output Resulting bytes array after replacing all wildcards.\r\n  /// @return hits Total number of replaced wildcards.\r\n  function replace(bytes memory input, uint8 argIndex, string memory argValue)\r\n    internal pure\r\n    returns (bytes memory output, uint hits)\r\n  {\r\n    uint ix = 0; uint lix = 0;\r\n    uint inputLength;\r\n    uint inputPointer;\r\n    uint outputLength;\r\n    uint outputPointer; \r\n    uint argValueLength;\r\n    uint argValuePointer;\r\n\r\n    if (input.length < 3) {\r\n      return (input, 0);\r\n    }\r\n    \r\n    assembly {\r\n      // set starting input pointer\r\n      inputPointer := add(input, 32)\r\n      // get safe output location\r\n      output := mload(0x40)\r\n      // set starting output pointer\r\n      outputPointer := add(output, 32)\r\n      // set pointer to arg value substring\r\n      argValuePointer := add(argValue, 32)\r\n      // set arg value substring length\r\n      argValueLength := mload(argValue)\r\n    }         \r\n\r\n    unchecked {\r\n      uint length = input.length - 2;\r\n      for (; ix < length; ) {\r\n        if (\r\n          input[ix] == bytes1(\"\\\\\")\r\n            && input[ix + 2] == bytes1(\"\\\\\")\r\n            && input[ix + 1] >= bytes1(\"0\")\r\n            && input[ix + 1] <= bytes1(\"9\")\r\n            && uint8(input[ix + 1]) - uint8(bytes1(\"0\")) == argIndex\r\n        ) {\r\n          inputLength = (ix - lix);\r\n          if (ix > lix) {\r\n            memcpy(\r\n              outputPointer,\r\n              inputPointer,\r\n              inputLength\r\n            );\r\n            inputPointer += inputLength + 3;\r\n            outputPointer += inputLength;\r\n          } else {\r\n            inputPointer += 3;\r\n          }\r\n          memcpy(\r\n            outputPointer,\r\n            argValuePointer,\r\n            argValueLength\r\n          );\r\n          outputLength += inputLength + argValueLength;\r\n          outputPointer += argValueLength;\r\n          ix += 3;\r\n          lix = ix;\r\n          hits ++;\r\n        } else {\r\n          ix ++;\r\n        }\r\n      }\r\n      ix = input.length;    \r\n    }\r\n    if (outputLength > 0) {\r\n      if (ix > lix ) {\r\n        memcpy(\r\n          outputPointer,\r\n          inputPointer,\r\n          ix - lix\r\n        );\r\n        outputLength += (ix - lix);\r\n      }\r\n      assembly {\r\n        // set final output length\r\n        mstore(output, outputLength)\r\n        // protect output bytes\r\n        mstore(0x40, add(mload(0x40), add(outputLength, 32)))\r\n      }\r\n    }\r\n    else {\r\n      return (input, 0);\r\n    }\r\n  }\r\n\r\n  /// @notice Replace indexed string wildcards by correspondent substrings.\r\n  /// @dev Wildcard format: \"\\#\\\", with # in [\"0\"..\"9\"].\r\n  /// @param input String potentially containing wildcards.\r\n  /// @param args Array of substring values for replacing indexed wildcards.\r\n  /// @return output Resulting string after replacing all wildcards.\r\n  function replace(string memory input, string[] memory args)\r\n    internal pure\r\n    returns (string memory)\r\n  {\r\n    (bytes memory _outputBytes, ) = replace(bytes(input), args);\r\n    return string(_outputBytes);\r\n  }\r\n\r\n  /// @notice Replace last indexed wildcard by given substring.\r\n  /// @dev Wildcard format: \"\\#\\\", with # in [\"0\"..\"9\"].\r\n  /// @param input String potentially containing wildcards.\r\n  /// @param argIndex Index of the wildcard to be replaced.\r\n  /// @param argValue Replacing string to be used.\r\n  /// @return output Resulting string after replacing all wildcards.\r\n  function replace(string memory input, uint8 argIndex, string memory argValue)\r\n    internal pure\r\n    returns (string memory)\r\n  {\r\n    (bytes memory _outputBytes, ) = replace(bytes(input), argIndex, argValue);\r\n    return string(_outputBytes);\r\n  }\r\n\r\n  /// @notice Move the inner cursor of the buffer to a relative or absolute position.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @param offset How many bytes to move the cursor forward.\r\n  /// @param relative Whether to count `offset` from the last position of the cursor (`true`) or the beginning of the\r\n  /// buffer (`true`).\r\n  /// @return The final position of the cursor (will equal `offset` if `relative` is `false`).\r\n  // solium-disable-next-line security/no-assign-params\r\n  function seek(\r\n      Buffer memory buffer,\r\n      uint offset,\r\n      bool relative\r\n    )\r\n    internal pure\r\n    withinRange(offset, buffer.data.length)\r\n    returns (uint)\r\n  {\r\n    // Deal with relative offsets\r\n    if (relative) {\r\n      offset += buffer.cursor;\r\n    }\r\n    buffer.cursor = offset;\r\n    return offset;\r\n  }\r\n\r\n  /// @notice Move the inner cursor a number of bytes forward.\r\n  /// @dev This is a simple wrapper around the relative offset case of `seek()`.\r\n  /// @param buffer An instance of `Buffer`.\r\n  /// @param relativeOffset How many bytes to move the cursor forward.\r\n  /// @return The final position of the cursor.\r\n  function seek(\r\n      Buffer memory buffer,\r\n      uint relativeOffset\r\n    )\r\n    internal pure\r\n    returns (uint)\r\n  {\r\n    return seek(\r\n      buffer,\r\n      relativeOffset,\r\n      true\r\n    );\r\n  }\r\n\r\n  /// @notice Copy bytes from one memory address into another.\r\n  /// @dev This function was borrowed from Nick Johnson's `solidity-stringutils` lib, and reproduced here under the terms\r\n  /// of [Apache License 2.0](https://github.com/Arachnid/solidity-stringutils/blob/master/LICENSE).\r\n  /// @param dest Address of the destination memory.\r\n  /// @param src Address to the source memory.\r\n  /// @param len How many bytes to copy.\r\n  // solium-disable-next-line security/no-assign-params\r\n  function memcpy(\r\n      uint dest,\r\n      uint src,\r\n      uint len\r\n    )\r\n    private pure\r\n  {\r\n    unchecked {\r\n      // Copy word-length chunks while possible\r\n      for (; len >= 32; len -= 32) {\r\n        assembly {\r\n          mstore(dest, mload(src))\r\n        }\r\n        dest += 32;\r\n        src += 32;\r\n      }\r\n      if (len > 0) {\r\n        // Copy remaining bytes\r\n        uint _mask = 256 ** (32 - len) - 1;\r\n        assembly {\r\n          let srcpart := and(mload(src), not(_mask))\r\n          let destpart := and(mload(dest), _mask)\r\n          mstore(dest, or(destpart, srcpart))\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n}",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\libs\\WitnetBuffer.sol",
  "ast": {
    "absolutePath": "project:/contracts/libs/WitnetBuffer.sol",
    "exportedSymbols": {
      "WitnetBuffer": [
        42631
      ]
    },
    "id": 42632,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 40743,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:117"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "WitnetBuffer",
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 40744,
          "nodeType": "StructuredDocumentation",
          "src": "70:574:117",
          "text": "@title A convenient wrapper around the `bytes memory` type that exposes a buffer-like interface\n @notice The buffer has an inner cursor that tracks the final offset of every read, i.e. any subsequent read will\n start with the byte that goes right after the last one in the previous read.\n @dev `uint32` is used here for `cursor` because `uint16` would only enable seeking up to 8KB, which could in some\n theoretical use cases be exceeded. Conversely, `uint32` supports up to 512MB, which cannot credibly be exceeded.\n @author The Witnet Foundation."
        },
        "fullyImplemented": true,
        "id": 42631,
        "linearizedBaseContracts": [
          42631
        ],
        "name": "WitnetBuffer",
        "nameLocation": "652:12:117",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "errorSelector": "240db51c",
            "id": 40746,
            "name": "EmptyBuffer",
            "nameLocation": "678:11:117",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 40745,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "689:2:117"
            },
            "src": "672:20:117"
          },
          {
            "errorSelector": "63a056dd",
            "id": 40752,
            "name": "IndexOutOfBounds",
            "nameLocation": "702:16:117",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 40751,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40748,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "724:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40752,
                  "src": "719:10:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40747,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "719:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40750,
                  "mutability": "mutable",
                  "name": "range",
                  "nameLocation": "736:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40752,
                  "src": "731:10:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40749,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "731:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "718:24:117"
            },
            "src": "696:47:117"
          },
          {
            "errorSelector": "19e1b81c",
            "id": 40758,
            "name": "MissingArgs",
            "nameLocation": "753:11:117",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 40757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40754,
                  "mutability": "mutable",
                  "name": "expected",
                  "nameLocation": "770:8:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40758,
                  "src": "765:13:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40753,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "765:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40756,
                  "mutability": "mutable",
                  "name": "given",
                  "nameLocation": "785:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40758,
                  "src": "780:10:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40755,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "780:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "764:27:117"
            },
            "src": "747:45:117"
          },
          {
            "canonicalName": "WitnetBuffer.Buffer",
            "documentation": {
              "id": 40759,
              "nodeType": "StructuredDocumentation",
              "src": "798:26:117",
              "text": "Iterable bytes buffer."
            },
            "id": 40764,
            "members": [
              {
                "constant": false,
                "id": 40761,
                "mutability": "mutable",
                "name": "data",
                "nameLocation": "857:4:117",
                "nodeType": "VariableDeclaration",
                "scope": 40764,
                "src": "851:10:117",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 40760,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "851:5:117",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 40763,
                "mutability": "mutable",
                "name": "cursor",
                "nameLocation": "875:6:117",
                "nodeType": "VariableDeclaration",
                "scope": 40764,
                "src": "870:11:117",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 40762,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "870:4:117",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Buffer",
            "nameLocation": "835:6:117",
            "nodeType": "StructDefinition",
            "scope": 42631,
            "src": "828:59:117",
            "visibility": "public"
          },
          {
            "body": {
              "id": 40781,
              "nodeType": "Block",
              "src": "993:95:117",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 40770,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40766,
                      "src": "1004:5:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 40771,
                      "name": "_range",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40768,
                      "src": "1012:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1004:14:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 40779,
                  "nodeType": "IfStatement",
                  "src": "1000:75:117",
                  "trueBody": {
                    "id": 40778,
                    "nodeType": "Block",
                    "src": "1020:55:117",
                    "statements": [
                      {
                        "errorCall": {
                          "arguments": [
                            {
                              "id": 40774,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40766,
                              "src": "1053:5:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 40775,
                              "name": "_range",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40768,
                              "src": "1060:6:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 40773,
                            "name": "IndexOutOfBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40752,
                            "src": "1036:16:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$",
                              "typeString": "function (uint256,uint256) pure returns (error)"
                            }
                          },
                          "id": 40776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1036:31:117",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_error",
                            "typeString": "error"
                          }
                        },
                        "id": 40777,
                        "nodeType": "RevertStatement",
                        "src": "1029:38:117"
                      }
                    ]
                  }
                },
                {
                  "id": 40780,
                  "nodeType": "PlaceholderStatement",
                  "src": "1081:1:117"
                }
              ]
            },
            "id": 40782,
            "name": "withinRange",
            "nameLocation": "956:11:117",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 40769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40766,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "973:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40782,
                  "src": "968:10:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40765,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "968:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40768,
                  "mutability": "mutable",
                  "name": "_range",
                  "nameLocation": "985:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40782,
                  "src": "980:11:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40767,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "980:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "967:25:117"
            },
            "src": "947:141:117",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 40830,
              "nodeType": "Block",
              "src": "1327:1316:117",
              "statements": [
                {
                  "id": 40829,
                  "nodeType": "UncheckedBlock",
                  "src": "1334:1304:117",
                  "statements": [
                    {
                      "assignments": [
                        40792
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 40792,
                          "mutability": "mutable",
                          "name": "destinationPointer",
                          "nameLocation": "1358:18:117",
                          "nodeType": "VariableDeclaration",
                          "scope": 40829,
                          "src": "1353:23:117",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 40791,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1353:4:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 40793,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1353:23:117"
                    },
                    {
                      "assignments": [
                        40795
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 40795,
                          "mutability": "mutable",
                          "name": "destinationLength",
                          "nameLocation": "1390:17:117",
                          "nodeType": "VariableDeclaration",
                          "scope": 40829,
                          "src": "1385:22:117",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 40794,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1385:4:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 40796,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1385:22:117"
                    },
                    {
                      "AST": {
                        "nativeSrc": "1425:171:117",
                        "nodeType": "YulBlock",
                        "src": "1425:171:117",
                        "statements": [
                          {
                            "nativeSrc": "1474:21:117",
                            "nodeType": "YulAssignment",
                            "src": "1474:21:117",
                            "value": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "1490:4:117",
                                  "nodeType": "YulLiteral",
                                  "src": "1490:4:117",
                                  "type": "",
                                  "value": "0x40"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "1484:5:117",
                                "nodeType": "YulIdentifier",
                                "src": "1484:5:117"
                              },
                              "nativeSrc": "1484:11:117",
                              "nodeType": "YulFunctionCall",
                              "src": "1484:11:117"
                            },
                            "variableNames": [
                              {
                                "name": "output",
                                "nativeSrc": "1474:6:117",
                                "nodeType": "YulIdentifier",
                                "src": "1474:6:117"
                              }
                            ]
                          },
                          {
                            "nativeSrc": "1550:37:117",
                            "nodeType": "YulAssignment",
                            "src": "1550:37:117",
                            "value": {
                              "arguments": [
                                {
                                  "name": "output",
                                  "nativeSrc": "1576:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "1576:6:117"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "1584:2:117",
                                  "nodeType": "YulLiteral",
                                  "src": "1584:2:117",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "1572:3:117",
                                "nodeType": "YulIdentifier",
                                "src": "1572:3:117"
                              },
                              "nativeSrc": "1572:15:117",
                              "nodeType": "YulFunctionCall",
                              "src": "1572:15:117"
                            },
                            "variableNames": [
                              {
                                "name": "destinationPointer",
                                "nativeSrc": "1550:18:117",
                                "nodeType": "YulIdentifier",
                                "src": "1550:18:117"
                              }
                            ]
                          }
                        ]
                      },
                      "evmVersion": "prague",
                      "externalReferences": [
                        {
                          "declaration": 40792,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1550:18:117",
                          "valueSize": 1
                        },
                        {
                          "declaration": 40789,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1474:6:117",
                          "valueSize": 1
                        },
                        {
                          "declaration": 40789,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1576:6:117",
                          "valueSize": 1
                        }
                      ],
                      "id": 40797,
                      "nodeType": "InlineAssembly",
                      "src": "1416:180:117"
                    },
                    {
                      "body": {
                        "id": 40826,
                        "nodeType": "Block",
                        "src": "1656:768:117",
                        "statements": [
                          {
                            "assignments": [
                              40810
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 40810,
                                "mutability": "mutable",
                                "name": "source",
                                "nameLocation": "1674:6:117",
                                "nodeType": "VariableDeclaration",
                                "scope": 40826,
                                "src": "1669:11:117",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 40809,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1669:4:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 40811,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1669:11:117"
                          },
                          {
                            "assignments": [
                              40813
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 40813,
                                "mutability": "mutable",
                                "name": "sourceLength",
                                "nameLocation": "1696:12:117",
                                "nodeType": "VariableDeclaration",
                                "scope": 40826,
                                "src": "1691:17:117",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 40812,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1691:4:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 40814,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1691:17:117"
                          },
                          {
                            "assignments": [
                              40816
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 40816,
                                "mutability": "mutable",
                                "name": "sourcePointer",
                                "nameLocation": "1724:13:117",
                                "nodeType": "VariableDeclaration",
                                "scope": 40826,
                                "src": "1719:18:117",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 40815,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1719:4:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 40817,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1719:18:117"
                          },
                          {
                            "AST": {
                              "nativeSrc": "1765:265:117",
                              "nodeType": "YulBlock",
                              "src": "1765:265:117",
                              "statements": [
                                {
                                  "nativeSrc": "1819:41:117",
                                  "nodeType": "YulAssignment",
                                  "src": "1819:41:117",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_buffs",
                                            "nativeSrc": "1839:6:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "1839:6:117"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "ix",
                                                "nativeSrc": "1851:2:117",
                                                "nodeType": "YulIdentifier",
                                                "src": "1851:2:117"
                                              },
                                              {
                                                "kind": "number",
                                                "nativeSrc": "1855:2:117",
                                                "nodeType": "YulLiteral",
                                                "src": "1855:2:117",
                                                "type": "",
                                                "value": "32"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nativeSrc": "1847:3:117",
                                              "nodeType": "YulIdentifier",
                                              "src": "1847:3:117"
                                            },
                                            "nativeSrc": "1847:11:117",
                                            "nodeType": "YulFunctionCall",
                                            "src": "1847:11:117"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "1835:3:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "1835:3:117"
                                        },
                                        "nativeSrc": "1835:24:117",
                                        "nodeType": "YulFunctionCall",
                                        "src": "1835:24:117"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "1829:5:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "1829:5:117"
                                    },
                                    "nativeSrc": "1829:31:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1829:31:117"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "source",
                                      "nativeSrc": "1819:6:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "1819:6:117"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "1905:29:117",
                                  "nodeType": "YulAssignment",
                                  "src": "1905:29:117",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "source",
                                        "nativeSrc": "1927:6:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "1927:6:117"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "1921:5:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "1921:5:117"
                                    },
                                    "nativeSrc": "1921:13:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1921:13:117"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "sourceLength",
                                      "nativeSrc": "1905:12:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "1905:12:117"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "1987:32:117",
                                  "nodeType": "YulAssignment",
                                  "src": "1987:32:117",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "source",
                                        "nativeSrc": "2008:6:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "2008:6:117"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2016:2:117",
                                        "nodeType": "YulLiteral",
                                        "src": "2016:2:117",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "2004:3:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "2004:3:117"
                                    },
                                    "nativeSrc": "2004:15:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2004:15:117"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "sourcePointer",
                                      "nativeSrc": "1987:13:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "1987:13:117"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "prague",
                            "externalReferences": [
                              {
                                "declaration": 40786,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1839:6:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40799,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1851:2:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40810,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1819:6:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40810,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1927:6:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40810,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2008:6:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40813,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1905:12:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40816,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1987:13:117",
                                "valueSize": 1
                              }
                            ],
                            "id": 40818,
                            "nodeType": "InlineAssembly",
                            "src": "1756:274:117"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 40820,
                                  "name": "destinationPointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40792,
                                  "src": "2059:18:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 40821,
                                  "name": "sourcePointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40816,
                                  "src": "2090:13:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 40822,
                                  "name": "sourceLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40813,
                                  "src": "2116:12:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 40819,
                                "name": "memcpy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42630,
                                "src": "2040:6:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256,uint256,uint256) pure"
                                }
                              },
                              "id": 40823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2040:99:117",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 40824,
                            "nodeType": "ExpressionStatement",
                            "src": "2040:99:117"
                          },
                          {
                            "AST": {
                              "nativeSrc": "2159:256:117",
                              "nodeType": "YulBlock",
                              "src": "2159:256:117",
                              "statements": [
                                {
                                  "nativeSrc": "2230:57:117",
                                  "nodeType": "YulAssignment",
                                  "src": "2230:57:117",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "destinationLength",
                                        "nativeSrc": "2255:17:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "2255:17:117"
                                      },
                                      {
                                        "name": "sourceLength",
                                        "nativeSrc": "2274:12:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "2274:12:117"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "2251:3:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "2251:3:117"
                                    },
                                    "nativeSrc": "2251:36:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2251:36:117"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "destinationLength",
                                      "nativeSrc": "2230:17:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "2230:17:117"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "2345:59:117",
                                  "nodeType": "YulAssignment",
                                  "src": "2345:59:117",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "destinationPointer",
                                        "nativeSrc": "2371:18:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "2371:18:117"
                                      },
                                      {
                                        "name": "sourceLength",
                                        "nativeSrc": "2391:12:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "2391:12:117"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "2367:3:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "2367:3:117"
                                    },
                                    "nativeSrc": "2367:37:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2367:37:117"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "destinationPointer",
                                      "nativeSrc": "2345:18:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "2345:18:117"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "prague",
                            "externalReferences": [
                              {
                                "declaration": 40795,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2230:17:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40795,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2255:17:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40792,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2345:18:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40792,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2371:18:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40813,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2274:12:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 40813,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2391:12:117",
                                "valueSize": 1
                              }
                            ],
                            "id": 40825,
                            "nodeType": "InlineAssembly",
                            "src": "2150:265:117"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 40805,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 40802,
                          "name": "ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40799,
                          "src": "1628:2:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "expression": {
                            "id": 40803,
                            "name": "_buffs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40786,
                            "src": "1634:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "id": 40804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1641:6:117",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1634:13:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1628:19:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 40827,
                      "initializationExpression": {
                        "assignments": [
                          40799
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 40799,
                            "mutability": "mutable",
                            "name": "ix",
                            "nameLocation": "1620:2:117",
                            "nodeType": "VariableDeclaration",
                            "scope": 40827,
                            "src": "1615:7:117",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 40798,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "1615:4:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 40801,
                        "initialValue": {
                          "hexValue": "31",
                          "id": 40800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1625:1:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1615:11:117"
                      },
                      "isSimpleCounterLoop": false,
                      "loopExpression": {
                        "expression": {
                          "id": 40807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "1649:5:117",
                          "subExpression": {
                            "id": 40806,
                            "name": "ix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40799,
                            "src": "1649:2:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 40808,
                        "nodeType": "ExpressionStatement",
                        "src": "1649:5:117"
                      },
                      "nodeType": "ForStatement",
                      "src": "1610:814:117"
                    },
                    {
                      "AST": {
                        "nativeSrc": "2441:190:117",
                        "nodeType": "YulBlock",
                        "src": "2441:190:117",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "output",
                                  "nativeSrc": "2492:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "2492:6:117"
                                },
                                {
                                  "name": "destinationLength",
                                  "nativeSrc": "2500:17:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "2500:17:117"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "2485:6:117",
                                "nodeType": "YulIdentifier",
                                "src": "2485:6:117"
                              },
                              "nativeSrc": "2485:33:117",
                              "nodeType": "YulFunctionCall",
                              "src": "2485:33:117"
                            },
                            "nativeSrc": "2485:33:117",
                            "nodeType": "YulExpressionStatement",
                            "src": "2485:33:117"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "2571:4:117",
                                  "nodeType": "YulLiteral",
                                  "src": "2571:4:117",
                                  "type": "",
                                  "value": "0x40"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2587:4:117",
                                          "nodeType": "YulLiteral",
                                          "src": "2587:4:117",
                                          "type": "",
                                          "value": "0x40"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nativeSrc": "2581:5:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "2581:5:117"
                                      },
                                      "nativeSrc": "2581:11:117",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2581:11:117"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "name": "destinationLength",
                                          "nativeSrc": "2598:17:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "2598:17:117"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2617:2:117",
                                          "nodeType": "YulLiteral",
                                          "src": "2617:2:117",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nativeSrc": "2594:3:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "2594:3:117"
                                      },
                                      "nativeSrc": "2594:26:117",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2594:26:117"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "2577:3:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "2577:3:117"
                                  },
                                  "nativeSrc": "2577:44:117",
                                  "nodeType": "YulFunctionCall",
                                  "src": "2577:44:117"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "2564:6:117",
                                "nodeType": "YulIdentifier",
                                "src": "2564:6:117"
                              },
                              "nativeSrc": "2564:58:117",
                              "nodeType": "YulFunctionCall",
                              "src": "2564:58:117"
                            },
                            "nativeSrc": "2564:58:117",
                            "nodeType": "YulExpressionStatement",
                            "src": "2564:58:117"
                          }
                        ]
                      },
                      "evmVersion": "prague",
                      "externalReferences": [
                        {
                          "declaration": 40795,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "2500:17:117",
                          "valueSize": 1
                        },
                        {
                          "declaration": 40795,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "2598:17:117",
                          "valueSize": 1
                        },
                        {
                          "declaration": 40789,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "2492:6:117",
                          "valueSize": 1
                        }
                      ],
                      "id": 40828,
                      "nodeType": "InlineAssembly",
                      "src": "2432:199:117"
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 40783,
              "nodeType": "StructuredDocumentation",
              "src": "1094:133:117",
              "text": "@notice Concatenate undefinite number of bytes chunks.\n @dev Faster than looping on `abi.encodePacked(output, _buffs[ix])`."
            },
            "id": 40831,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "concat",
            "nameLocation": "1240:6:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 40787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40786,
                  "mutability": "mutable",
                  "name": "_buffs",
                  "nameLocation": "1262:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40831,
                  "src": "1247:21:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 40784,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "1247:5:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 40785,
                    "nodeType": "ArrayTypeName",
                    "src": "1247:7:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1246:23:117"
            },
            "returnParameters": {
              "id": 40790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40789,
                  "mutability": "mutable",
                  "name": "output",
                  "nameLocation": "1316:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40831,
                  "src": "1303:19:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 40788,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1303:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1302:21:117"
            },
            "scope": 42631,
            "src": "1231:1412:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 40847,
              "nodeType": "Block",
              "src": "2762:75:117",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 40841,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40834,
                          "src": "2791:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 40842,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2798:4:117",
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 40761,
                        "src": "2791:11:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 40843,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40834,
                          "src": "2811:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 40844,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2818:6:117",
                        "memberName": "cursor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 40763,
                        "src": "2811:13:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 40840,
                      "name": "Buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40764,
                      "src": "2776:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Buffer_$40764_storage_ptr_$",
                        "typeString": "type(struct WitnetBuffer.Buffer storage pointer)"
                      }
                    },
                    "id": 40845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2776:55:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                      "typeString": "struct WitnetBuffer.Buffer memory"
                    }
                  },
                  "functionReturnParameters": 40839,
                  "id": 40846,
                  "nodeType": "Return",
                  "src": "2769:62:117"
                }
              ]
            },
            "id": 40848,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fork",
            "nameLocation": "2658:4:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 40835,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40834,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "2690:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40848,
                  "src": "2663:33:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 40833,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 40832,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "2663:12:117",
                        "2676:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "2663:19:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "2663:19:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2662:35:117"
            },
            "returnParameters": {
              "id": 40839,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40838,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 40848,
                  "src": "2731:26:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 40837,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 40836,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "2731:12:117",
                        "2744:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "2731:19:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "2731:19:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2730:28:117"
            },
            "scope": 42631,
            "src": "2649:188:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 40925,
              "nodeType": "Block",
              "src": "3042:310:117",
              "statements": [
                {
                  "assignments": [
                    40873
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40873,
                      "mutability": "mutable",
                      "name": "parts",
                      "nameLocation": "3064:5:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 40925,
                      "src": "3049:20:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                        "typeString": "bytes[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 40871,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3049:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 40872,
                        "nodeType": "ArrayTypeName",
                        "src": "3049:7:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40879,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "33",
                        "id": 40877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3084:1:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        }
                      ],
                      "id": 40876,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3072:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 40874,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3076:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 40875,
                        "nodeType": "ArrayTypeName",
                        "src": "3076:7:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      }
                    },
                    "id": 40878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3072:14:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                      "typeString": "bytes memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3049:37:117"
                },
                {
                  "expression": {
                    "id": 40889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 40880,
                        "name": "parts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40873,
                        "src": "3093:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      "id": 40882,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 40881,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3099:1:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3093:8:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 40884,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40851,
                          "src": "3117:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        {
                          "hexValue": "30",
                          "id": 40885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3132:1:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "expression": {
                            "id": 40886,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40851,
                            "src": "3142:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                              "typeString": "struct WitnetBuffer.Buffer memory"
                            }
                          },
                          "id": 40887,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3149:6:117",
                          "memberName": "cursor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 40763,
                          "src": "3142:13:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 40883,
                        "name": "peek",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          40998,
                          41026
                        ],
                        "referencedDeclaration": 40998,
                        "src": "3104:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                          "typeString": "function (struct WitnetBuffer.Buffer memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 40888,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3104:58:117",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3093:69:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 40890,
                  "nodeType": "ExpressionStatement",
                  "src": "3093:69:117"
                },
                {
                  "expression": {
                    "id": 40895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 40891,
                        "name": "parts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40873,
                        "src": "3169:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      "id": 40893,
                      "indexExpression": {
                        "hexValue": "31",
                        "id": 40892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3175:1:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3169:8:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 40894,
                      "name": "pokes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40855,
                      "src": "3180:5:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3169:16:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 40896,
                  "nodeType": "ExpressionStatement",
                  "src": "3169:16:117"
                },
                {
                  "expression": {
                    "id": 40915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 40897,
                        "name": "parts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40873,
                        "src": "3192:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      "id": 40899,
                      "indexExpression": {
                        "hexValue": "32",
                        "id": 40898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3198:1:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3192:8:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 40901,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40851,
                          "src": "3216:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 40902,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40851,
                              "src": "3231:6:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                "typeString": "struct WitnetBuffer.Buffer memory"
                              }
                            },
                            "id": 40903,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3238:6:117",
                            "memberName": "cursor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 40763,
                            "src": "3231:13:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 40904,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40853,
                            "src": "3247:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3231:22:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 40913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 40911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "expression": {
                                  "id": 40906,
                                  "name": "buffer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40851,
                                  "src": "3262:6:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                    "typeString": "struct WitnetBuffer.Buffer memory"
                                  }
                                },
                                "id": 40907,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3269:4:117",
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 40761,
                                "src": "3262:11:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 40908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3274:6:117",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3262:18:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "expression": {
                                "id": 40909,
                                "name": "buffer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 40851,
                                "src": "3283:6:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                  "typeString": "struct WitnetBuffer.Buffer memory"
                                }
                              },
                              "id": 40910,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3290:6:117",
                              "memberName": "cursor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 40763,
                              "src": "3283:13:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3262:34:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 40912,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40853,
                            "src": "3299:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3262:43:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 40900,
                        "name": "peek",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          40998,
                          41026
                        ],
                        "referencedDeclaration": 40998,
                        "src": "3203:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                          "typeString": "function (struct WitnetBuffer.Buffer memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 40914,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3203:109:117",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3192:120:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 40916,
                  "nodeType": "ExpressionStatement",
                  "src": "3192:120:117"
                },
                {
                  "expression": {
                    "id": 40923,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 40917,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40851,
                        "src": "3319:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 40919,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "3326:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "3319:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 40921,
                          "name": "parts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40873,
                          "src": "3340:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        ],
                        "id": 40920,
                        "name": "concat",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40831,
                        "src": "3333:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory[] memory) pure returns (bytes memory)"
                        }
                      },
                      "id": 40922,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3333:13:117",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3319:27:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 40924,
                  "nodeType": "ExpressionStatement",
                  "src": "3319:27:117"
                }
              ]
            },
            "id": 40926,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 40858,
                    "name": "length",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 40853,
                    "src": "2991:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40866,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 40864,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "expression": {
                            "id": 40859,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40851,
                            "src": "2999:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                              "typeString": "struct WitnetBuffer.Buffer memory"
                            }
                          },
                          "id": 40860,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3006:4:117",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 40761,
                          "src": "2999:11:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 40861,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3011:6:117",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "2999:18:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "expression": {
                          "id": 40862,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40851,
                          "src": "3020:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 40863,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3027:6:117",
                        "memberName": "cursor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 40763,
                        "src": "3020:13:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2999:34:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 40865,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3036:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "2999:38:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 40867,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 40857,
                  "name": "withinRange",
                  "nameLocations": [
                    "2979:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "2979:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "2979:59:117"
              }
            ],
            "name": "mutate",
            "nameLocation": "2852:6:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 40856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40851,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "2894:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40926,
                  "src": "2867:33:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 40850,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 40849,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "2867:12:117",
                        "2880:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "2867:19:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "2867:19:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40853,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "2914:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40926,
                  "src": "2909:11:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40852,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2909:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40855,
                  "mutability": "mutable",
                  "name": "pokes",
                  "nameLocation": "2942:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40926,
                  "src": "2929:18:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 40854,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2929:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2858:96:117"
            },
            "returnParameters": {
              "id": 40868,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3042:0:117"
            },
            "scope": 42631,
            "src": "2843:509:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 40949,
              "nodeType": "Block",
              "src": "3677:145:117",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "id": 40942,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40930,
                        "src": "3787:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 40943,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3794:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "3787:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 40947,
                    "indexExpression": {
                      "id": 40946,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3799:16:117",
                      "subExpression": {
                        "expression": {
                          "id": 40944,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 40930,
                          "src": "3799:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 40945,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberLocation": "3806:6:117",
                        "memberName": "cursor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 40763,
                        "src": "3799:13:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3787:29:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes1",
                      "typeString": "bytes1"
                    }
                  },
                  "functionReturnParameters": 40941,
                  "id": 40948,
                  "nodeType": "Return",
                  "src": "3780:36:117"
                }
              ]
            },
            "documentation": {
              "id": 40927,
              "nodeType": "StructuredDocumentation",
              "src": "3358:183:117",
              "text": "@notice Read and consume the next byte from the buffer.\n @param buffer An instance of `Buffer`.\n @return The next byte in the buffer counting from the cursor position."
            },
            "id": 40950,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 40933,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40930,
                      "src": "3617:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 40934,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "3624:6:117",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40763,
                    "src": "3617:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 40935,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40930,
                        "src": "3632:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 40936,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3639:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "3632:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 40937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "3644:6:117",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "3632:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 40938,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 40932,
                  "name": "withinRange",
                  "nameLocations": [
                    "3605:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "3605:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "3605:46:117"
              }
            ],
            "name": "next",
            "nameLocation": "3554:4:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 40931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40930,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "3573:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40950,
                  "src": "3559:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 40929,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 40928,
                      "name": "Buffer",
                      "nameLocations": [
                        "3559:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "3559:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "3559:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3558:22:117"
            },
            "returnParameters": {
              "id": 40941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40940,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 40950,
                  "src": "3666:6:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes1",
                    "typeString": "bytes1"
                  },
                  "typeName": {
                    "id": 40939,
                    "name": "bytes1",
                    "nodeType": "ElementaryTypeName",
                    "src": "3666:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes1",
                      "typeString": "bytes1"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3665:8:117"
            },
            "scope": 42631,
            "src": "3545:277:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 40997,
              "nodeType": "Block",
              "src": "4035:365:117",
              "statements": [
                {
                  "assignments": [
                    40971
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40971,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "4055:4:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 40997,
                      "src": "4042:17:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 40970,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4042:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40974,
                  "initialValue": {
                    "expression": {
                      "id": 40972,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40953,
                      "src": "4062:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 40973,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "4069:4:117",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40761,
                    "src": "4062:11:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4042:31:117"
                },
                {
                  "assignments": [
                    40976
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40976,
                      "mutability": "mutable",
                      "name": "peeks",
                      "nameLocation": "4093:5:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 40997,
                      "src": "4080:18:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 40975,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4080:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40981,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 40979,
                        "name": "length",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40957,
                        "src": "4111:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 40978,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4101:9:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 40977,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4105:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 40980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4101:17:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4080:38:117"
                },
                {
                  "assignments": [
                    40983
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40983,
                      "mutability": "mutable",
                      "name": "destinationPointer",
                      "nameLocation": "4130:18:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 40997,
                      "src": "4125:23:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40982,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4125:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40984,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4125:23:117"
                },
                {
                  "assignments": [
                    40986
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 40986,
                      "mutability": "mutable",
                      "name": "sourcePointer",
                      "nameLocation": "4160:13:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 40997,
                      "src": "4155:18:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 40985,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4155:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 40987,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4155:18:117"
                },
                {
                  "AST": {
                    "nativeSrc": "4189:103:117",
                    "nodeType": "YulBlock",
                    "src": "4189:103:117",
                    "statements": [
                      {
                        "nativeSrc": "4198:36:117",
                        "nodeType": "YulAssignment",
                        "src": "4198:36:117",
                        "value": {
                          "arguments": [
                            {
                              "name": "peeks",
                              "nativeSrc": "4224:5:117",
                              "nodeType": "YulIdentifier",
                              "src": "4224:5:117"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4231:2:117",
                              "nodeType": "YulLiteral",
                              "src": "4231:2:117",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "4220:3:117",
                            "nodeType": "YulIdentifier",
                            "src": "4220:3:117"
                          },
                          "nativeSrc": "4220:14:117",
                          "nodeType": "YulFunctionCall",
                          "src": "4220:14:117"
                        },
                        "variableNames": [
                          {
                            "name": "destinationPointer",
                            "nativeSrc": "4198:18:117",
                            "nodeType": "YulIdentifier",
                            "src": "4198:18:117"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "4242:43:117",
                        "nodeType": "YulAssignment",
                        "src": "4242:43:117",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "data",
                                  "nativeSrc": "4267:4:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "4267:4:117"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "4273:2:117",
                                  "nodeType": "YulLiteral",
                                  "src": "4273:2:117",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "4263:3:117",
                                "nodeType": "YulIdentifier",
                                "src": "4263:3:117"
                              },
                              "nativeSrc": "4263:13:117",
                              "nodeType": "YulFunctionCall",
                              "src": "4263:13:117"
                            },
                            {
                              "name": "offset",
                              "nativeSrc": "4278:6:117",
                              "nodeType": "YulIdentifier",
                              "src": "4278:6:117"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "4259:3:117",
                            "nodeType": "YulIdentifier",
                            "src": "4259:3:117"
                          },
                          "nativeSrc": "4259:26:117",
                          "nodeType": "YulFunctionCall",
                          "src": "4259:26:117"
                        },
                        "variableNames": [
                          {
                            "name": "sourcePointer",
                            "nativeSrc": "4242:13:117",
                            "nodeType": "YulIdentifier",
                            "src": "4242:13:117"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 40971,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4267:4:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 40983,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4198:18:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 40955,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4278:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 40976,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4224:5:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 40986,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4242:13:117",
                      "valueSize": 1
                    }
                  ],
                  "id": 40988,
                  "nodeType": "InlineAssembly",
                  "src": "4180:112:117"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 40990,
                        "name": "destinationPointer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40983,
                        "src": "4313:18:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 40991,
                        "name": "sourcePointer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40986,
                        "src": "4340:13:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 40992,
                        "name": "length",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40957,
                        "src": "4362:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 40989,
                      "name": "memcpy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42630,
                      "src": "4298:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256,uint256) pure"
                      }
                    },
                    "id": 40993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4298:77:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 40994,
                  "nodeType": "ExpressionStatement",
                  "src": "4298:77:117"
                },
                {
                  "expression": {
                    "id": 40995,
                    "name": "peeks",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 40976,
                    "src": "4389:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 40969,
                  "id": 40996,
                  "nodeType": "Return",
                  "src": "4382:12:117"
                }
              ]
            },
            "id": 40998,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 40962,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 40960,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40955,
                      "src": "3967:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "id": 40961,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40957,
                      "src": "3976:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3967:15:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 40963,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40953,
                        "src": "3984:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 40964,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3991:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "3984:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 40965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "3996:6:117",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "3984:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 40966,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 40959,
                  "name": "withinRange",
                  "nameLocations": [
                    "3955:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "3955:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "3955:48:117"
              }
            ],
            "name": "peek",
            "nameLocation": "3837:4:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 40958,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40953,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "3877:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40998,
                  "src": "3850:33:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 40952,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 40951,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "3850:12:117",
                        "3863:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "3850:19:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "3850:19:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40955,
                  "mutability": "mutable",
                  "name": "offset",
                  "nameLocation": "3897:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40998,
                  "src": "3892:11:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40954,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3892:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40957,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "3917:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 40998,
                  "src": "3912:11:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 40956,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3912:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3841:89:117"
            },
            "returnParameters": {
              "id": 40969,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40968,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 40998,
                  "src": "4018:12:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 40967,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4018:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4017:14:117"
            },
            "scope": 42631,
            "src": "3828:572:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41025,
              "nodeType": "Block",
              "src": "4840:83:117",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 41019,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41002,
                        "src": "4867:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 41020,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41002,
                          "src": "4882:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 41021,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4889:6:117",
                        "memberName": "cursor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 40763,
                        "src": "4882:13:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 41022,
                        "name": "length",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41004,
                        "src": "4904:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 41018,
                      "name": "peek",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        40998,
                        41026
                      ],
                      "referencedDeclaration": 40998,
                      "src": "4854:4:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (struct WitnetBuffer.Buffer memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 41023,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4854:63:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 41017,
                  "id": 41024,
                  "nodeType": "Return",
                  "src": "4847:70:117"
                }
              ]
            },
            "documentation": {
              "id": 40999,
              "nodeType": "StructuredDocumentation",
              "src": "4482:103:117",
              "text": "@param buffer An instance of `Buffer`.\n @param length How many bytes to peek from the Buffer."
            },
            "id": 41026,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 41007,
                    "name": "length",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 41004,
                    "src": "4765:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 41008,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41002,
                          "src": "4773:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 41009,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4780:4:117",
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 40761,
                        "src": "4773:11:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 41010,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4785:6:117",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "4773:18:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "expression": {
                        "id": 41011,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41002,
                        "src": "4794:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41012,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4801:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "4794:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4773:34:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 41014,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 41006,
                  "name": "withinRange",
                  "nameLocations": [
                    "4753:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "4753:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "4753:55:117"
              }
            ],
            "name": "peek",
            "nameLocation": "4655:4:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41005,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41002,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "4695:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41026,
                  "src": "4668:33:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41001,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41000,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "4668:12:117",
                        "4681:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "4668:19:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "4668:19:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 41004,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "4715:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41026,
                  "src": "4710:11:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 41003,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4710:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4659:69:117"
            },
            "returnParameters": {
              "id": 41017,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41016,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 41026,
                  "src": "4823:12:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 41015,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4823:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4822:14:117"
            },
            "scope": 42631,
            "src": "4646:277:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41087,
              "nodeType": "Block",
              "src": "5417:767:117",
              "statements": [
                {
                  "expression": {
                    "id": 41051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 41046,
                      "name": "output",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41044,
                      "src": "5478:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 41049,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41032,
                          "src": "5497:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 41048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "5487:9:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (bytes memory)"
                        },
                        "typeName": {
                          "id": 41047,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5491:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        }
                      },
                      "id": 41050,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5487:17:117",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "5478:26:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 41052,
                  "nodeType": "ExpressionStatement",
                  "src": "5478:26:117"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41053,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41032,
                      "src": "5567:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 41054,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5576:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5567:10:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 41086,
                  "nodeType": "IfStatement",
                  "src": "5563:616:117",
                  "trueBody": {
                    "id": 41085,
                    "nodeType": "Block",
                    "src": "5579:600:117",
                    "statements": [
                      {
                        "assignments": [
                          41057
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41057,
                            "mutability": "mutable",
                            "name": "input",
                            "nameLocation": "5601:5:117",
                            "nodeType": "VariableDeclaration",
                            "scope": 41085,
                            "src": "5588:18:117",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 41056,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5588:5:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 41060,
                        "initialValue": {
                          "expression": {
                            "id": 41058,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41030,
                            "src": "5609:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                              "typeString": "struct WitnetBuffer.Buffer memory"
                            }
                          },
                          "id": 41059,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5616:4:117",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 40761,
                          "src": "5609:11:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5588:32:117"
                      },
                      {
                        "assignments": [
                          41062
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41062,
                            "mutability": "mutable",
                            "name": "offset",
                            "nameLocation": "5634:6:117",
                            "nodeType": "VariableDeclaration",
                            "scope": 41085,
                            "src": "5629:11:117",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 41061,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5629:4:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 41065,
                        "initialValue": {
                          "expression": {
                            "id": 41063,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41030,
                            "src": "5643:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                              "typeString": "struct WitnetBuffer.Buffer memory"
                            }
                          },
                          "id": 41064,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5650:6:117",
                          "memberName": "cursor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 40763,
                          "src": "5643:13:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5629:27:117"
                      },
                      {
                        "assignments": [
                          41067
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41067,
                            "mutability": "mutable",
                            "name": "sourcePointer",
                            "nameLocation": "5724:13:117",
                            "nodeType": "VariableDeclaration",
                            "scope": 41085,
                            "src": "5719:18:117",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 41066,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5719:4:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 41068,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5719:18:117"
                      },
                      {
                        "assignments": [
                          41070
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41070,
                            "mutability": "mutable",
                            "name": "destinationPointer",
                            "nameLocation": "5751:18:117",
                            "nodeType": "VariableDeclaration",
                            "scope": 41085,
                            "src": "5746:23:117",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 41069,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5746:4:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 41071,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5746:23:117"
                      },
                      {
                        "AST": {
                          "nativeSrc": "5787:111:117",
                          "nodeType": "YulBlock",
                          "src": "5787:111:117",
                          "statements": [
                            {
                              "nativeSrc": "5798:44:117",
                              "nodeType": "YulAssignment",
                              "src": "5798:44:117",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "input",
                                        "nativeSrc": "5823:5:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "5823:5:117"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "5830:2:117",
                                        "nodeType": "YulLiteral",
                                        "src": "5830:2:117",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "5819:3:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "5819:3:117"
                                    },
                                    "nativeSrc": "5819:14:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5819:14:117"
                                  },
                                  {
                                    "name": "offset",
                                    "nativeSrc": "5835:6:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "5835:6:117"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "5815:3:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "5815:3:117"
                                },
                                "nativeSrc": "5815:27:117",
                                "nodeType": "YulFunctionCall",
                                "src": "5815:27:117"
                              },
                              "variableNames": [
                                {
                                  "name": "sourcePointer",
                                  "nativeSrc": "5798:13:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "5798:13:117"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "5852:37:117",
                              "nodeType": "YulAssignment",
                              "src": "5852:37:117",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nativeSrc": "5878:6:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "5878:6:117"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "5886:2:117",
                                    "nodeType": "YulLiteral",
                                    "src": "5886:2:117",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "5874:3:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "5874:3:117"
                                },
                                "nativeSrc": "5874:15:117",
                                "nodeType": "YulFunctionCall",
                                "src": "5874:15:117"
                              },
                              "variableNames": [
                                {
                                  "name": "destinationPointer",
                                  "nativeSrc": "5852:18:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "5852:18:117"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "prague",
                        "externalReferences": [
                          {
                            "declaration": 41070,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5852:18:117",
                            "valueSize": 1
                          },
                          {
                            "declaration": 41057,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5823:5:117",
                            "valueSize": 1
                          },
                          {
                            "declaration": 41062,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5835:6:117",
                            "valueSize": 1
                          },
                          {
                            "declaration": 41044,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5878:6:117",
                            "valueSize": 1
                          },
                          {
                            "declaration": 41067,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5798:13:117",
                            "valueSize": 1
                          }
                        ],
                        "id": 41072,
                        "nodeType": "InlineAssembly",
                        "src": "5778:120:117"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 41074,
                              "name": "destinationPointer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41070,
                              "src": "5980:18:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 41075,
                              "name": "sourcePointer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41067,
                              "src": "6009:13:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 41076,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41032,
                              "src": "6033:6:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41073,
                            "name": "memcpy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42630,
                            "src": "5963:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256) pure"
                            }
                          },
                          "id": 41077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5963:85:117",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41078,
                        "nodeType": "ExpressionStatement",
                        "src": "5963:85:117"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 41080,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41030,
                              "src": "6124:6:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                "typeString": "struct WitnetBuffer.Buffer memory"
                              }
                            },
                            {
                              "id": 41081,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 41032,
                              "src": "6141:6:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 41082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6158:4:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                "typeString": "struct WitnetBuffer.Buffer memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 41079,
                            "name": "seek",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              42565,
                              42583
                            ],
                            "referencedDeclaration": 42565,
                            "src": "6109:4:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (struct WitnetBuffer.Buffer memory,uint256,bool) pure returns (uint256)"
                            }
                          },
                          "id": 41083,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6109:62:117",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 41084,
                        "nodeType": "ExpressionStatement",
                        "src": "6109:62:117"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 41027,
              "nodeType": "StructuredDocumentation",
              "src": "4929:317:117",
              "text": "@notice Read and consume a certain amount of bytes from the buffer.\n @param buffer An instance of `Buffer`.\n @param length How many bytes to read and consume from the buffer.\n @return output A `bytes memory` containing the first `length` bytes from the buffer, counting from the cursor position."
            },
            "id": 41088,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 41035,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41030,
                        "src": "5335:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41036,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5342:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "5335:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "id": 41037,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41032,
                      "src": "5351:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5335:22:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 41039,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41030,
                        "src": "5359:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41040,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5366:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "5359:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 41041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "5371:6:117",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "5359:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 41042,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 41034,
                  "name": "withinRange",
                  "nameLocations": [
                    "5323:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "5323:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "5323:55:117"
              }
            ],
            "name": "read",
            "nameLocation": "5259:4:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41033,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41030,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "5278:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41088,
                  "src": "5264:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41029,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41028,
                      "name": "Buffer",
                      "nameLocations": [
                        "5264:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "5264:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "5264:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 41032,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "5291:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41088,
                  "src": "5286:11:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 41031,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5286:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5263:35:117"
            },
            "returnParameters": {
              "id": 41045,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41044,
                  "mutability": "mutable",
                  "name": "output",
                  "nameLocation": "5406:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41088,
                  "src": "5393:19:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 41043,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5393:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5392:21:117"
            },
            "scope": 42631,
            "src": "5250:934:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41238,
              "nodeType": "Block",
              "src": "7043:1153:117",
              "statements": [
                {
                  "assignments": [
                    41098
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41098,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "7057:5:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41238,
                      "src": "7050:12:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 41097,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7050:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41102,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 41100,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41092,
                        "src": "7076:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      ],
                      "id": 41099,
                      "name": "readUint16",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41737,
                      "src": "7065:10:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$returns$_t_uint16_$",
                        "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint16)"
                      }
                    },
                    "id": 41101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7065:18:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7050:33:117"
                },
                {
                  "assignments": [
                    41104
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41104,
                      "mutability": "mutable",
                      "name": "sign",
                      "nameLocation": "7127:4:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41238,
                      "src": "7120:11:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 41103,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7120:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41108,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "id": 41107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41105,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41098,
                      "src": "7134:5:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&",
                    "rightExpression": {
                      "hexValue": "307838303030",
                      "id": 41106,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7142:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32768_by_1",
                        "typeString": "int_const 32768"
                      },
                      "value": "0x8000"
                    },
                    "src": "7134:14:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7120:28:117"
                },
                {
                  "assignments": [
                    41110
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41110,
                      "mutability": "mutable",
                      "name": "exponent",
                      "nameLocation": "7274:8:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41238,
                      "src": "7268:14:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      },
                      "typeName": {
                        "id": 41109,
                        "name": "int32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7268:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int32",
                          "typeString": "int32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41122,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    },
                    "id": 41121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          },
                          "id": 41118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 41115,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 41113,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41098,
                                  "src": "7292:5:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307837633030",
                                  "id": 41114,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7300:6:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_31744_by_1",
                                    "typeString": "int_const 31744"
                                  },
                                  "value": "0x7c00"
                                },
                                "src": "7292:14:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              ],
                              "id": 41112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7286:5:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int32_$",
                                "typeString": "type(int32)"
                              },
                              "typeName": {
                                "id": 41111,
                                "name": "int32",
                                "nodeType": "ElementaryTypeName",
                                "src": "7286:5:117",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 41116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7286:21:117",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "3130",
                            "id": 41117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7311:2:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "src": "7286:27:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        }
                      ],
                      "id": 41119,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "7285:29:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "hexValue": "3135",
                      "id": 41120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7317:2:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_15_by_1",
                        "typeString": "int_const 15"
                      },
                      "value": "15"
                    },
                    "src": "7285:34:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7268:51:117"
                },
                {
                  "assignments": [
                    41124
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41124,
                      "mutability": "mutable",
                      "name": "fraction",
                      "nameLocation": "7357:8:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41238,
                      "src": "7351:14:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      },
                      "typeName": {
                        "id": 41123,
                        "name": "int32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7351:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int32",
                          "typeString": "int32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41131,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 41129,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 41127,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41098,
                          "src": "7374:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "hexValue": "307830336666",
                          "id": 41128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7382:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1023_by_1",
                            "typeString": "int_const 1023"
                          },
                          "value": "0x03ff"
                        },
                        "src": "7374:14:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "id": 41126,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7368:5:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int32_$",
                        "typeString": "type(int32)"
                      },
                      "typeName": {
                        "id": 41125,
                        "name": "int32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7368:5:117",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 41130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7368:21:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7351:38:117"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    },
                    "id": 41135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41132,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41110,
                      "src": "7456:8:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 41134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "-",
                      "prefix": true,
                      "src": "7468:3:117",
                      "subExpression": {
                        "hexValue": "3135",
                        "id": 41133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7469:2:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_15_by_1",
                          "typeString": "int_const 15"
                        },
                        "value": "15"
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_minus_15_by_1",
                        "typeString": "int_const -15"
                      }
                    },
                    "src": "7456:15:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      },
                      "id": 41143,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 41141,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41110,
                        "src": "7517:8:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int32",
                          "typeString": "int32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "3136",
                        "id": 41142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7529:2:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_16_by_1",
                          "typeString": "int_const 16"
                        },
                        "value": "16"
                      },
                      "src": "7517:14:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 41162,
                    "nodeType": "IfStatement",
                    "src": "7513:206:117",
                    "trueBody": {
                      "id": 41161,
                      "nodeType": "Block",
                      "src": "7533:186:117",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "5769746e65744275666665722e72656164466c6f617431363a20",
                                        "id": 41149,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7595:28:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_34f674675c8354d2881e0fe40ffc802ad882f0cf9f9efc9643de3b2bc1155054",
                                          "typeString": "literal_string \"WitnetBuffer.readFloat16: \""
                                        },
                                        "value": "WitnetBuffer.readFloat16: "
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 41152,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 41150,
                                            "name": "sign",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 41104,
                                            "src": "7636:4:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 41151,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7644:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "7636:9:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "hexValue": "",
                                          "id": 41154,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "hexString",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7661:5:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          },
                                          "value": ""
                                        },
                                        "id": 41155,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "7636:30:117",
                                        "trueExpression": {
                                          "hexValue": "6e65676174697665",
                                          "id": 41153,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7648:10:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_5c5e2f1fbc734e42aa272c3420aeb7631dc1efac79a3bf6e1303c2b8c0ccc2e4",
                                            "typeString": "literal_string \"negative\""
                                          },
                                          "value": "negative"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "hexValue": "20696e66696e697479",
                                        "id": 41156,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7679:11:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_91f1a0a624b4b9daa319ca31429bf6584116647ceaf3a744bd0f4c2aad95b621",
                                          "typeString": "literal_string \" infinity\""
                                        },
                                        "value": " infinity"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_34f674675c8354d2881e0fe40ffc802ad882f0cf9f9efc9643de3b2bc1155054",
                                          "typeString": "literal_string \"WitnetBuffer.readFloat16: \""
                                        },
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_91f1a0a624b4b9daa319ca31429bf6584116647ceaf3a744bd0f4c2aad95b621",
                                          "typeString": "literal_string \" infinity\""
                                        }
                                      ],
                                      "expression": {
                                        "id": 41147,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "7566:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 41148,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "7570:12:117",
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "src": "7566:16:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 41157,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7566:135:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 41146,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7559:6:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 41145,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7559:6:117",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 41158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7559:143:117",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 41144,
                              "name": "revert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                4294967277,
                                4294967277
                              ],
                              "referencedDeclaration": 4294967277,
                              "src": "7542:6:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (string memory) pure"
                              }
                            },
                            "id": 41159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7542:169:117",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 41160,
                          "nodeType": "ExpressionStatement",
                          "src": "7542:169:117"
                        }
                      ]
                    }
                  },
                  "id": 41163,
                  "nodeType": "IfStatement",
                  "src": "7452:267:117",
                  "trueBody": {
                    "id": 41140,
                    "nodeType": "Block",
                    "src": "7473:34:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41136,
                            "name": "fraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41124,
                            "src": "7482:8:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "hexValue": "3078343030",
                            "id": 41137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7494:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1024_by_1",
                              "typeString": "int_const 1024"
                            },
                            "value": "0x400"
                          },
                          "src": "7482:17:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "id": 41139,
                        "nodeType": "ExpressionStatement",
                        "src": "7482:17:117"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    },
                    "id": 41166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41164,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41110,
                      "src": "7785:8:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 41165,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7797:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7785:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 41226,
                    "nodeType": "Block",
                    "src": "7944:139:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41195,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41095,
                            "src": "7953:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 41222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 41219,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 41205,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "id": 41202,
                                              "name": "fraction",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 41124,
                                              "src": "7986:8:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int32",
                                                "typeString": "int32"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_int32",
                                                "typeString": "int32"
                                              }
                                            ],
                                            "id": 41201,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "7982:3:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_int256_$",
                                              "typeString": "type(int256)"
                                            },
                                            "typeName": {
                                              "id": 41200,
                                              "name": "int",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "7982:3:117",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 41203,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7982:13:117",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "3130303030",
                                          "id": 41204,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8009:5:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10000_by_1",
                                            "typeString": "int_const 10000"
                                          },
                                          "value": "10000"
                                        },
                                        "src": "7982:32:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 41217,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "hexValue": "31",
                                              "id": 41208,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "8032:1:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<<",
                                            "rightExpression": {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "id": 41214,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "UnaryOperation",
                                                      "operator": "-",
                                                      "prefix": true,
                                                      "src": "8046:10:117",
                                                      "subExpression": {
                                                        "id": 41213,
                                                        "name": "exponent",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 41110,
                                                        "src": "8048:8:117",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_int32",
                                                          "typeString": "int32"
                                                        }
                                                      },
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_int32",
                                                        "typeString": "int32"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_int32",
                                                        "typeString": "int32"
                                                      }
                                                    ],
                                                    "id": 41212,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "8042:3:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_int256_$",
                                                      "typeString": "type(int256)"
                                                    },
                                                    "typeName": {
                                                      "id": 41211,
                                                      "name": "int",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "8042:3:117",
                                                      "typeDescriptions": {}
                                                    }
                                                  },
                                                  "id": 41215,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "8042:15:117",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                  }
                                                ],
                                                "id": 41210,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "8037:4:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint256_$",
                                                  "typeString": "type(uint256)"
                                                },
                                                "typeName": {
                                                  "id": 41209,
                                                  "name": "uint",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "8037:4:117",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 41216,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "8037:21:117",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "8032:26:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 41207,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "8028:3:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int256_$",
                                            "typeString": "type(int256)"
                                          },
                                          "typeName": {
                                            "id": 41206,
                                            "name": "int",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "8028:3:117",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 41218,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8028:31:117",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "7982:77:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 41199,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7968:3:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 41198,
                                      "name": "int",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7968:3:117",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 41220,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7968:100:117",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "3130",
                                  "id": 41221,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8072:2:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "7968:106:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 41197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7962:5:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int32_$",
                                "typeString": "type(int32)"
                              },
                              "typeName": {
                                "id": 41196,
                                "name": "int32",
                                "nodeType": "ElementaryTypeName",
                                "src": "7962:5:117",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 41223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7962:113:117",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "src": "7953:122:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "id": 41225,
                        "nodeType": "ExpressionStatement",
                        "src": "7953:122:117"
                      }
                    ]
                  },
                  "id": 41227,
                  "nodeType": "IfStatement",
                  "src": "7781:302:117",
                  "trueBody": {
                    "id": 41194,
                    "nodeType": "Block",
                    "src": "7800:138:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41167,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41095,
                            "src": "7809:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 41190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 41187,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 41185,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 41182,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "hexValue": "31",
                                                "id": 41174,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7842:1:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "<<",
                                              "rightExpression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "id": 41179,
                                                        "name": "exponent",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 41110,
                                                        "src": "7862:8:117",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_int32",
                                                          "typeString": "int32"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int32",
                                                          "typeString": "int32"
                                                        }
                                                      ],
                                                      "id": 41178,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "7855:6:117",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                        "typeString": "type(int256)"
                                                      },
                                                      "typeName": {
                                                        "id": 41177,
                                                        "name": "int256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "7855:6:117",
                                                        "typeDescriptions": {}
                                                      }
                                                    },
                                                    "id": 41180,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7855:16:117",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  ],
                                                  "id": 41176,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "7847:7:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                    "typeString": "type(uint256)"
                                                  },
                                                  "typeName": {
                                                    "id": 41175,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7847:7:117",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 41181,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7847:25:117",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "7842:30:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 41173,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "7838:3:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_int256_$",
                                              "typeString": "type(int256)"
                                            },
                                            "typeName": {
                                              "id": 41172,
                                              "name": "int",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "7838:3:117",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 41183,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7838:35:117",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "3130303030",
                                          "id": 41184,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7887:5:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10000_by_1",
                                            "typeString": "int_const 10000"
                                          },
                                          "value": "10000"
                                        },
                                        "src": "7838:54:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 41186,
                                        "name": "fraction",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 41124,
                                        "src": "7906:8:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int32",
                                          "typeString": "int32"
                                        }
                                      },
                                      "src": "7838:76:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 41171,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7824:3:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 41170,
                                      "name": "int",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7824:3:117",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 41188,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7824:99:117",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "3130",
                                  "id": 41189,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7927:2:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "7824:105:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 41169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7818:5:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int32_$",
                                "typeString": "type(int32)"
                              },
                              "typeName": {
                                "id": 41168,
                                "name": "int32",
                                "nodeType": "ElementaryTypeName",
                                "src": "7818:5:117",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 41191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7818:112:117",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "src": "7809:121:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "id": 41193,
                        "nodeType": "ExpressionStatement",
                        "src": "7809:121:117"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "id": 41230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41228,
                      "name": "sign",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41104,
                      "src": "8151:4:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 41229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8159:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8151:9:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 41237,
                  "nodeType": "IfStatement",
                  "src": "8147:44:117",
                  "trueBody": {
                    "id": 41236,
                    "nodeType": "Block",
                    "src": "8162:29:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41231,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41095,
                            "src": "8171:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "id": 41233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "8181:2:117",
                            "subExpression": {
                              "hexValue": "31",
                              "id": 41232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8182:1:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          },
                          "src": "8171:12:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "id": 41235,
                        "nodeType": "ExpressionStatement",
                        "src": "8171:12:117"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 41089,
              "nodeType": "StructuredDocumentation",
              "src": "6192:754:117",
              "text": "@notice Read and consume the next 2 bytes from the buffer as an IEEE 754-2008 floating point number enclosed in an\n `int32`.\n @dev Due to the lack of support for floating or fixed point arithmetic in the EVM, this method offsets all values\n by 5 decimal orders so as to get a fixed precision of 5 decimal positions, which should be OK for most `float16`\n use cases. In other words, the integer output of this method is 10,000 times the actual value. The input bytes are\n expected to follow the 16-bit base-2 format (a.k.a. `binary16`) in the IEEE 754-2008 standard.\n @param buffer An instance of `Buffer`.\n @return result The `int32` value of the next 4 bytes in the buffer counting from the cursor position."
            },
            "id": 41239,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readFloat16",
            "nameLocation": "6959:11:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41093,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41092,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "6985:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41239,
                  "src": "6971:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41091,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41090,
                      "name": "Buffer",
                      "nameLocations": [
                        "6971:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "6971:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "6971:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6970:22:117"
            },
            "returnParameters": {
              "id": 41096,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41095,
                  "mutability": "mutable",
                  "name": "result",
                  "nameLocation": "7032:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41239,
                  "src": "7026:12:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int32",
                    "typeString": "int32"
                  },
                  "typeName": {
                    "id": 41094,
                    "name": "int32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7026:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7025:14:117"
            },
            "scope": 42631,
            "src": "6950:1246:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41376,
              "nodeType": "Block",
              "src": "9031:1130:117",
              "statements": [
                {
                  "assignments": [
                    41249
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41249,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "9043:5:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41376,
                      "src": "9038:10:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 41248,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9038:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41253,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 41251,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41243,
                        "src": "9062:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      ],
                      "id": 41250,
                      "name": "readUint32",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41773,
                      "src": "9051:10:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$returns$_t_uint32_$",
                        "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint32)"
                      }
                    },
                    "id": 41252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9051:18:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9038:31:117"
                },
                {
                  "assignments": [
                    41255
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41255,
                      "mutability": "mutable",
                      "name": "sign",
                      "nameLocation": "9111:4:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41376,
                      "src": "9106:9:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 41254,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9106:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41259,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41258,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41256,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41249,
                      "src": "9118:5:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&",
                    "rightExpression": {
                      "hexValue": "30783830303030303030",
                      "id": 41257,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9126:10:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2147483648_by_1",
                        "typeString": "int_const 2147483648"
                      },
                      "value": "0x80000000"
                    },
                    "src": "9118:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9106:30:117"
                },
                {
                  "assignments": [
                    41261
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41261,
                      "mutability": "mutable",
                      "name": "exponent",
                      "nameLocation": "9262:8:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41376,
                      "src": "9258:12:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 41260,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "9258:3:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41273,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 41272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 41269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 41266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 41264,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41249,
                                  "src": "9278:5:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783766383030303030",
                                  "id": 41265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9286:10:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2139095040_by_1",
                                    "typeString": "int_const 2139095040"
                                  },
                                  "value": "0x7f800000"
                                },
                                "src": "9278:18:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 41263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9274:3:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 41262,
                                "name": "int",
                                "nodeType": "ElementaryTypeName",
                                "src": "9274:3:117",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 41267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9274:23:117",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "3233",
                            "id": 41268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9301:2:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_23_by_1",
                              "typeString": "int_const 23"
                            },
                            "value": "23"
                          },
                          "src": "9274:29:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "id": 41270,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9273:31:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "hexValue": "313237",
                      "id": 41271,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9307:3:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_127_by_1",
                        "typeString": "int_const 127"
                      },
                      "value": "127"
                    },
                    "src": "9273:37:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9258:52:117"
                },
                {
                  "assignments": [
                    41275
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41275,
                      "mutability": "mutable",
                      "name": "fraction",
                      "nameLocation": "9346:8:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41376,
                      "src": "9342:12:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 41274,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "9342:3:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41282,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 41280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 41278,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41249,
                          "src": "9361:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "hexValue": "30783030376666666666",
                          "id": 41279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9369:10:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8388607_by_1",
                            "typeString": "int_const 8388607"
                          },
                          "value": "0x007fffff"
                        },
                        "src": "9361:18:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 41277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9357:3:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 41276,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "9357:3:117",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 41281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9357:23:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9342:38:117"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 41286,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41283,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41261,
                      "src": "9448:8:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 41285,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "-",
                      "prefix": true,
                      "src": "9460:4:117",
                      "subExpression": {
                        "hexValue": "313237",
                        "id": 41284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9461:3:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_127_by_1",
                          "typeString": "int_const 127"
                        },
                        "value": "127"
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_minus_127_by_1",
                        "typeString": "int_const -127"
                      }
                    },
                    "src": "9448:16:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 41294,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 41292,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41261,
                        "src": "9513:8:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "313238",
                        "id": 41293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9525:3:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_128_by_1",
                          "typeString": "int_const 128"
                        },
                        "value": "128"
                      },
                      "src": "9513:15:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 41313,
                    "nodeType": "IfStatement",
                    "src": "9509:207:117",
                    "trueBody": {
                      "id": 41312,
                      "nodeType": "Block",
                      "src": "9530:186:117",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "5769746e65744275666665722e72656164466c6f617433323a20",
                                        "id": 41300,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9592:28:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_be0cb2789421943803792602cd42479bd61d90cbfea056011c494e84e6306fc0",
                                          "typeString": "literal_string \"WitnetBuffer.readFloat32: \""
                                        },
                                        "value": "WitnetBuffer.readFloat32: "
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 41303,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 41301,
                                            "name": "sign",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 41255,
                                            "src": "9633:4:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 41302,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9641:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "9633:9:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "hexValue": "",
                                          "id": 41305,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "hexString",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9658:5:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          },
                                          "value": ""
                                        },
                                        "id": 41306,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "9633:30:117",
                                        "trueExpression": {
                                          "hexValue": "6e65676174697665",
                                          "id": 41304,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9645:10:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_5c5e2f1fbc734e42aa272c3420aeb7631dc1efac79a3bf6e1303c2b8c0ccc2e4",
                                            "typeString": "literal_string \"negative\""
                                          },
                                          "value": "negative"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "hexValue": "20696e66696e697479",
                                        "id": 41307,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9676:11:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_91f1a0a624b4b9daa319ca31429bf6584116647ceaf3a744bd0f4c2aad95b621",
                                          "typeString": "literal_string \" infinity\""
                                        },
                                        "value": " infinity"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_be0cb2789421943803792602cd42479bd61d90cbfea056011c494e84e6306fc0",
                                          "typeString": "literal_string \"WitnetBuffer.readFloat32: \""
                                        },
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_91f1a0a624b4b9daa319ca31429bf6584116647ceaf3a744bd0f4c2aad95b621",
                                          "typeString": "literal_string \" infinity\""
                                        }
                                      ],
                                      "expression": {
                                        "id": 41298,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "9563:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 41299,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "9567:12:117",
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "src": "9563:16:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 41308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9563:135:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 41297,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9556:6:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 41296,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9556:6:117",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 41309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9556:143:117",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 41295,
                              "name": "revert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                4294967277,
                                4294967277
                              ],
                              "referencedDeclaration": 4294967277,
                              "src": "9539:6:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (string memory) pure"
                              }
                            },
                            "id": 41310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9539:169:117",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 41311,
                          "nodeType": "ExpressionStatement",
                          "src": "9539:169:117"
                        }
                      ]
                    }
                  },
                  "id": 41314,
                  "nodeType": "IfStatement",
                  "src": "9444:272:117",
                  "trueBody": {
                    "id": 41291,
                    "nodeType": "Block",
                    "src": "9466:37:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41287,
                            "name": "fraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41275,
                            "src": "9475:8:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "hexValue": "3078383030303030",
                            "id": 41288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9487:8:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8388608_by_1",
                              "typeString": "int_const 8388608"
                            },
                            "value": "0x800000"
                          },
                          "src": "9475:20:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 41290,
                        "nodeType": "ExpressionStatement",
                        "src": "9475:20:117"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 41317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41315,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41261,
                      "src": "9782:8:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 41316,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9794:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9782:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 41364,
                    "nodeType": "Block",
                    "src": "9924:124:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41341,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41246,
                            "src": "9933:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 41361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 41358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 41347,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 41342,
                                      "name": "fraction",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41275,
                                      "src": "9953:8:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_rational_1000000000_by_1",
                                            "typeString": "int_const 1000000000"
                                          },
                                          "id": 41345,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 41343,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9977:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "hexValue": "39",
                                            "id": 41344,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9983:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_9_by_1",
                                              "typeString": "int_const 9"
                                            },
                                            "value": "9"
                                          },
                                          "src": "9977:7:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000_by_1",
                                            "typeString": "int_const 1000000000"
                                          }
                                        }
                                      ],
                                      "id": 41346,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9976:9:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000_by_1",
                                        "typeString": "int_const 1000000000"
                                      }
                                    },
                                    "src": "9953:32:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 41356,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "31",
                                          "id": 41350,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10003:1:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "id": 41354,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "-",
                                              "prefix": true,
                                              "src": "10013:9:117",
                                              "subExpression": {
                                                "id": 41353,
                                                "name": "exponent",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 41261,
                                                "src": "10014:8:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            ],
                                            "id": 41352,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "10008:4:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 41351,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "10008:4:117",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 41355,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10008:15:117",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "10003:20:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 41349,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9999:3:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 41348,
                                        "name": "int",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9999:3:117",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 41357,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9999:25:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "9953:71:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "id": 41359,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9942:92:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "3233",
                              "id": 41360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10038:2:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_23_by_1",
                                "typeString": "int_const 23"
                              },
                              "value": "23"
                            },
                            "src": "9942:98:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "9933:107:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 41363,
                        "nodeType": "ExpressionStatement",
                        "src": "9933:107:117"
                      }
                    ]
                  },
                  "id": 41365,
                  "nodeType": "IfStatement",
                  "src": "9778:270:117",
                  "trueBody": {
                    "id": 41340,
                    "nodeType": "Block",
                    "src": "9797:121:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41318,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41246,
                            "src": "9806:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 41337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 41334,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 41332,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 41326,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "31",
                                            "id": 41321,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9830:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "id": 41324,
                                                "name": "exponent",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 41261,
                                                "src": "9840:8:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "id": 41323,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "9835:4:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 41322,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9835:4:117",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 41325,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9835:14:117",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "9830:19:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 41320,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9826:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 41319,
                                          "name": "int",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9826:3:117",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 41327,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9826:24:117",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_rational_1000000000_by_1",
                                            "typeString": "int_const 1000000000"
                                          },
                                          "id": 41330,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 41328,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9865:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "hexValue": "39",
                                            "id": 41329,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9871:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_9_by_1",
                                              "typeString": "int_const 9"
                                            },
                                            "value": "9"
                                          },
                                          "src": "9865:7:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000_by_1",
                                            "typeString": "int_const 1000000000"
                                          }
                                        }
                                      ],
                                      "id": 41331,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9864:9:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000_by_1",
                                        "typeString": "int_const 1000000000"
                                      }
                                    },
                                    "src": "9826:47:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 41333,
                                    "name": "fraction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 41275,
                                    "src": "9887:8:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "9826:69:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "id": 41335,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9815:89:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "3233",
                              "id": 41336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9908:2:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_23_by_1",
                                "typeString": "int_const 23"
                              },
                              "value": "23"
                            },
                            "src": "9815:95:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "9806:104:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 41339,
                        "nodeType": "ExpressionStatement",
                        "src": "9806:104:117"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41366,
                      "name": "sign",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41255,
                      "src": "10116:4:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 41367,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10124:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10116:9:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 41375,
                  "nodeType": "IfStatement",
                  "src": "10112:44:117",
                  "trueBody": {
                    "id": 41374,
                    "nodeType": "Block",
                    "src": "10127:29:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41369,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41246,
                            "src": "10136:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "id": 41371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "10146:2:117",
                            "subExpression": {
                              "hexValue": "31",
                              "id": 41370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10147:1:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          },
                          "src": "10136:12:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 41373,
                        "nodeType": "ExpressionStatement",
                        "src": "10136:12:117"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 41240,
              "nodeType": "StructuredDocumentation",
              "src": "8202:734:117",
              "text": "@notice Consume the next 4 bytes from the buffer as an IEEE 754-2008 floating point number enclosed into an `int`.\n @dev Due to the lack of support for floating or fixed point arithmetic in the EVM, this method offsets all values\n by 9 decimal orders so as to get a fixed precision of 9 decimal positions, which should be OK for most `float32`\n use cases. In other words, the integer output of this method is 10^9 times the actual value. The input bytes are\n expected to follow the 64-bit base-2 format (a.k.a. `binary32`) in the IEEE 754-2008 standard.\n @param buffer An instance of `Buffer`.\n @return result The `int` value of the next 8 bytes in the buffer counting from the cursor position."
            },
            "id": 41377,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readFloat32",
            "nameLocation": "8949:11:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41244,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41243,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "8975:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41377,
                  "src": "8961:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41242,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41241,
                      "name": "Buffer",
                      "nameLocations": [
                        "8961:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "8961:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "8961:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8960:22:117"
            },
            "returnParameters": {
              "id": 41247,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41246,
                  "mutability": "mutable",
                  "name": "result",
                  "nameLocation": "9020:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41377,
                  "src": "9016:10:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 41245,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "9016:3:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9015:12:117"
            },
            "scope": 42631,
            "src": "8940:1221:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41514,
              "nodeType": "Block",
              "src": "10999:1171:117",
              "statements": [
                {
                  "assignments": [
                    41387
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41387,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "11011:5:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41514,
                      "src": "11006:10:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 41386,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11006:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41391,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 41389,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41381,
                        "src": "11030:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      ],
                      "id": 41388,
                      "name": "readUint64",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41809,
                      "src": "11019:10:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$returns$_t_uint64_$",
                        "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint64)"
                      }
                    },
                    "id": 41390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11019:18:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11006:31:117"
                },
                {
                  "assignments": [
                    41393
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41393,
                      "mutability": "mutable",
                      "name": "sign",
                      "nameLocation": "11079:4:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41514,
                      "src": "11074:9:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 41392,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11074:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41397,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41394,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41387,
                      "src": "11086:5:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&",
                    "rightExpression": {
                      "hexValue": "307838303030303030303030303030303030",
                      "id": 41395,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11094:18:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_9223372036854775808_by_1",
                        "typeString": "int_const 9223372036854775808"
                      },
                      "value": "0x8000000000000000"
                    },
                    "src": "11086:26:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11074:38:117"
                },
                {
                  "assignments": [
                    41399
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41399,
                      "mutability": "mutable",
                      "name": "exponent",
                      "nameLocation": "11241:8:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41514,
                      "src": "11237:12:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 41398,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "11237:3:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41411,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 41410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 41407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 41404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 41402,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41387,
                                  "src": "11257:5:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307837666630303030303030303030303030",
                                  "id": 41403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11265:18:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_9218868437227405312_by_1",
                                    "typeString": "int_const 9218868437227405312"
                                  },
                                  "value": "0x7ff0000000000000"
                                },
                                "src": "11257:26:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 41401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11253:3:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 41400,
                                "name": "int",
                                "nodeType": "ElementaryTypeName",
                                "src": "11253:3:117",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 41405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11253:31:117",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "3532",
                            "id": 41406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11288:2:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_52_by_1",
                              "typeString": "int_const 52"
                            },
                            "value": "52"
                          },
                          "src": "11253:37:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "id": 41408,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "11252:39:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "hexValue": "31303233",
                      "id": 41409,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11294:4:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1023_by_1",
                        "typeString": "int_const 1023"
                      },
                      "value": "1023"
                    },
                    "src": "11252:46:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11237:61:117"
                },
                {
                  "assignments": [
                    41413
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41413,
                      "mutability": "mutable",
                      "name": "fraction",
                      "nameLocation": "11334:8:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41514,
                      "src": "11330:12:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 41412,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "11330:3:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41420,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 41418,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 41416,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41387,
                          "src": "11349:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "hexValue": "307830303066666666666666666666666666",
                          "id": 41417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11357:18:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4503599627370495_by_1",
                            "typeString": "int_const 4503599627370495"
                          },
                          "value": "0x000fffffffffffff"
                        },
                        "src": "11349:26:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 41415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "11345:3:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 41414,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "11345:3:117",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 41419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11345:31:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11330:46:117"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 41424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41421,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41399,
                      "src": "11445:8:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 41423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "-",
                      "prefix": true,
                      "src": "11457:5:117",
                      "subExpression": {
                        "hexValue": "31303233",
                        "id": 41422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11458:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1023_by_1",
                          "typeString": "int_const 1023"
                        },
                        "value": "1023"
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_minus_1023_by_1",
                        "typeString": "int_const -1023"
                      }
                    },
                    "src": "11445:17:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 41432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 41430,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41399,
                        "src": "11519:8:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "31303234",
                        "id": 41431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11531:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1024_by_1",
                          "typeString": "int_const 1024"
                        },
                        "value": "1024"
                      },
                      "src": "11519:16:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 41451,
                    "nodeType": "IfStatement",
                    "src": "11515:208:117",
                    "trueBody": {
                      "id": 41450,
                      "nodeType": "Block",
                      "src": "11537:186:117",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "5769746e65744275666665722e72656164466c6f617436343a20",
                                        "id": 41438,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11599:28:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e27e152ba6f409df83635474e0a4e498ab47d78b85d078a1e6a48e178626ecb5",
                                          "typeString": "literal_string \"WitnetBuffer.readFloat64: \""
                                        },
                                        "value": "WitnetBuffer.readFloat64: "
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 41441,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 41439,
                                            "name": "sign",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 41393,
                                            "src": "11640:4:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 41440,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11648:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "11640:9:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "hexValue": "",
                                          "id": 41443,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "hexString",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11665:5:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          },
                                          "value": ""
                                        },
                                        "id": 41444,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "11640:30:117",
                                        "trueExpression": {
                                          "hexValue": "6e65676174697665",
                                          "id": 41442,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11652:10:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_5c5e2f1fbc734e42aa272c3420aeb7631dc1efac79a3bf6e1303c2b8c0ccc2e4",
                                            "typeString": "literal_string \"negative\""
                                          },
                                          "value": "negative"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "hexValue": "20696e66696e697479",
                                        "id": 41445,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11683:11:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_91f1a0a624b4b9daa319ca31429bf6584116647ceaf3a744bd0f4c2aad95b621",
                                          "typeString": "literal_string \" infinity\""
                                        },
                                        "value": " infinity"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_e27e152ba6f409df83635474e0a4e498ab47d78b85d078a1e6a48e178626ecb5",
                                          "typeString": "literal_string \"WitnetBuffer.readFloat64: \""
                                        },
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_91f1a0a624b4b9daa319ca31429bf6584116647ceaf3a744bd0f4c2aad95b621",
                                          "typeString": "literal_string \" infinity\""
                                        }
                                      ],
                                      "expression": {
                                        "id": 41436,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "11570:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 41437,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "11574:12:117",
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "src": "11570:16:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 41446,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11570:135:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 41435,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11563:6:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 41434,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11563:6:117",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 41447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11563:143:117",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 41433,
                              "name": "revert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                4294967277,
                                4294967277
                              ],
                              "referencedDeclaration": 4294967277,
                              "src": "11546:6:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (string memory) pure"
                              }
                            },
                            "id": 41448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11546:169:117",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 41449,
                          "nodeType": "ExpressionStatement",
                          "src": "11546:169:117"
                        }
                      ]
                    }
                  },
                  "id": 41452,
                  "nodeType": "IfStatement",
                  "src": "11441:282:117",
                  "trueBody": {
                    "id": 41429,
                    "nodeType": "Block",
                    "src": "11464:45:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41425,
                            "name": "fraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41413,
                            "src": "11473:8:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "hexValue": "30783130303030303030303030303030",
                            "id": 41426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11485:16:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4503599627370496_by_1",
                              "typeString": "int_const 4503599627370496"
                            },
                            "value": "0x10000000000000"
                          },
                          "src": "11473:28:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 41428,
                        "nodeType": "ExpressionStatement",
                        "src": "11473:28:117"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 41455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41453,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41399,
                      "src": "11789:8:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 41454,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11801:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11789:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 41502,
                    "nodeType": "Block",
                    "src": "11932:125:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41479,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41384,
                            "src": "11941:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 41499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 41496,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 41485,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 41480,
                                      "name": "fraction",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41413,
                                      "src": "11961:8:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000"
                                          },
                                          "id": 41483,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 41481,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11985:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "hexValue": "3135",
                                            "id": 41482,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11991:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_15_by_1",
                                              "typeString": "int_const 15"
                                            },
                                            "value": "15"
                                          },
                                          "src": "11985:8:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000"
                                          }
                                        }
                                      ],
                                      "id": 41484,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "11984:10:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000"
                                      }
                                    },
                                    "src": "11961:33:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 41494,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "31",
                                          "id": 41488,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12012:1:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "id": 41492,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "-",
                                              "prefix": true,
                                              "src": "12022:9:117",
                                              "subExpression": {
                                                "id": 41491,
                                                "name": "exponent",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 41399,
                                                "src": "12023:8:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            ],
                                            "id": 41490,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "12017:4:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 41489,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "12017:4:117",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 41493,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12017:15:117",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "12012:20:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 41487,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12008:3:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 41486,
                                        "name": "int",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12008:3:117",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 41495,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12008:25:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "11961:72:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "id": 41497,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "11950:93:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "3532",
                              "id": 41498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12047:2:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_52_by_1",
                                "typeString": "int_const 52"
                              },
                              "value": "52"
                            },
                            "src": "11950:99:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "11941:108:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 41501,
                        "nodeType": "ExpressionStatement",
                        "src": "11941:108:117"
                      }
                    ]
                  },
                  "id": 41503,
                  "nodeType": "IfStatement",
                  "src": "11785:272:117",
                  "trueBody": {
                    "id": 41478,
                    "nodeType": "Block",
                    "src": "11804:122:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41456,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41384,
                            "src": "11813:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 41475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 41472,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 41470,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 41464,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "31",
                                            "id": 41459,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11837:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "id": 41462,
                                                "name": "exponent",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 41399,
                                                "src": "11847:8:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "id": 41461,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "11842:4:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 41460,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "11842:4:117",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 41463,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "11842:14:117",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "11837:19:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 41458,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "11833:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 41457,
                                          "name": "int",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "11833:3:117",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 41465,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11833:24:117",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000"
                                          },
                                          "id": 41468,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 41466,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11872:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "hexValue": "3135",
                                            "id": 41467,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11878:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_15_by_1",
                                              "typeString": "int_const 15"
                                            },
                                            "value": "15"
                                          },
                                          "src": "11872:8:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000"
                                          }
                                        }
                                      ],
                                      "id": 41469,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "11871:10:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000"
                                      }
                                    },
                                    "src": "11833:48:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 41471,
                                    "name": "fraction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 41413,
                                    "src": "11895:8:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "11833:70:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "id": 41473,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "11822:90:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "3532",
                              "id": 41474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11916:2:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_52_by_1",
                                "typeString": "int_const 52"
                              },
                              "value": "52"
                            },
                            "src": "11822:96:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "11813:105:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 41477,
                        "nodeType": "ExpressionStatement",
                        "src": "11813:105:117"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 41504,
                      "name": "sign",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41393,
                      "src": "12125:4:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 41505,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12133:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "12125:9:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 41513,
                  "nodeType": "IfStatement",
                  "src": "12121:44:117",
                  "trueBody": {
                    "id": 41512,
                    "nodeType": "Block",
                    "src": "12136:29:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 41510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41507,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41384,
                            "src": "12145:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "id": 41509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "12155:2:117",
                            "subExpression": {
                              "hexValue": "31",
                              "id": 41508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12156:1:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          },
                          "src": "12145:12:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 41511,
                        "nodeType": "ExpressionStatement",
                        "src": "12145:12:117"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 41378,
              "nodeType": "StructuredDocumentation",
              "src": "10167:737:117",
              "text": "@notice Consume the next 8 bytes from the buffer as an IEEE 754-2008 floating point number enclosed into an `int`.\n @dev Due to the lack of support for floating or fixed point arithmetic in the EVM, this method offsets all values\n by 15 decimal orders so as to get a fixed precision of 15 decimal positions, which should be OK for most `float64`\n use cases. In other words, the integer output of this method is 10^15 times the actual value. The input bytes are\n expected to follow the 64-bit base-2 format (a.k.a. `binary64`) in the IEEE 754-2008 standard.\n @param buffer An instance of `Buffer`.\n @return result The `int` value of the next 8 bytes in the buffer counting from the cursor position."
            },
            "id": 41515,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readFloat64",
            "nameLocation": "10917:11:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41381,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "10943:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41515,
                  "src": "10929:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41380,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41379,
                      "name": "Buffer",
                      "nameLocations": [
                        "10929:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "10929:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "10929:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10928:22:117"
            },
            "returnParameters": {
              "id": 41385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41384,
                  "mutability": "mutable",
                  "name": "result",
                  "nameLocation": "10988:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41515,
                  "src": "10984:10:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 41383,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "10984:3:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10983:12:117"
            },
            "scope": 42631,
            "src": "10908:1262:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41667,
              "nodeType": "Block",
              "src": "12567:930:117",
              "statements": [
                {
                  "expression": {
                    "id": 41531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 41526,
                      "name": "text",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41524,
                      "src": "12574:4:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 41529,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41521,
                          "src": "12591:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 41528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "12581:9:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (bytes memory)"
                        },
                        "typeName": {
                          "id": 41527,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "12585:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        }
                      },
                      "id": 41530,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12581:17:117",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "12574:24:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 41532,
                  "nodeType": "ExpressionStatement",
                  "src": "12574:24:117"
                },
                {
                  "id": 41666,
                  "nodeType": "UncheckedBlock",
                  "src": "12605:887:117",
                  "statements": [
                    {
                      "body": {
                        "id": 41663,
                        "nodeType": "Block",
                        "src": "12673:715:117",
                        "statements": [
                          {
                            "assignments": [
                              41544
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 41544,
                                "mutability": "mutable",
                                "name": "char",
                                "nameLocation": "12690:4:117",
                                "nodeType": "VariableDeclaration",
                                "scope": 41663,
                                "src": "12684:10:117",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "typeName": {
                                  "id": 41543,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12684:5:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 41548,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 41546,
                                  "name": "buffer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41519,
                                  "src": "12707:6:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                    "typeString": "struct WitnetBuffer.Buffer memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                    "typeString": "struct WitnetBuffer.Buffer memory"
                                  }
                                ],
                                "id": 41545,
                                "name": "readUint8",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 41701,
                                "src": "12697:9:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$returns$_t_uint8_$",
                                  "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                }
                              },
                              "id": 41547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12697:17:117",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12684:30:117"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 41553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 41551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 41549,
                                  "name": "char",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41544,
                                  "src": "12729:4:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783830",
                                  "id": 41550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12736:4:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_128_by_1",
                                    "typeString": "int_const 128"
                                  },
                                  "value": "0x80"
                                },
                                "src": "12729:11:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 41552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12744:1:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12729:16:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 41653,
                            "nodeType": "IfStatement",
                            "src": "12725:617:117",
                            "trueBody": {
                              "id": 41652,
                              "nodeType": "Block",
                              "src": "12747:595:117",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 41556,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 41554,
                                      "name": "char",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41544,
                                      "src": "12764:4:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "hexValue": "30786530",
                                      "id": 41555,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12771:4:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_224_by_1",
                                        "typeString": "int_const 224"
                                      },
                                      "value": "0xe0"
                                    },
                                    "src": "12764:11:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 41580,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 41578,
                                        "name": "char",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 41544,
                                        "src": "12911:4:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "hexValue": "30786630",
                                        "id": 41579,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12918:4:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_240_by_1",
                                          "typeString": "int_const 240"
                                        },
                                        "value": "0xf0"
                                      },
                                      "src": "12911:11:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 41649,
                                      "nodeType": "Block",
                                      "src": "13105:226:117",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 41643,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 41611,
                                              "name": "char",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 41544,
                                              "src": "13120:4:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "id": 41642,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                },
                                                "id": 41635,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "id": 41626,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    },
                                                    "id": 41617,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "components": [
                                                        {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          },
                                                          "id": 41614,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "id": 41612,
                                                            "name": "char",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 41544,
                                                            "src": "13128:4:117",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint8",
                                                              "typeString": "uint8"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "&",
                                                          "rightExpression": {
                                                            "hexValue": "30783066",
                                                            "id": 41613,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13135:4:117",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_15_by_1",
                                                              "typeString": "int_const 15"
                                                            },
                                                            "value": "0x0f"
                                                          },
                                                          "src": "13128:11:117",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          }
                                                        }
                                                      ],
                                                      "id": 41615,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "TupleExpression",
                                                      "src": "13127:13:117",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<<",
                                                    "rightExpression": {
                                                      "hexValue": "3138",
                                                      "id": 41616,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13144:2:117",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_18_by_1",
                                                        "typeString": "int_const 18"
                                                      },
                                                      "value": "18"
                                                    },
                                                    "src": "13127:19:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "|",
                                                  "rightExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    },
                                                    "id": 41625,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "components": [
                                                        {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          },
                                                          "id": 41622,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "arguments": [
                                                              {
                                                                "id": 41619,
                                                                "name": "buffer",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 41519,
                                                                "src": "13175:6:117",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                                  "typeString": "struct WitnetBuffer.Buffer memory"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                                  "typeString": "struct WitnetBuffer.Buffer memory"
                                                                }
                                                              ],
                                                              "id": 41618,
                                                              "name": "readUint8",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 41701,
                                                              "src": "13165:9:117",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$returns$_t_uint8_$",
                                                                "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                              }
                                                            },
                                                            "id": 41620,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13165:17:117",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint8",
                                                              "typeString": "uint8"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "&",
                                                          "rightExpression": {
                                                            "hexValue": "30783366",
                                                            "id": 41621,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13185:4:117",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_63_by_1",
                                                              "typeString": "int_const 63"
                                                            },
                                                            "value": "0x3f"
                                                          },
                                                          "src": "13165:24:117",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          }
                                                        }
                                                      ],
                                                      "id": 41623,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "TupleExpression",
                                                      "src": "13164:26:117",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<<",
                                                    "rightExpression": {
                                                      "hexValue": "3132",
                                                      "id": 41624,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13194:2:117",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_12_by_1",
                                                        "typeString": "int_const 12"
                                                      },
                                                      "value": "12"
                                                    },
                                                    "src": "13164:32:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "src": "13127:69:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "|",
                                                "rightExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "id": 41634,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        },
                                                        "id": 41631,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "arguments": [
                                                            {
                                                              "id": 41628,
                                                              "name": "buffer",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 41519,
                                                              "src": "13225:6:117",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                                "typeString": "struct WitnetBuffer.Buffer memory"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                                "typeString": "struct WitnetBuffer.Buffer memory"
                                                              }
                                                            ],
                                                            "id": 41627,
                                                            "name": "readUint8",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 41701,
                                                            "src": "13215:9:117",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$returns$_t_uint8_$",
                                                              "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                            }
                                                          },
                                                          "id": 41629,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "13215:17:117",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&",
                                                        "rightExpression": {
                                                          "hexValue": "30783366",
                                                          "id": 41630,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "13235:4:117",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_63_by_1",
                                                            "typeString": "int_const 63"
                                                          },
                                                          "value": "0x3f"
                                                        },
                                                        "src": "13215:24:117",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        }
                                                      }
                                                    ],
                                                    "id": 41632,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "13214:26:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "<<",
                                                  "rightExpression": {
                                                    "hexValue": "36",
                                                    "id": 41633,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "13244:1:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_6_by_1",
                                                      "typeString": "int_const 6"
                                                    },
                                                    "value": "6"
                                                  },
                                                  "src": "13214:31:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "13127:118:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "|",
                                              "rightExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    },
                                                    "id": 41640,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "arguments": [
                                                        {
                                                          "id": 41637,
                                                          "name": "buffer",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 41519,
                                                          "src": "13276:6:117",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                            "typeString": "struct WitnetBuffer.Buffer memory"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                            "typeString": "struct WitnetBuffer.Buffer memory"
                                                          }
                                                        ],
                                                        "id": 41636,
                                                        "name": "readUint8",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 41701,
                                                        "src": "13266:9:117",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$returns$_t_uint8_$",
                                                          "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                        }
                                                      },
                                                      "id": 41638,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "13266:17:117",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&",
                                                    "rightExpression": {
                                                      "hexValue": "30783366",
                                                      "id": 41639,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13286:4:117",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_63_by_1",
                                                        "typeString": "int_const 63"
                                                      },
                                                      "value": "0x3f"
                                                    },
                                                    "src": "13266:24:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  }
                                                ],
                                                "id": 41641,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "13265:26:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "src": "13127:164:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "src": "13120:171:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "id": 41644,
                                          "nodeType": "ExpressionStatement",
                                          "src": "13120:171:117"
                                        },
                                        {
                                          "expression": {
                                            "id": 41647,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 41645,
                                              "name": "length",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 41521,
                                              "src": "13306:6:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "-=",
                                            "rightHandSide": {
                                              "hexValue": "33",
                                              "id": 41646,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13316:1:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_3_by_1",
                                                "typeString": "int_const 3"
                                              },
                                              "value": "3"
                                            },
                                            "src": "13306:11:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "id": 41648,
                                          "nodeType": "ExpressionStatement",
                                          "src": "13306:11:117"
                                        }
                                      ]
                                    },
                                    "id": 41650,
                                    "nodeType": "IfStatement",
                                    "src": "12907:424:117",
                                    "trueBody": {
                                      "id": 41610,
                                      "nodeType": "Block",
                                      "src": "12924:175:117",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 41604,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 41581,
                                              "name": "char",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 41544,
                                              "src": "12939:4:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "id": 41603,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                },
                                                "id": 41596,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "id": 41587,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        },
                                                        "id": 41584,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 41582,
                                                          "name": "char",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 41544,
                                                          "src": "12948:4:117",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&",
                                                        "rightExpression": {
                                                          "hexValue": "30783066",
                                                          "id": 41583,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "12955:4:117",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_15_by_1",
                                                            "typeString": "int_const 15"
                                                          },
                                                          "value": "0x0f"
                                                        },
                                                        "src": "12948:11:117",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        }
                                                      }
                                                    ],
                                                    "id": 41585,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "12947:13:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "<<",
                                                  "rightExpression": {
                                                    "hexValue": "3132",
                                                    "id": 41586,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "12964:2:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_12_by_1",
                                                      "typeString": "int_const 12"
                                                    },
                                                    "value": "12"
                                                  },
                                                  "src": "12947:19:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "|",
                                                "rightExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "id": 41595,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        },
                                                        "id": 41592,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "arguments": [
                                                            {
                                                              "id": 41589,
                                                              "name": "buffer",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 41519,
                                                              "src": "12995:6:117",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                                "typeString": "struct WitnetBuffer.Buffer memory"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                                "typeString": "struct WitnetBuffer.Buffer memory"
                                                              }
                                                            ],
                                                            "id": 41588,
                                                            "name": "readUint8",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 41701,
                                                            "src": "12985:9:117",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$returns$_t_uint8_$",
                                                              "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                            }
                                                          },
                                                          "id": 41590,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "12985:17:117",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&",
                                                        "rightExpression": {
                                                          "hexValue": "30783366",
                                                          "id": 41591,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "13005:4:117",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_63_by_1",
                                                            "typeString": "int_const 63"
                                                          },
                                                          "value": "0x3f"
                                                        },
                                                        "src": "12985:24:117",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        }
                                                      }
                                                    ],
                                                    "id": 41593,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "12984:26:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "<<",
                                                  "rightExpression": {
                                                    "hexValue": "36",
                                                    "id": 41594,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "13014:1:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_6_by_1",
                                                      "typeString": "int_const 6"
                                                    },
                                                    "value": "6"
                                                  },
                                                  "src": "12984:31:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "12947:68:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "|",
                                              "rightExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    },
                                                    "id": 41601,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "arguments": [
                                                        {
                                                          "id": 41598,
                                                          "name": "buffer",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 41519,
                                                          "src": "13044:6:117",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                            "typeString": "struct WitnetBuffer.Buffer memory"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                            "typeString": "struct WitnetBuffer.Buffer memory"
                                                          }
                                                        ],
                                                        "id": 41597,
                                                        "name": "readUint8",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 41701,
                                                        "src": "13034:9:117",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$returns$_t_uint8_$",
                                                          "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                        }
                                                      },
                                                      "id": 41599,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "13034:17:117",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&",
                                                    "rightExpression": {
                                                      "hexValue": "30783366",
                                                      "id": 41600,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13054:4:117",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_63_by_1",
                                                        "typeString": "int_const 63"
                                                      },
                                                      "value": "0x3f"
                                                    },
                                                    "src": "13034:24:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  }
                                                ],
                                                "id": 41602,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "13033:26:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "src": "12947:112:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "src": "12939:120:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "id": 41605,
                                          "nodeType": "ExpressionStatement",
                                          "src": "12939:120:117"
                                        },
                                        {
                                          "expression": {
                                            "id": 41608,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 41606,
                                              "name": "length",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 41521,
                                              "src": "13074:6:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "-=",
                                            "rightHandSide": {
                                              "hexValue": "32",
                                              "id": 41607,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13084:1:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_2_by_1",
                                                "typeString": "int_const 2"
                                              },
                                              "value": "2"
                                            },
                                            "src": "13074:11:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "id": 41609,
                                          "nodeType": "ExpressionStatement",
                                          "src": "13074:11:117"
                                        }
                                      ]
                                    }
                                  },
                                  "id": 41651,
                                  "nodeType": "IfStatement",
                                  "src": "12760:571:117",
                                  "trueBody": {
                                    "id": 41577,
                                    "nodeType": "Block",
                                    "src": "12777:124:117",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 41571,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 41557,
                                            "name": "char",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 41544,
                                            "src": "12792:4:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            },
                                            "id": 41570,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "id": 41563,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    },
                                                    "id": 41560,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 41558,
                                                      "name": "char",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 41544,
                                                      "src": "12800:4:117",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&",
                                                    "rightExpression": {
                                                      "hexValue": "30783166",
                                                      "id": 41559,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "12807:4:117",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_31_by_1",
                                                        "typeString": "int_const 31"
                                                      },
                                                      "value": "0x1f"
                                                    },
                                                    "src": "12800:11:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  }
                                                ],
                                                "id": 41561,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "12799:13:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "<<",
                                              "rightExpression": {
                                                "hexValue": "36",
                                                "id": 41562,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12816:1:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_6_by_1",
                                                  "typeString": "int_const 6"
                                                },
                                                "value": "6"
                                              },
                                              "src": "12799:18:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "|",
                                            "rightExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "id": 41568,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "arguments": [
                                                      {
                                                        "id": 41565,
                                                        "name": "buffer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 41519,
                                                        "src": "12846:6:117",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                          "typeString": "struct WitnetBuffer.Buffer memory"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                                          "typeString": "struct WitnetBuffer.Buffer memory"
                                                        }
                                                      ],
                                                      "id": 41564,
                                                      "name": "readUint8",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 41701,
                                                      "src": "12836:9:117",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$returns$_t_uint8_$",
                                                        "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                      }
                                                    },
                                                    "id": 41566,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12836:17:117",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "&",
                                                  "rightExpression": {
                                                    "hexValue": "30783366",
                                                    "id": 41567,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "12856:4:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_63_by_1",
                                                      "typeString": "int_const 63"
                                                    },
                                                    "value": "0x3f"
                                                  },
                                                  "src": "12836:24:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                }
                                              ],
                                              "id": 41569,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "12835:26:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "src": "12799:62:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "12792:69:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "id": 41572,
                                        "nodeType": "ExpressionStatement",
                                        "src": "12792:69:117"
                                      },
                                      {
                                        "expression": {
                                          "id": 41575,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 41573,
                                            "name": "length",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 41521,
                                            "src": "12876:6:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "-=",
                                          "rightHandSide": {
                                            "hexValue": "31",
                                            "id": 41574,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12886:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "12876:11:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        },
                                        "id": 41576,
                                        "nodeType": "ExpressionStatement",
                                        "src": "12876:11:117"
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "id": 41661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 41654,
                                  "name": "text",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41524,
                                  "src": "13352:4:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 41656,
                                "indexExpression": {
                                  "id": 41655,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 41534,
                                  "src": "13357:5:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "13352:11:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 41659,
                                    "name": "char",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 41544,
                                    "src": "13373:4:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "id": 41658,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13366:6:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes1_$",
                                    "typeString": "type(bytes1)"
                                  },
                                  "typeName": {
                                    "id": 41657,
                                    "name": "bytes1",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13366:6:117",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 41660,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13366:12:117",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "src": "13352:26:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "id": 41662,
                            "nodeType": "ExpressionStatement",
                            "src": "13352:26:117"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 41539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 41537,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41534,
                          "src": "12647:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 41538,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41521,
                          "src": "12655:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "12647:14:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 41664,
                      "initializationExpression": {
                        "assignments": [
                          41534
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 41534,
                            "mutability": "mutable",
                            "name": "index",
                            "nameLocation": "12636:5:117",
                            "nodeType": "VariableDeclaration",
                            "scope": 41664,
                            "src": "12629:12:117",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 41533,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "12629:6:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 41536,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 41535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12644:1:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12629:16:117"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 41541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "12663:8:117",
                          "subExpression": {
                            "id": 41540,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41534,
                            "src": "12663:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 41542,
                        "nodeType": "ExpressionStatement",
                        "src": "12663:8:117"
                      },
                      "nodeType": "ForStatement",
                      "src": "12624:764:117"
                    },
                    {
                      "AST": {
                        "nativeSrc": "13445:40:117",
                        "nodeType": "YulBlock",
                        "src": "13445:40:117",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "text",
                                  "nativeSrc": "13463:4:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "13463:4:117"
                                },
                                {
                                  "name": "length",
                                  "nativeSrc": "13469:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "13469:6:117"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "13456:6:117",
                                "nodeType": "YulIdentifier",
                                "src": "13456:6:117"
                              },
                              "nativeSrc": "13456:20:117",
                              "nodeType": "YulFunctionCall",
                              "src": "13456:20:117"
                            },
                            "nativeSrc": "13456:20:117",
                            "nodeType": "YulExpressionStatement",
                            "src": "13456:20:117"
                          }
                        ]
                      },
                      "evmVersion": "prague",
                      "externalReferences": [
                        {
                          "declaration": 41521,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "13469:6:117",
                          "valueSize": 1
                        },
                        {
                          "declaration": 41524,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "13463:4:117",
                          "valueSize": 1
                        }
                      ],
                      "id": 41665,
                      "nodeType": "InlineAssembly",
                      "src": "13436:49:117"
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 41516,
              "nodeType": "StructuredDocumentation",
              "src": "12294:68:117",
              "text": "but it can be easily casted into a string with `string(result)`."
            },
            "id": 41668,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readText",
            "nameLocation": "12432:8:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41522,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41519,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "12476:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41668,
                  "src": "12449:33:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41518,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41517,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "12449:12:117",
                        "12462:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "12449:19:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "12449:19:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 41521,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "12498:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41668,
                  "src": "12491:13:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 41520,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "12491:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12440:71:117"
            },
            "returnParameters": {
              "id": 41525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41524,
                  "mutability": "mutable",
                  "name": "text",
                  "nameLocation": "12558:4:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41668,
                  "src": "12545:17:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 41523,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12545:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12544:19:117"
            },
            "scope": 42631,
            "src": "12423:1074:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41700,
              "nodeType": "Block",
              "src": "13873:173:117",
              "statements": [
                {
                  "assignments": [
                    41685
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41685,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "13893:4:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41700,
                      "src": "13880:17:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 41684,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13880:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41688,
                  "initialValue": {
                    "expression": {
                      "id": 41686,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41672,
                      "src": "13900:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41687,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "13907:4:117",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40761,
                    "src": "13900:11:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13880:31:117"
                },
                {
                  "assignments": [
                    41690
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41690,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "13923:6:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41700,
                      "src": "13918:11:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 41689,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13918:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41693,
                  "initialValue": {
                    "expression": {
                      "id": 41691,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41672,
                      "src": "13932:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41692,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "13939:6:117",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40763,
                    "src": "13932:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13918:27:117"
                },
                {
                  "AST": {
                    "nativeSrc": "13961:57:117",
                    "nodeType": "YulBlock",
                    "src": "13961:57:117",
                    "statements": [
                      {
                        "nativeSrc": "13970:41:117",
                        "nodeType": "YulAssignment",
                        "src": "13970:41:117",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "13993:4:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "13993:4:117"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "13999:1:117",
                                      "nodeType": "YulLiteral",
                                      "src": "13999:1:117",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "13989:3:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "13989:3:117"
                                  },
                                  "nativeSrc": "13989:12:117",
                                  "nodeType": "YulFunctionCall",
                                  "src": "13989:12:117"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "14003:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "14003:6:117"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "13985:3:117",
                                "nodeType": "YulIdentifier",
                                "src": "13985:3:117"
                              },
                              "nativeSrc": "13985:25:117",
                              "nodeType": "YulFunctionCall",
                              "src": "13985:25:117"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "13979:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "13979:5:117"
                          },
                          "nativeSrc": "13979:32:117",
                          "nodeType": "YulFunctionCall",
                          "src": "13979:32:117"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "13970:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "13970:5:117"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 41685,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "13993:4:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41690,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14003:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41682,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "13970:5:117",
                      "valueSize": 1
                    }
                  ],
                  "id": 41694,
                  "nodeType": "InlineAssembly",
                  "src": "13952:66:117"
                },
                {
                  "expression": {
                    "id": 41698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "14024:16:117",
                    "subExpression": {
                      "expression": {
                        "id": 41695,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41672,
                        "src": "14024:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41697,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "14031:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "14024:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 41699,
                  "nodeType": "ExpressionStatement",
                  "src": "14024:16:117"
                }
              ]
            },
            "documentation": {
              "id": 41669,
              "nodeType": "StructuredDocumentation",
              "src": "13503:224:117",
              "text": "@notice Read and consume the next byte from the buffer as an `uint8`.\n @param buffer An instance of `Buffer`.\n @return value The `uint8` value of the next byte in the buffer counting from the cursor position."
            },
            "id": 41701,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 41675,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41672,
                      "src": "13808:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41676,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "13815:6:117",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40763,
                    "src": "13808:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 41677,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41672,
                        "src": "13823:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41678,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13830:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "13823:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 41679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "13835:6:117",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "13823:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 41680,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 41674,
                  "name": "withinRange",
                  "nameLocations": [
                    "13796:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "13796:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "13796:46:117"
              }
            ],
            "name": "readUint8",
            "nameLocation": "13740:9:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41673,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41672,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "13764:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41701,
                  "src": "13750:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41671,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41670,
                      "name": "Buffer",
                      "nameLocations": [
                        "13750:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "13750:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "13750:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13749:22:117"
            },
            "returnParameters": {
              "id": 41683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41682,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "13863:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41701,
                  "src": "13857:11:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 41681,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "13857:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13856:13:117"
            },
            "scope": 42631,
            "src": "13731:315:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41736,
              "nodeType": "Block",
              "src": "14436:175:117",
              "statements": [
                {
                  "assignments": [
                    41720
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41720,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "14456:4:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41736,
                      "src": "14443:17:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 41719,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14443:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41723,
                  "initialValue": {
                    "expression": {
                      "id": 41721,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41705,
                      "src": "14463:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41722,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "14470:4:117",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40761,
                    "src": "14463:11:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14443:31:117"
                },
                {
                  "assignments": [
                    41725
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41725,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "14486:6:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41736,
                      "src": "14481:11:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 41724,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14481:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41728,
                  "initialValue": {
                    "expression": {
                      "id": 41726,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41705,
                      "src": "14495:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41727,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "14502:6:117",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40763,
                    "src": "14495:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14481:27:117"
                },
                {
                  "AST": {
                    "nativeSrc": "14524:57:117",
                    "nodeType": "YulBlock",
                    "src": "14524:57:117",
                    "statements": [
                      {
                        "nativeSrc": "14533:41:117",
                        "nodeType": "YulAssignment",
                        "src": "14533:41:117",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "14556:4:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "14556:4:117"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "14562:1:117",
                                      "nodeType": "YulLiteral",
                                      "src": "14562:1:117",
                                      "type": "",
                                      "value": "2"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "14552:3:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "14552:3:117"
                                  },
                                  "nativeSrc": "14552:12:117",
                                  "nodeType": "YulFunctionCall",
                                  "src": "14552:12:117"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "14566:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "14566:6:117"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "14548:3:117",
                                "nodeType": "YulIdentifier",
                                "src": "14548:3:117"
                              },
                              "nativeSrc": "14548:25:117",
                              "nodeType": "YulFunctionCall",
                              "src": "14548:25:117"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "14542:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "14542:5:117"
                          },
                          "nativeSrc": "14542:32:117",
                          "nodeType": "YulFunctionCall",
                          "src": "14542:32:117"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "14533:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "14533:5:117"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 41720,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14556:4:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41725,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14566:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41717,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14533:5:117",
                      "valueSize": 1
                    }
                  ],
                  "id": 41729,
                  "nodeType": "InlineAssembly",
                  "src": "14515:66:117"
                },
                {
                  "expression": {
                    "id": 41734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 41730,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41705,
                        "src": "14587:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41732,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "14594:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "14587:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "32",
                      "id": 41733,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14604:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "14587:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 41735,
                  "nodeType": "ExpressionStatement",
                  "src": "14587:18:117"
                }
              ]
            },
            "documentation": {
              "id": 41702,
              "nodeType": "StructuredDocumentation",
              "src": "14052:232:117",
              "text": "@notice Read and consume the next 2 bytes from the buffer as an `uint16`.\n @param buffer An instance of `Buffer`.\n @return value The `uint16` value of the next 2 bytes in the buffer counting from the cursor position."
            },
            "id": 41737,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 41708,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41705,
                        "src": "14366:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41709,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14373:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "14366:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "32",
                      "id": 41710,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14382:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "14366:17:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 41712,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41705,
                        "src": "14385:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41713,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14392:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "14385:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 41714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "14397:6:117",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "14385:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 41715,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 41707,
                  "name": "withinRange",
                  "nameLocations": [
                    "14354:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "14354:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "14354:50:117"
              }
            ],
            "name": "readUint16",
            "nameLocation": "14297:10:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41705,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "14322:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41737,
                  "src": "14308:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41704,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41703,
                      "name": "Buffer",
                      "nameLocations": [
                        "14308:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "14308:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "14308:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14307:22:117"
            },
            "returnParameters": {
              "id": 41718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41717,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "14426:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41737,
                  "src": "14419:12:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 41716,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "14419:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14418:14:117"
            },
            "scope": 42631,
            "src": "14288:323:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41772,
              "nodeType": "Block",
              "src": "15001:175:117",
              "statements": [
                {
                  "assignments": [
                    41756
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41756,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "15021:4:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41772,
                      "src": "15008:17:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 41755,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "15008:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41759,
                  "initialValue": {
                    "expression": {
                      "id": 41757,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41741,
                      "src": "15028:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41758,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15035:4:117",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40761,
                    "src": "15028:11:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15008:31:117"
                },
                {
                  "assignments": [
                    41761
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41761,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "15051:6:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41772,
                      "src": "15046:11:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 41760,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15046:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41764,
                  "initialValue": {
                    "expression": {
                      "id": 41762,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41741,
                      "src": "15060:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41763,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15067:6:117",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40763,
                    "src": "15060:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15046:27:117"
                },
                {
                  "AST": {
                    "nativeSrc": "15089:57:117",
                    "nodeType": "YulBlock",
                    "src": "15089:57:117",
                    "statements": [
                      {
                        "nativeSrc": "15098:41:117",
                        "nodeType": "YulAssignment",
                        "src": "15098:41:117",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "15121:4:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "15121:4:117"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "15127:1:117",
                                      "nodeType": "YulLiteral",
                                      "src": "15127:1:117",
                                      "type": "",
                                      "value": "4"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "15117:3:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "15117:3:117"
                                  },
                                  "nativeSrc": "15117:12:117",
                                  "nodeType": "YulFunctionCall",
                                  "src": "15117:12:117"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "15131:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "15131:6:117"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "15113:3:117",
                                "nodeType": "YulIdentifier",
                                "src": "15113:3:117"
                              },
                              "nativeSrc": "15113:25:117",
                              "nodeType": "YulFunctionCall",
                              "src": "15113:25:117"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "15107:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "15107:5:117"
                          },
                          "nativeSrc": "15107:32:117",
                          "nodeType": "YulFunctionCall",
                          "src": "15107:32:117"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "15098:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "15098:5:117"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 41756,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15121:4:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41761,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15131:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41753,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15098:5:117",
                      "valueSize": 1
                    }
                  ],
                  "id": 41765,
                  "nodeType": "InlineAssembly",
                  "src": "15080:66:117"
                },
                {
                  "expression": {
                    "id": 41770,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 41766,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41741,
                        "src": "15152:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41768,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "15159:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "15152:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "34",
                      "id": 41769,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15169:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "15152:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 41771,
                  "nodeType": "ExpressionStatement",
                  "src": "15152:18:117"
                }
              ]
            },
            "documentation": {
              "id": 41738,
              "nodeType": "StructuredDocumentation",
              "src": "14617:232:117",
              "text": "@notice Read and consume the next 4 bytes from the buffer as an `uint32`.\n @param buffer An instance of `Buffer`.\n @return value The `uint32` value of the next 4 bytes in the buffer counting from the cursor position."
            },
            "id": 41773,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 41744,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41741,
                        "src": "14931:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41745,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14938:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "14931:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "34",
                      "id": 41746,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14947:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "14931:17:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 41748,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41741,
                        "src": "14950:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41749,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14957:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "14950:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 41750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "14962:6:117",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "14950:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 41751,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 41743,
                  "name": "withinRange",
                  "nameLocations": [
                    "14919:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "14919:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "14919:50:117"
              }
            ],
            "name": "readUint32",
            "nameLocation": "14862:10:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41741,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "14887:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41773,
                  "src": "14873:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41740,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41739,
                      "name": "Buffer",
                      "nameLocations": [
                        "14873:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "14873:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "14873:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14872:22:117"
            },
            "returnParameters": {
              "id": 41754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41753,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "14991:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41773,
                  "src": "14984:12:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 41752,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14984:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14983:14:117"
            },
            "scope": 42631,
            "src": "14853:323:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41808,
              "nodeType": "Block",
              "src": "15566:175:117",
              "statements": [
                {
                  "assignments": [
                    41792
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41792,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "15586:4:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41808,
                      "src": "15573:17:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 41791,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "15573:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41795,
                  "initialValue": {
                    "expression": {
                      "id": 41793,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41777,
                      "src": "15593:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41794,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15600:4:117",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40761,
                    "src": "15593:11:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15573:31:117"
                },
                {
                  "assignments": [
                    41797
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41797,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "15616:6:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41808,
                      "src": "15611:11:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 41796,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15611:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41800,
                  "initialValue": {
                    "expression": {
                      "id": 41798,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41777,
                      "src": "15625:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41799,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15632:6:117",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40763,
                    "src": "15625:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15611:27:117"
                },
                {
                  "AST": {
                    "nativeSrc": "15654:57:117",
                    "nodeType": "YulBlock",
                    "src": "15654:57:117",
                    "statements": [
                      {
                        "nativeSrc": "15663:41:117",
                        "nodeType": "YulAssignment",
                        "src": "15663:41:117",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "15686:4:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "15686:4:117"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "15692:1:117",
                                      "nodeType": "YulLiteral",
                                      "src": "15692:1:117",
                                      "type": "",
                                      "value": "8"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "15682:3:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "15682:3:117"
                                  },
                                  "nativeSrc": "15682:12:117",
                                  "nodeType": "YulFunctionCall",
                                  "src": "15682:12:117"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "15696:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "15696:6:117"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "15678:3:117",
                                "nodeType": "YulIdentifier",
                                "src": "15678:3:117"
                              },
                              "nativeSrc": "15678:25:117",
                              "nodeType": "YulFunctionCall",
                              "src": "15678:25:117"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "15672:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "15672:5:117"
                          },
                          "nativeSrc": "15672:32:117",
                          "nodeType": "YulFunctionCall",
                          "src": "15672:32:117"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "15663:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "15663:5:117"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 41792,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15686:4:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41797,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15696:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41789,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15663:5:117",
                      "valueSize": 1
                    }
                  ],
                  "id": 41801,
                  "nodeType": "InlineAssembly",
                  "src": "15645:66:117"
                },
                {
                  "expression": {
                    "id": 41806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 41802,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41777,
                        "src": "15717:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41804,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "15724:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "15717:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "38",
                      "id": 41805,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15734:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_8_by_1",
                        "typeString": "int_const 8"
                      },
                      "value": "8"
                    },
                    "src": "15717:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 41807,
                  "nodeType": "ExpressionStatement",
                  "src": "15717:18:117"
                }
              ]
            },
            "documentation": {
              "id": 41774,
              "nodeType": "StructuredDocumentation",
              "src": "15182:232:117",
              "text": "@notice Read and consume the next 8 bytes from the buffer as an `uint64`.\n @param buffer An instance of `Buffer`.\n @return value The `uint64` value of the next 8 bytes in the buffer counting from the cursor position."
            },
            "id": 41809,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41783,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 41780,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41777,
                        "src": "15496:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41781,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15503:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "15496:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "38",
                      "id": 41782,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15512:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_8_by_1",
                        "typeString": "int_const 8"
                      },
                      "value": "8"
                    },
                    "src": "15496:17:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 41784,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41777,
                        "src": "15515:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41785,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15522:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "15515:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 41786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15527:6:117",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "15515:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 41787,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 41779,
                  "name": "withinRange",
                  "nameLocations": [
                    "15484:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "15484:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "15484:50:117"
              }
            ],
            "name": "readUint64",
            "nameLocation": "15427:10:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41777,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "15452:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41809,
                  "src": "15438:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41776,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41775,
                      "name": "Buffer",
                      "nameLocations": [
                        "15438:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "15438:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "15438:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15437:22:117"
            },
            "returnParameters": {
              "id": 41790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41789,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "15556:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41809,
                  "src": "15549:12:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 41788,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "15549:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15548:14:117"
            },
            "scope": 42631,
            "src": "15418:323:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41844,
              "nodeType": "Block",
              "src": "16138:177:117",
              "statements": [
                {
                  "assignments": [
                    41828
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41828,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "16158:4:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41844,
                      "src": "16145:17:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 41827,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "16145:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41831,
                  "initialValue": {
                    "expression": {
                      "id": 41829,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41813,
                      "src": "16165:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41830,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16172:4:117",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40761,
                    "src": "16165:11:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16145:31:117"
                },
                {
                  "assignments": [
                    41833
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41833,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "16188:6:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41844,
                      "src": "16183:11:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 41832,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16183:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41836,
                  "initialValue": {
                    "expression": {
                      "id": 41834,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41813,
                      "src": "16197:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41835,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16204:6:117",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40763,
                    "src": "16197:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16183:27:117"
                },
                {
                  "AST": {
                    "nativeSrc": "16226:58:117",
                    "nodeType": "YulBlock",
                    "src": "16226:58:117",
                    "statements": [
                      {
                        "nativeSrc": "16235:42:117",
                        "nodeType": "YulAssignment",
                        "src": "16235:42:117",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "16258:4:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "16258:4:117"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "16264:2:117",
                                      "nodeType": "YulLiteral",
                                      "src": "16264:2:117",
                                      "type": "",
                                      "value": "16"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "16254:3:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "16254:3:117"
                                  },
                                  "nativeSrc": "16254:13:117",
                                  "nodeType": "YulFunctionCall",
                                  "src": "16254:13:117"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "16269:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "16269:6:117"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "16250:3:117",
                                "nodeType": "YulIdentifier",
                                "src": "16250:3:117"
                              },
                              "nativeSrc": "16250:26:117",
                              "nodeType": "YulFunctionCall",
                              "src": "16250:26:117"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "16244:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "16244:5:117"
                          },
                          "nativeSrc": "16244:33:117",
                          "nodeType": "YulFunctionCall",
                          "src": "16244:33:117"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "16235:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "16235:5:117"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 41828,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16258:4:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41833,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16269:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41825,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16235:5:117",
                      "valueSize": 1
                    }
                  ],
                  "id": 41837,
                  "nodeType": "InlineAssembly",
                  "src": "16217:67:117"
                },
                {
                  "expression": {
                    "id": 41842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 41838,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41813,
                        "src": "16290:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41840,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "16297:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "16290:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "3136",
                      "id": 41841,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16307:2:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_16_by_1",
                        "typeString": "int_const 16"
                      },
                      "value": "16"
                    },
                    "src": "16290:19:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 41843,
                  "nodeType": "ExpressionStatement",
                  "src": "16290:19:117"
                }
              ]
            },
            "documentation": {
              "id": 41810,
              "nodeType": "StructuredDocumentation",
              "src": "15747:236:117",
              "text": "@notice Read and consume the next 16 bytes from the buffer as an `uint128`.\n @param buffer An instance of `Buffer`.\n @return value The `uint128` value of the next 16 bytes in the buffer counting from the cursor position."
            },
            "id": 41845,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 41816,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41813,
                        "src": "16066:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41817,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16073:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "16066:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "3136",
                      "id": 41818,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16082:2:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_16_by_1",
                        "typeString": "int_const 16"
                      },
                      "value": "16"
                    },
                    "src": "16066:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 41820,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41813,
                        "src": "16086:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41821,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16093:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "16086:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 41822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16098:6:117",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "16086:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 41823,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 41815,
                  "name": "withinRange",
                  "nameLocations": [
                    "16054:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "16054:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "16054:51:117"
              }
            ],
            "name": "readUint128",
            "nameLocation": "15996:11:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41813,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "16022:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41845,
                  "src": "16008:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41812,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41811,
                      "name": "Buffer",
                      "nameLocations": [
                        "16008:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "16008:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "16008:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16007:22:117"
            },
            "returnParameters": {
              "id": 41826,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41825,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "16128:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41845,
                  "src": "16120:13:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 41824,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "16120:7:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16119:15:117"
            },
            "scope": 42631,
            "src": "15987:328:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41880,
              "nodeType": "Block",
              "src": "16712:177:117",
              "statements": [
                {
                  "assignments": [
                    41864
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41864,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "16732:4:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41880,
                      "src": "16719:17:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 41863,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "16719:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41867,
                  "initialValue": {
                    "expression": {
                      "id": 41865,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41849,
                      "src": "16739:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41866,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16746:4:117",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40761,
                    "src": "16739:11:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16719:31:117"
                },
                {
                  "assignments": [
                    41869
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41869,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "16762:6:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 41880,
                      "src": "16757:11:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 41868,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16757:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 41872,
                  "initialValue": {
                    "expression": {
                      "id": 41870,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41849,
                      "src": "16771:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 41871,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16778:6:117",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 40763,
                    "src": "16771:13:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16757:27:117"
                },
                {
                  "AST": {
                    "nativeSrc": "16800:58:117",
                    "nodeType": "YulBlock",
                    "src": "16800:58:117",
                    "statements": [
                      {
                        "nativeSrc": "16809:42:117",
                        "nodeType": "YulAssignment",
                        "src": "16809:42:117",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "16832:4:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "16832:4:117"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "16838:2:117",
                                      "nodeType": "YulLiteral",
                                      "src": "16838:2:117",
                                      "type": "",
                                      "value": "32"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "16828:3:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "16828:3:117"
                                  },
                                  "nativeSrc": "16828:13:117",
                                  "nodeType": "YulFunctionCall",
                                  "src": "16828:13:117"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "16843:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "16843:6:117"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "16824:3:117",
                                "nodeType": "YulIdentifier",
                                "src": "16824:3:117"
                              },
                              "nativeSrc": "16824:26:117",
                              "nodeType": "YulFunctionCall",
                              "src": "16824:26:117"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "16818:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "16818:5:117"
                          },
                          "nativeSrc": "16818:33:117",
                          "nodeType": "YulFunctionCall",
                          "src": "16818:33:117"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "16809:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "16809:5:117"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 41864,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16832:4:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41869,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16843:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 41861,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16809:5:117",
                      "valueSize": 1
                    }
                  ],
                  "id": 41873,
                  "nodeType": "InlineAssembly",
                  "src": "16791:67:117"
                },
                {
                  "expression": {
                    "id": 41878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 41874,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41849,
                        "src": "16864:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41876,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "16871:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "16864:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "3332",
                      "id": 41877,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16881:2:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "16864:19:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 41879,
                  "nodeType": "ExpressionStatement",
                  "src": "16864:19:117"
                }
              ]
            },
            "documentation": {
              "id": 41846,
              "nodeType": "StructuredDocumentation",
              "src": "16321:236:117",
              "text": "@notice Read and consume the next 32 bytes from the buffer as an `uint256`.\n @param buffer An instance of `Buffer`.\n @return value The `uint256` value of the next 32 bytes in the buffer counting from the cursor position."
            },
            "id": 41881,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 41852,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41849,
                        "src": "16640:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41853,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16647:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "16640:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "3332",
                      "id": 41854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16656:2:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "16640:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 41856,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41849,
                        "src": "16660:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 41857,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16667:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "16660:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 41858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16672:6:117",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "16660:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 41859,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 41851,
                  "name": "withinRange",
                  "nameLocations": [
                    "16628:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "16628:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "16628:51:117"
              }
            ],
            "name": "readUint256",
            "nameLocation": "16570:11:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41850,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41849,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "16596:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41881,
                  "src": "16582:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 41848,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 41847,
                      "name": "Buffer",
                      "nameLocations": [
                        "16582:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "16582:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "16582:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16581:22:117"
            },
            "returnParameters": {
              "id": 41862,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41861,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "16702:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41881,
                  "src": "16694:13:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 41860,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16694:7:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16693:15:117"
            },
            "scope": 42631,
            "src": "16561:328:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 41998,
              "nodeType": "Block",
              "src": "17227:593:117",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 41892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 41889,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 41884,
                        "src": "17238:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 41890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "17244:6:117",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "17238:12:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "33",
                      "id": 41891,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17253:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "17238:16:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 41896,
                  "nodeType": "IfStatement",
                  "src": "17234:47:117",
                  "trueBody": {
                    "id": 41895,
                    "nodeType": "Block",
                    "src": "17256:25:117",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 41893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17272:1:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 41888,
                        "id": 41894,
                        "nodeType": "Return",
                        "src": "17265:8:117"
                      }
                    ]
                  }
                },
                {
                  "id": 41997,
                  "nodeType": "UncheckedBlock",
                  "src": "17287:528:117",
                  "statements": [
                    {
                      "assignments": [
                        41898
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 41898,
                          "mutability": "mutable",
                          "name": "ix",
                          "nameLocation": "17311:2:117",
                          "nodeType": "VariableDeclaration",
                          "scope": 41997,
                          "src": "17306:7:117",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 41897,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "17306:4:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 41900,
                      "initialValue": {
                        "hexValue": "30",
                        "id": 41899,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17316:1:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "17306:11:117"
                    },
                    {
                      "assignments": [
                        41902
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 41902,
                          "mutability": "mutable",
                          "name": "length",
                          "nameLocation": "17332:6:117",
                          "nodeType": "VariableDeclaration",
                          "scope": 41997,
                          "src": "17327:11:117",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 41901,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "17327:4:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 41907,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 41906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 41903,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41884,
                            "src": "17341:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 41904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "17347:6:117",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "17341:12:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "hexValue": "32",
                          "id": 41905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17356:1:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "17341:16:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "17327:30:117"
                    },
                    {
                      "body": {
                        "id": 41995,
                        "nodeType": "Block",
                        "src": "17388:420:117",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 41951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 41940,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 41929,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 41918,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 41911,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 41884,
                                        "src": "17415:5:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 41913,
                                      "indexExpression": {
                                        "id": 41912,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 41898,
                                        "src": "17421:2:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "17415:9:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "5c",
                                          "id": 41916,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17435:4:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          },
                                          "value": "\\"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          }
                                        ],
                                        "id": 41915,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "17428:6:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 41914,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17428:6:117",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 41917,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17428:12:117",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "17415:25:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 41928,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 41919,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 41884,
                                        "src": "17457:5:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 41923,
                                      "indexExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 41922,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 41920,
                                          "name": "ix",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 41898,
                                          "src": "17463:2:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "32",
                                          "id": 41921,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17468:1:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "17463:6:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "17457:13:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "5c",
                                          "id": 41926,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17481:4:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          },
                                          "value": "\\"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          }
                                        ],
                                        "id": 41925,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "17474:6:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 41924,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17474:6:117",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 41927,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17474:12:117",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "17457:29:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "17415:71:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 41939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 41930,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41884,
                                      "src": "17503:5:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 41934,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 41933,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 41931,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 41898,
                                        "src": "17509:2:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 41932,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17514:1:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "17509:6:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "17503:13:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 41937,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17527:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                          "typeString": "literal_string \"0\""
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                          "typeString": "literal_string \"0\""
                                        }
                                      ],
                                      "id": 41936,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "17520:6:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 41935,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17520:6:117",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 41938,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17520:11:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "src": "17503:28:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "17415:116:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "id": 41950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 41941,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 41884,
                                    "src": "17548:5:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 41945,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 41944,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 41942,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41898,
                                      "src": "17554:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 41943,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17559:1:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "17554:6:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17548:13:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "39",
                                      "id": 41948,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17572:3:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                                        "typeString": "literal_string \"9\""
                                      },
                                      "value": "9"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                                        "typeString": "literal_string \"9\""
                                      }
                                    ],
                                    "id": 41947,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "17565:6:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 41946,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "17565:6:117",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 41949,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17565:11:117",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "17548:28:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "17415:161:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 41993,
                              "nodeType": "Block",
                              "src": "17769:30:117",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 41991,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "17782:5:117",
                                    "subExpression": {
                                      "id": 41990,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41898,
                                      "src": "17782:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 41992,
                                  "nodeType": "ExpressionStatement",
                                  "src": "17782:5:117"
                                }
                              ]
                            },
                            "id": 41994,
                            "nodeType": "IfStatement",
                            "src": "17399:400:117",
                            "trueBody": {
                              "id": 41989,
                              "nodeType": "Block",
                              "src": "17588:175:117",
                              "statements": [
                                {
                                  "assignments": [
                                    41953
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 41953,
                                      "mutability": "mutable",
                                      "name": "ax",
                                      "nameLocation": "17607:2:117",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 41989,
                                      "src": "17601:8:117",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "typeName": {
                                        "id": 41952,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17601:5:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 41975,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 41973,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          },
                                          "id": 41971,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "arguments": [
                                              {
                                                "baseExpression": {
                                                  "id": 41958,
                                                  "name": "input",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 41884,
                                                  "src": "17624:5:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                },
                                                "id": 41962,
                                                "indexExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 41961,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 41959,
                                                    "name": "ix",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 41898,
                                                    "src": "17630:2:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "+",
                                                  "rightExpression": {
                                                    "hexValue": "31",
                                                    "id": 41960,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "17635:1:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "src": "17630:6:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "17624:13:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              ],
                                              "id": 41957,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "17618:5:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint8_$",
                                                "typeString": "type(uint8)"
                                              },
                                              "typeName": {
                                                "id": 41956,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "17618:5:117",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 41963,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17618:20:117",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30",
                                                    "id": 41968,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "17654:3:117",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                      "typeString": "literal_string \"0\""
                                                    },
                                                    "value": "0"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                      "typeString": "literal_string \"0\""
                                                    }
                                                  ],
                                                  "id": 41967,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "17647:6:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_bytes1_$",
                                                    "typeString": "type(bytes1)"
                                                  },
                                                  "typeName": {
                                                    "id": 41966,
                                                    "name": "bytes1",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17647:6:117",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 41969,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "17647:11:117",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              ],
                                              "id": 41965,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "17641:5:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint8_$",
                                                "typeString": "type(uint8)"
                                              },
                                              "typeName": {
                                                "id": 41964,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "17641:5:117",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 41970,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17641:18:117",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "17618:41:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 41972,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17662:1:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "17618:45:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 41955,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "17612:5:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": {
                                        "id": 41954,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17612:5:117",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 41974,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17612:52:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "17601:63:117"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 41978,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 41976,
                                      "name": "ax",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41953,
                                      "src": "17681:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "id": 41977,
                                      "name": "count",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41887,
                                      "src": "17686:5:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "17681:10:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 41984,
                                  "nodeType": "IfStatement",
                                  "src": "17677:55:117",
                                  "trueBody": {
                                    "id": 41983,
                                    "nodeType": "Block",
                                    "src": "17693:39:117",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 41981,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 41979,
                                            "name": "count",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 41887,
                                            "src": "17708:5:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "id": 41980,
                                            "name": "ax",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 41953,
                                            "src": "17716:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "17708:10:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "id": 41982,
                                        "nodeType": "ExpressionStatement",
                                        "src": "17708:10:117"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 41987,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 41985,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 41898,
                                      "src": "17744:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "33",
                                      "id": 41986,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17750:1:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "src": "17744:7:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 41988,
                                  "nodeType": "ExpressionStatement",
                                  "src": "17744:7:117"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 41910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 41908,
                          "name": "ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41898,
                          "src": "17373:2:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 41909,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41902,
                          "src": "17378:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "17373:11:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 41996,
                      "isSimpleCounterLoop": false,
                      "nodeType": "ForStatement",
                      "src": "17366:442:117"
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 41882,
              "nodeType": "StructuredDocumentation",
              "src": "16895:238:117",
              "text": "@notice Count number of required parameters for given bytes arrays\n @dev Wildcard format: \"\\#\\\", with # in [\"0\"..\"9\"].\n @param input Bytes array containing strings.\n @param count Highest wildcard index found, plus 1."
            },
            "id": 41999,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "argsCountOf",
            "nameLocation": "17146:11:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 41885,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41884,
                  "mutability": "mutable",
                  "name": "input",
                  "nameLocation": "17171:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41999,
                  "src": "17158:18:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 41883,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "17158:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17157:20:117"
            },
            "returnParameters": {
              "id": 41888,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 41887,
                  "mutability": "mutable",
                  "name": "count",
                  "nameLocation": "17217:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 41999,
                  "src": "17211:11:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 41886,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "17211:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17210:13:117"
            },
            "scope": 42631,
            "src": "17137:683:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 42245,
              "nodeType": "Block",
              "src": "18348:2340:117",
              "statements": [
                {
                  "assignments": [
                    42013
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42013,
                      "mutability": "mutable",
                      "name": "ix",
                      "nameLocation": "18360:2:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42245,
                      "src": "18355:7:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42012,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18355:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42015,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 42014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "18365:1:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18355:11:117"
                },
                {
                  "assignments": [
                    42017
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42017,
                      "mutability": "mutable",
                      "name": "lix",
                      "nameLocation": "18373:3:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42245,
                      "src": "18368:8:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42016,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18368:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42019,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 42018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "18379:1:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18368:12:117"
                },
                {
                  "assignments": [
                    42021
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42021,
                      "mutability": "mutable",
                      "name": "inputLength",
                      "nameLocation": "18392:11:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42245,
                      "src": "18387:16:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42020,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18387:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42022,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18387:16:117"
                },
                {
                  "assignments": [
                    42024
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42024,
                      "mutability": "mutable",
                      "name": "inputPointer",
                      "nameLocation": "18415:12:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42245,
                      "src": "18410:17:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42023,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18410:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42025,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18410:17:117"
                },
                {
                  "assignments": [
                    42027
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42027,
                      "mutability": "mutable",
                      "name": "outputLength",
                      "nameLocation": "18439:12:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42245,
                      "src": "18434:17:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42026,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18434:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42028,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18434:17:117"
                },
                {
                  "assignments": [
                    42030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42030,
                      "mutability": "mutable",
                      "name": "outputPointer",
                      "nameLocation": "18463:13:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42245,
                      "src": "18458:18:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42029,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18458:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42031,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18458:18:117"
                },
                {
                  "assignments": [
                    42033
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42033,
                      "mutability": "mutable",
                      "name": "source",
                      "nameLocation": "18492:6:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42245,
                      "src": "18487:11:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42032,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18487:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42034,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18487:11:117"
                },
                {
                  "assignments": [
                    42036
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42036,
                      "mutability": "mutable",
                      "name": "sourceLength",
                      "nameLocation": "18510:12:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42245,
                      "src": "18505:17:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42035,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18505:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42037,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18505:17:117"
                },
                {
                  "assignments": [
                    42039
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42039,
                      "mutability": "mutable",
                      "name": "sourcePointer",
                      "nameLocation": "18534:13:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42245,
                      "src": "18529:18:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42038,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18529:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42040,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18529:18:117"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 42044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 42041,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42002,
                        "src": "18560:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 42042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "18566:6:117",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "18560:12:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "33",
                      "id": 42043,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18575:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "18560:16:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 42050,
                  "nodeType": "IfStatement",
                  "src": "18556:56:117",
                  "trueBody": {
                    "id": 42049,
                    "nodeType": "Block",
                    "src": "18578:34:117",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 42045,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42002,
                              "src": "18595:5:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 42046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18602:1:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 42047,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "18594:10:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bytes memory,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 42011,
                        "id": 42048,
                        "nodeType": "Return",
                        "src": "18587:17:117"
                      }
                    ]
                  }
                },
                {
                  "AST": {
                    "nativeSrc": "18633:225:117",
                    "nodeType": "YulBlock",
                    "src": "18633:225:117",
                    "statements": [
                      {
                        "nativeSrc": "18679:30:117",
                        "nodeType": "YulAssignment",
                        "src": "18679:30:117",
                        "value": {
                          "arguments": [
                            {
                              "name": "input",
                              "nativeSrc": "18699:5:117",
                              "nodeType": "YulIdentifier",
                              "src": "18699:5:117"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "18706:2:117",
                              "nodeType": "YulLiteral",
                              "src": "18706:2:117",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "18695:3:117",
                            "nodeType": "YulIdentifier",
                            "src": "18695:3:117"
                          },
                          "nativeSrc": "18695:14:117",
                          "nodeType": "YulFunctionCall",
                          "src": "18695:14:117"
                        },
                        "variableNames": [
                          {
                            "name": "inputPointer",
                            "nativeSrc": "18679:12:117",
                            "nodeType": "YulIdentifier",
                            "src": "18679:12:117"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "18752:21:117",
                        "nodeType": "YulAssignment",
                        "src": "18752:21:117",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "18768:4:117",
                              "nodeType": "YulLiteral",
                              "src": "18768:4:117",
                              "type": "",
                              "value": "0x40"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "18762:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "18762:5:117"
                          },
                          "nativeSrc": "18762:11:117",
                          "nodeType": "YulFunctionCall",
                          "src": "18762:11:117"
                        },
                        "variableNames": [
                          {
                            "name": "output",
                            "nativeSrc": "18752:6:117",
                            "nodeType": "YulIdentifier",
                            "src": "18752:6:117"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "18819:32:117",
                        "nodeType": "YulAssignment",
                        "src": "18819:32:117",
                        "value": {
                          "arguments": [
                            {
                              "name": "output",
                              "nativeSrc": "18840:6:117",
                              "nodeType": "YulIdentifier",
                              "src": "18840:6:117"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "18848:2:117",
                              "nodeType": "YulLiteral",
                              "src": "18848:2:117",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "18836:3:117",
                            "nodeType": "YulIdentifier",
                            "src": "18836:3:117"
                          },
                          "nativeSrc": "18836:15:117",
                          "nodeType": "YulFunctionCall",
                          "src": "18836:15:117"
                        },
                        "variableNames": [
                          {
                            "name": "outputPointer",
                            "nativeSrc": "18819:13:117",
                            "nodeType": "YulIdentifier",
                            "src": "18819:13:117"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 42002,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18699:5:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42024,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18679:12:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42008,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18752:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42008,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18840:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42030,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18819:13:117",
                      "valueSize": 1
                    }
                  ],
                  "id": 42051,
                  "nodeType": "InlineAssembly",
                  "src": "18624:234:117"
                },
                {
                  "id": 42213,
                  "nodeType": "UncheckedBlock",
                  "src": "18875:1360:117",
                  "statements": [
                    {
                      "assignments": [
                        42053
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 42053,
                          "mutability": "mutable",
                          "name": "length",
                          "nameLocation": "18899:6:117",
                          "nodeType": "VariableDeclaration",
                          "scope": 42213,
                          "src": "18894:11:117",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 42052,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "18894:4:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 42058,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 42057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 42054,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42002,
                            "src": "18908:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 42055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "18914:6:117",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "18908:12:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "hexValue": "32",
                          "id": 42056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18923:1:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "18908:16:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "18894:30:117"
                    },
                    {
                      "body": {
                        "id": 42206,
                        "nodeType": "Block",
                        "src": "18955:1243:117",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 42102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 42091,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 42080,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 42069,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 42062,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42002,
                                        "src": "18982:5:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 42064,
                                      "indexExpression": {
                                        "id": 42063,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42013,
                                        "src": "18988:2:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "18982:9:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "5c",
                                          "id": 42067,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "19002:4:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          },
                                          "value": "\\"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          }
                                        ],
                                        "id": 42066,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "18995:6:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 42065,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "18995:6:117",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 42068,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18995:12:117",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "18982:25:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 42079,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 42070,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42002,
                                        "src": "19024:5:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 42074,
                                      "indexExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 42073,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 42071,
                                          "name": "ix",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 42013,
                                          "src": "19030:2:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "32",
                                          "id": 42072,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "19035:1:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "19030:6:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "19024:13:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "5c",
                                          "id": 42077,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "19048:4:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          },
                                          "value": "\\"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          }
                                        ],
                                        "id": 42076,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "19041:6:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 42075,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "19041:6:117",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 42078,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "19041:12:117",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "19024:29:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "18982:71:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 42090,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 42081,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42002,
                                      "src": "19070:5:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 42085,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 42084,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 42082,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42013,
                                        "src": "19076:2:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 42083,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "19081:1:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "19076:6:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "19070:13:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 42088,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "19094:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                          "typeString": "literal_string \"0\""
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                          "typeString": "literal_string \"0\""
                                        }
                                      ],
                                      "id": 42087,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "19087:6:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 42086,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19087:6:117",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 42089,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19087:11:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "src": "19070:28:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "18982:116:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "id": 42101,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 42092,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42002,
                                    "src": "19115:5:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 42096,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 42095,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 42093,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42013,
                                      "src": "19121:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 42094,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19126:1:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "19121:6:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19115:13:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "39",
                                      "id": 42099,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19139:3:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                                        "typeString": "literal_string \"9\""
                                      },
                                      "value": "9"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                                        "typeString": "literal_string \"9\""
                                      }
                                    ],
                                    "id": 42098,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "19132:6:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 42097,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "19132:6:117",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 42100,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19132:11:117",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "19115:28:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "18982:161:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 42204,
                              "nodeType": "Block",
                              "src": "20159:30:117",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 42202,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "20172:5:117",
                                    "subExpression": {
                                      "id": 42201,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42013,
                                      "src": "20172:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42203,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20172:5:117"
                                }
                              ]
                            },
                            "id": 42205,
                            "nodeType": "IfStatement",
                            "src": "18966:1223:117",
                            "trueBody": {
                              "id": 42200,
                              "nodeType": "Block",
                              "src": "19155:998:117",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 42108,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 42103,
                                      "name": "inputLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42021,
                                      "src": "19168:11:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 42106,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 42104,
                                            "name": "ix",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42013,
                                            "src": "19183:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 42105,
                                            "name": "lix",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42017,
                                            "src": "19188:3:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "19183:8:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 42107,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "19182:10:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "19168:24:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42109,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19168:24:117"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 42112,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 42110,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42013,
                                      "src": "19209:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "id": 42111,
                                      "name": "lix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42017,
                                      "src": "19214:3:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "19209:8:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 42134,
                                    "nodeType": "Block",
                                    "src": "19451:46:117",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 42132,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 42130,
                                            "name": "inputPointer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42024,
                                            "src": "19466:12:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "hexValue": "33",
                                            "id": 42131,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "19482:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_3_by_1",
                                              "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                          },
                                          "src": "19466:17:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 42133,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19466:17:117"
                                      }
                                    ]
                                  },
                                  "id": 42135,
                                  "nodeType": "IfStatement",
                                  "src": "19205:292:117",
                                  "trueBody": {
                                    "id": 42129,
                                    "nodeType": "Block",
                                    "src": "19219:226:117",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 42114,
                                              "name": "outputPointer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42030,
                                              "src": "19257:13:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 42115,
                                              "name": "inputPointer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42024,
                                              "src": "19287:12:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 42116,
                                              "name": "inputLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42021,
                                              "src": "19316:11:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 42113,
                                            "name": "memcpy",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42630,
                                            "src": "19234:6:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                              "typeString": "function (uint256,uint256,uint256) pure"
                                            }
                                          },
                                          "id": 42117,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19234:108:117",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 42118,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19234:108:117"
                                      },
                                      {
                                        "expression": {
                                          "id": 42123,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 42119,
                                            "name": "inputPointer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42024,
                                            "src": "19357:12:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 42122,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 42120,
                                              "name": "inputLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42021,
                                              "src": "19373:11:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "hexValue": "33",
                                              "id": 42121,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "19387:1:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_3_by_1",
                                                "typeString": "int_const 3"
                                              },
                                              "value": "3"
                                            },
                                            "src": "19373:15:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "19357:31:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 42124,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19357:31:117"
                                      },
                                      {
                                        "expression": {
                                          "id": 42127,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 42125,
                                            "name": "outputPointer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42030,
                                            "src": "19403:13:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "id": 42126,
                                            "name": "inputLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42021,
                                            "src": "19420:11:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "19403:28:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 42128,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19403:28:117"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "assignments": [
                                    42137
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 42137,
                                      "mutability": "mutable",
                                      "name": "ax",
                                      "nameLocation": "19514:2:117",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 42200,
                                      "src": "19509:7:117",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 42136,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19509:4:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 42157,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 42155,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "baseExpression": {
                                                "id": 42142,
                                                "name": "input",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 42002,
                                                "src": "19530:5:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              "id": 42146,
                                              "indexExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 42145,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 42143,
                                                  "name": "ix",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 42013,
                                                  "src": "19536:2:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "+",
                                                "rightExpression": {
                                                  "hexValue": "31",
                                                  "id": 42144,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "19541:1:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                },
                                                "src": "19536:6:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "19530:13:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            ],
                                            "id": 42141,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "19524:5:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint8_$",
                                              "typeString": "type(uint8)"
                                            },
                                            "typeName": {
                                              "id": 42140,
                                              "name": "uint8",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "19524:5:117",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 42147,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19524:20:117",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "hexValue": "30",
                                                  "id": 42152,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "string",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "19560:3:117",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                    "typeString": "literal_string \"0\""
                                                  },
                                                  "value": "0"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                    "typeString": "literal_string \"0\""
                                                  }
                                                ],
                                                "id": 42151,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "19553:6:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_bytes1_$",
                                                  "typeString": "type(bytes1)"
                                                },
                                                "typeName": {
                                                  "id": 42150,
                                                  "name": "bytes1",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "19553:6:117",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 42153,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "19553:11:117",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            ],
                                            "id": 42149,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "19547:5:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint8_$",
                                              "typeString": "type(uint8)"
                                            },
                                            "typeName": {
                                              "id": 42148,
                                              "name": "uint8",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "19547:5:117",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 42154,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19547:18:117",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "19524:41:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 42139,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "19519:4:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 42138,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19519:4:117",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 42156,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19519:47:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "19509:57:117"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 42161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 42158,
                                      "name": "ax",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42137,
                                      "src": "19583:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 42159,
                                        "name": "args",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42005,
                                        "src": "19589:4:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "string memory[] memory"
                                        }
                                      },
                                      "id": 42160,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "19594:6:117",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "19589:11:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "19583:17:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 42171,
                                  "nodeType": "IfStatement",
                                  "src": "19579:91:117",
                                  "trueBody": {
                                    "id": 42170,
                                    "nodeType": "Block",
                                    "src": "19602:68:117",
                                    "statements": [
                                      {
                                        "errorCall": {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 42165,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 42163,
                                                "name": "ax",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 42137,
                                                "src": "19636:2:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "+",
                                              "rightExpression": {
                                                "hexValue": "31",
                                                "id": 42164,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "19641:1:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "19636:6:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 42166,
                                                "name": "args",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 42005,
                                                "src": "19644:4:117",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                                  "typeString": "string memory[] memory"
                                                }
                                              },
                                              "id": 42167,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "19649:6:117",
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "src": "19644:11:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 42162,
                                            "name": "MissingArgs",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 40758,
                                            "src": "19624:11:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                              "typeString": "function (uint256,uint256) pure returns (error)"
                                            }
                                          },
                                          "id": 42168,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19624:32:117",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_error",
                                            "typeString": "error"
                                          }
                                        },
                                        "id": 42169,
                                        "nodeType": "RevertStatement",
                                        "src": "19617:39:117"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "AST": {
                                    "nativeSrc": "19691:170:117",
                                    "nodeType": "YulBlock",
                                    "src": "19691:170:117",
                                    "statements": [
                                      {
                                        "nativeSrc": "19706:47:117",
                                        "nodeType": "YulAssignment",
                                        "src": "19706:47:117",
                                        "value": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "args",
                                                  "nativeSrc": "19726:4:117",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "19726:4:117"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nativeSrc": "19736:2:117",
                                                      "nodeType": "YulLiteral",
                                                      "src": "19736:2:117",
                                                      "type": "",
                                                      "value": "32"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "ax",
                                                          "nativeSrc": "19744:2:117",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "19744:2:117"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nativeSrc": "19748:1:117",
                                                          "nodeType": "YulLiteral",
                                                          "src": "19748:1:117",
                                                          "type": "",
                                                          "value": "1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nativeSrc": "19740:3:117",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19740:3:117"
                                                      },
                                                      "nativeSrc": "19740:10:117",
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "19740:10:117"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mul",
                                                    "nativeSrc": "19732:3:117",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19732:3:117"
                                                  },
                                                  "nativeSrc": "19732:19:117",
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "19732:19:117"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nativeSrc": "19722:3:117",
                                                "nodeType": "YulIdentifier",
                                                "src": "19722:3:117"
                                              },
                                              "nativeSrc": "19722:30:117",
                                              "nodeType": "YulFunctionCall",
                                              "src": "19722:30:117"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "19716:5:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "19716:5:117"
                                          },
                                          "nativeSrc": "19716:37:117",
                                          "nodeType": "YulFunctionCall",
                                          "src": "19716:37:117"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "source",
                                            "nativeSrc": "19706:6:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "19706:6:117"
                                          }
                                        ]
                                      },
                                      {
                                        "nativeSrc": "19767:29:117",
                                        "nodeType": "YulAssignment",
                                        "src": "19767:29:117",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "source",
                                              "nativeSrc": "19789:6:117",
                                              "nodeType": "YulIdentifier",
                                              "src": "19789:6:117"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "19783:5:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "19783:5:117"
                                          },
                                          "nativeSrc": "19783:13:117",
                                          "nodeType": "YulFunctionCall",
                                          "src": "19783:13:117"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "sourceLength",
                                            "nativeSrc": "19767:12:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "19767:12:117"
                                          }
                                        ]
                                      },
                                      {
                                        "nativeSrc": "19810:32:117",
                                        "nodeType": "YulAssignment",
                                        "src": "19810:32:117",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "source",
                                              "nativeSrc": "19831:6:117",
                                              "nodeType": "YulIdentifier",
                                              "src": "19831:6:117"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "19839:2:117",
                                              "nodeType": "YulLiteral",
                                              "src": "19839:2:117",
                                              "type": "",
                                              "value": "32"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nativeSrc": "19827:3:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "19827:3:117"
                                          },
                                          "nativeSrc": "19827:15:117",
                                          "nodeType": "YulFunctionCall",
                                          "src": "19827:15:117"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "sourcePointer",
                                            "nativeSrc": "19810:13:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "19810:13:117"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "evmVersion": "prague",
                                  "externalReferences": [
                                    {
                                      "declaration": 42005,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19726:4:117",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 42137,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19744:2:117",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 42033,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19706:6:117",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 42033,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19789:6:117",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 42033,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19831:6:117",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 42036,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19767:12:117",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 42039,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19810:13:117",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 42172,
                                  "nodeType": "InlineAssembly",
                                  "src": "19682:179:117"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 42174,
                                        "name": "outputPointer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42030,
                                        "src": "19902:13:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 42175,
                                        "name": "sourcePointer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42039,
                                        "src": "19930:13:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 42176,
                                        "name": "sourceLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42036,
                                        "src": "19958:12:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 42173,
                                      "name": "memcpy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42630,
                                      "src": "19881:6:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (uint256,uint256,uint256) pure"
                                      }
                                    },
                                    "id": 42177,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19881:102:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 42178,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19881:102:117"
                                },
                                {
                                  "expression": {
                                    "id": 42183,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 42179,
                                      "name": "outputLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42027,
                                      "src": "19996:12:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 42182,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 42180,
                                        "name": "inputLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42021,
                                        "src": "20012:11:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 42181,
                                        "name": "sourceLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42036,
                                        "src": "20026:12:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "20012:26:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "19996:42:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42184,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19996:42:117"
                                },
                                {
                                  "expression": {
                                    "id": 42187,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 42185,
                                      "name": "outputPointer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42030,
                                      "src": "20051:13:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 42186,
                                      "name": "sourceLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42036,
                                      "src": "20068:12:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20051:29:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42188,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20051:29:117"
                                },
                                {
                                  "expression": {
                                    "id": 42191,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 42189,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42013,
                                      "src": "20093:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "33",
                                      "id": 42190,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20099:1:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "src": "20093:7:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42192,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20093:7:117"
                                },
                                {
                                  "expression": {
                                    "id": 42195,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 42193,
                                      "name": "lix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42017,
                                      "src": "20113:3:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 42194,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42013,
                                      "src": "20119:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20113:8:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42196,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20113:8:117"
                                },
                                {
                                  "expression": {
                                    "id": 42198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "20134:7:117",
                                    "subExpression": {
                                      "id": 42197,
                                      "name": "hits",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42010,
                                      "src": "20134:4:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42199,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20134:7:117"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 42061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 42059,
                          "name": "ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42013,
                          "src": "18940:2:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 42060,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42053,
                          "src": "18945:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "18940:11:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 42207,
                      "isSimpleCounterLoop": false,
                      "nodeType": "ForStatement",
                      "src": "18933:1265:117"
                    },
                    {
                      "expression": {
                        "id": 42211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 42208,
                          "name": "ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42013,
                          "src": "20206:2:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "expression": {
                            "id": 42209,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42002,
                            "src": "20211:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 42210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20217:6:117",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "20211:12:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20206:17:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 42212,
                      "nodeType": "ExpressionStatement",
                      "src": "20206:17:117"
                    }
                  ]
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 42216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 42214,
                      "name": "outputLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42027,
                      "src": "20245:12:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 42215,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20260:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "20245:16:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 42243,
                    "nodeType": "Block",
                    "src": "20649:34:117",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 42239,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42002,
                              "src": "20666:5:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 42240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20673:1:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 42241,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20665:10:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bytes memory,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 42011,
                        "id": 42242,
                        "nodeType": "Return",
                        "src": "20658:17:117"
                      }
                    ]
                  },
                  "id": 42244,
                  "nodeType": "IfStatement",
                  "src": "20241:442:117",
                  "trueBody": {
                    "id": 42238,
                    "nodeType": "Block",
                    "src": "20263:375:117",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 42217,
                            "name": "ix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42013,
                            "src": "20276:2:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 42218,
                            "name": "lix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42017,
                            "src": "20281:3:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20276:8:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 42236,
                        "nodeType": "IfStatement",
                        "src": "20272:162:117",
                        "trueBody": {
                          "id": 42235,
                          "nodeType": "Block",
                          "src": "20287:147:117",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 42221,
                                    "name": "outputPointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42030,
                                    "src": "20317:13:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 42222,
                                    "name": "inputPointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42024,
                                    "src": "20343:12:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 42225,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 42223,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42013,
                                      "src": "20368:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 42224,
                                      "name": "lix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42017,
                                      "src": "20373:3:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20368:8:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 42220,
                                  "name": "memcpy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42630,
                                  "src": "20298:6:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256,uint256) pure"
                                  }
                                },
                                "id": 42226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20298:89:117",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 42227,
                              "nodeType": "ExpressionStatement",
                              "src": "20298:89:117"
                            },
                            {
                              "expression": {
                                "id": 42233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 42228,
                                  "name": "outputLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42027,
                                  "src": "20398:12:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 42231,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 42229,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42013,
                                        "src": "20415:2:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 42230,
                                        "name": "lix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42017,
                                        "src": "20420:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "20415:8:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 42232,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "20414:10:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20398:26:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 42234,
                              "nodeType": "ExpressionStatement",
                              "src": "20398:26:117"
                            }
                          ]
                        }
                      },
                      {
                        "AST": {
                          "nativeSrc": "20451:180:117",
                          "nodeType": "YulBlock",
                          "src": "20451:180:117",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nativeSrc": "20505:6:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "20505:6:117"
                                  },
                                  {
                                    "name": "outputLength",
                                    "nativeSrc": "20513:12:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "20513:12:117"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "20498:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "20498:6:117"
                                },
                                "nativeSrc": "20498:28:117",
                                "nodeType": "YulFunctionCall",
                                "src": "20498:28:117"
                              },
                              "nativeSrc": "20498:28:117",
                              "nodeType": "YulExpressionStatement",
                              "src": "20498:28:117"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "20576:4:117",
                                    "nodeType": "YulLiteral",
                                    "src": "20576:4:117",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nativeSrc": "20592:4:117",
                                            "nodeType": "YulLiteral",
                                            "src": "20592:4:117",
                                            "type": "",
                                            "value": "0x40"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "20586:5:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "20586:5:117"
                                        },
                                        "nativeSrc": "20586:11:117",
                                        "nodeType": "YulFunctionCall",
                                        "src": "20586:11:117"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "outputLength",
                                            "nativeSrc": "20603:12:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "20603:12:117"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "20617:2:117",
                                            "nodeType": "YulLiteral",
                                            "src": "20617:2:117",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "20599:3:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "20599:3:117"
                                        },
                                        "nativeSrc": "20599:21:117",
                                        "nodeType": "YulFunctionCall",
                                        "src": "20599:21:117"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "20582:3:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "20582:3:117"
                                    },
                                    "nativeSrc": "20582:39:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "20582:39:117"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "20569:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "20569:6:117"
                                },
                                "nativeSrc": "20569:53:117",
                                "nodeType": "YulFunctionCall",
                                "src": "20569:53:117"
                              },
                              "nativeSrc": "20569:53:117",
                              "nodeType": "YulExpressionStatement",
                              "src": "20569:53:117"
                            }
                          ]
                        },
                        "evmVersion": "prague",
                        "externalReferences": [
                          {
                            "declaration": 42008,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20505:6:117",
                            "valueSize": 1
                          },
                          {
                            "declaration": 42027,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20513:12:117",
                            "valueSize": 1
                          },
                          {
                            "declaration": 42027,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20603:12:117",
                            "valueSize": 1
                          }
                        ],
                        "id": 42237,
                        "nodeType": "InlineAssembly",
                        "src": "20442:189:117"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 42000,
              "nodeType": "StructuredDocumentation",
              "src": "17826:391:117",
              "text": "@notice Replace indexed bytes-wildcards by correspondent substrings.\n @dev Wildcard format: \"\\#\\\", with # in [\"0\"..\"9\"].\n @param input Bytes array containing strings.\n @param args Array of substring values for replacing indexed wildcards.\n @return output Resulting bytes array after replacing all wildcards.\n @return hits Total number of replaced wildcards."
            },
            "id": 42246,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "replace",
            "nameLocation": "18230:7:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 42006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42002,
                  "mutability": "mutable",
                  "name": "input",
                  "nameLocation": "18251:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42246,
                  "src": "18238:18:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 42001,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "18238:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42005,
                  "mutability": "mutable",
                  "name": "args",
                  "nameLocation": "18274:4:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42246,
                  "src": "18258:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 42003,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "18258:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 42004,
                    "nodeType": "ArrayTypeName",
                    "src": "18258:8:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18237:42:117"
            },
            "returnParameters": {
              "id": 42011,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42008,
                  "mutability": "mutable",
                  "name": "output",
                  "nameLocation": "18326:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42246,
                  "src": "18313:19:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 42007,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "18313:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42010,
                  "mutability": "mutable",
                  "name": "hits",
                  "nameLocation": "18339:4:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42246,
                  "src": "18334:9:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 42009,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "18334:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18312:32:117"
            },
            "scope": 42631,
            "src": "18221:2467:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 42472,
              "nodeType": "Block",
              "src": "21262:2200:117",
              "statements": [
                {
                  "assignments": [
                    42261
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42261,
                      "mutability": "mutable",
                      "name": "ix",
                      "nameLocation": "21274:2:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42472,
                      "src": "21269:7:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42260,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21269:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42263,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 42262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "21279:1:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21269:11:117"
                },
                {
                  "assignments": [
                    42265
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42265,
                      "mutability": "mutable",
                      "name": "lix",
                      "nameLocation": "21287:3:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42472,
                      "src": "21282:8:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42264,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21282:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42267,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 42266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "21293:1:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21282:12:117"
                },
                {
                  "assignments": [
                    42269
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42269,
                      "mutability": "mutable",
                      "name": "inputLength",
                      "nameLocation": "21306:11:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42472,
                      "src": "21301:16:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42268,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21301:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42270,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21301:16:117"
                },
                {
                  "assignments": [
                    42272
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42272,
                      "mutability": "mutable",
                      "name": "inputPointer",
                      "nameLocation": "21329:12:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42472,
                      "src": "21324:17:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42271,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21324:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42273,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21324:17:117"
                },
                {
                  "assignments": [
                    42275
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42275,
                      "mutability": "mutable",
                      "name": "outputLength",
                      "nameLocation": "21353:12:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42472,
                      "src": "21348:17:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42274,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21348:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42276,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21348:17:117"
                },
                {
                  "assignments": [
                    42278
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42278,
                      "mutability": "mutable",
                      "name": "outputPointer",
                      "nameLocation": "21377:13:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42472,
                      "src": "21372:18:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42277,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21372:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42279,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21372:18:117"
                },
                {
                  "assignments": [
                    42281
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42281,
                      "mutability": "mutable",
                      "name": "argValueLength",
                      "nameLocation": "21403:14:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42472,
                      "src": "21398:19:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42280,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21398:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42282,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21398:19:117"
                },
                {
                  "assignments": [
                    42284
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42284,
                      "mutability": "mutable",
                      "name": "argValuePointer",
                      "nameLocation": "21429:15:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42472,
                      "src": "21424:20:117",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42283,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21424:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42285,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21424:20:117"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 42289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 42286,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42249,
                        "src": "21457:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 42287,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "21463:6:117",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "21457:12:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "33",
                      "id": 42288,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21472:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "21457:16:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 42295,
                  "nodeType": "IfStatement",
                  "src": "21453:56:117",
                  "trueBody": {
                    "id": 42294,
                    "nodeType": "Block",
                    "src": "21475:34:117",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 42290,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42249,
                              "src": "21492:5:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 42291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21499:1:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 42292,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21491:10:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bytes memory,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 42259,
                        "id": 42293,
                        "nodeType": "Return",
                        "src": "21484:17:117"
                      }
                    ]
                  }
                },
                {
                  "AST": {
                    "nativeSrc": "21530:396:117",
                    "nodeType": "YulBlock",
                    "src": "21530:396:117",
                    "statements": [
                      {
                        "nativeSrc": "21576:30:117",
                        "nodeType": "YulAssignment",
                        "src": "21576:30:117",
                        "value": {
                          "arguments": [
                            {
                              "name": "input",
                              "nativeSrc": "21596:5:117",
                              "nodeType": "YulIdentifier",
                              "src": "21596:5:117"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "21603:2:117",
                              "nodeType": "YulLiteral",
                              "src": "21603:2:117",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "21592:3:117",
                            "nodeType": "YulIdentifier",
                            "src": "21592:3:117"
                          },
                          "nativeSrc": "21592:14:117",
                          "nodeType": "YulFunctionCall",
                          "src": "21592:14:117"
                        },
                        "variableNames": [
                          {
                            "name": "inputPointer",
                            "nativeSrc": "21576:12:117",
                            "nodeType": "YulIdentifier",
                            "src": "21576:12:117"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "21649:21:117",
                        "nodeType": "YulAssignment",
                        "src": "21649:21:117",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "21665:4:117",
                              "nodeType": "YulLiteral",
                              "src": "21665:4:117",
                              "type": "",
                              "value": "0x40"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "21659:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "21659:5:117"
                          },
                          "nativeSrc": "21659:11:117",
                          "nodeType": "YulFunctionCall",
                          "src": "21659:11:117"
                        },
                        "variableNames": [
                          {
                            "name": "output",
                            "nativeSrc": "21649:6:117",
                            "nodeType": "YulIdentifier",
                            "src": "21649:6:117"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "21716:32:117",
                        "nodeType": "YulAssignment",
                        "src": "21716:32:117",
                        "value": {
                          "arguments": [
                            {
                              "name": "output",
                              "nativeSrc": "21737:6:117",
                              "nodeType": "YulIdentifier",
                              "src": "21737:6:117"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "21745:2:117",
                              "nodeType": "YulLiteral",
                              "src": "21745:2:117",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "21733:3:117",
                            "nodeType": "YulIdentifier",
                            "src": "21733:3:117"
                          },
                          "nativeSrc": "21733:15:117",
                          "nodeType": "YulFunctionCall",
                          "src": "21733:15:117"
                        },
                        "variableNames": [
                          {
                            "name": "outputPointer",
                            "nativeSrc": "21716:13:117",
                            "nodeType": "YulIdentifier",
                            "src": "21716:13:117"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "21801:36:117",
                        "nodeType": "YulAssignment",
                        "src": "21801:36:117",
                        "value": {
                          "arguments": [
                            {
                              "name": "argValue",
                              "nativeSrc": "21824:8:117",
                              "nodeType": "YulIdentifier",
                              "src": "21824:8:117"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "21834:2:117",
                              "nodeType": "YulLiteral",
                              "src": "21834:2:117",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "21820:3:117",
                            "nodeType": "YulIdentifier",
                            "src": "21820:3:117"
                          },
                          "nativeSrc": "21820:17:117",
                          "nodeType": "YulFunctionCall",
                          "src": "21820:17:117"
                        },
                        "variableNames": [
                          {
                            "name": "argValuePointer",
                            "nativeSrc": "21801:15:117",
                            "nodeType": "YulIdentifier",
                            "src": "21801:15:117"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "21886:33:117",
                        "nodeType": "YulAssignment",
                        "src": "21886:33:117",
                        "value": {
                          "arguments": [
                            {
                              "name": "argValue",
                              "nativeSrc": "21910:8:117",
                              "nodeType": "YulIdentifier",
                              "src": "21910:8:117"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "21904:5:117",
                            "nodeType": "YulIdentifier",
                            "src": "21904:5:117"
                          },
                          "nativeSrc": "21904:15:117",
                          "nodeType": "YulFunctionCall",
                          "src": "21904:15:117"
                        },
                        "variableNames": [
                          {
                            "name": "argValueLength",
                            "nativeSrc": "21886:14:117",
                            "nodeType": "YulIdentifier",
                            "src": "21886:14:117"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "prague",
                  "externalReferences": [
                    {
                      "declaration": 42253,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21824:8:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42253,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21910:8:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42281,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21886:14:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42284,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21801:15:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42249,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21596:5:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42272,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21576:12:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42256,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21649:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42256,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21737:6:117",
                      "valueSize": 1
                    },
                    {
                      "declaration": 42278,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "21716:13:117",
                      "valueSize": 1
                    }
                  ],
                  "id": 42296,
                  "nodeType": "InlineAssembly",
                  "src": "21521:405:117"
                },
                {
                  "id": 42440,
                  "nodeType": "UncheckedBlock",
                  "src": "21943:1066:117",
                  "statements": [
                    {
                      "assignments": [
                        42298
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 42298,
                          "mutability": "mutable",
                          "name": "length",
                          "nameLocation": "21967:6:117",
                          "nodeType": "VariableDeclaration",
                          "scope": 42440,
                          "src": "21962:11:117",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 42297,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "21962:4:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 42303,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 42302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 42299,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42249,
                            "src": "21976:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 42300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "21982:6:117",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "21976:12:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "hexValue": "32",
                          "id": 42301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "21991:1:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "21976:16:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "21962:30:117"
                    },
                    {
                      "body": {
                        "id": 42433,
                        "nodeType": "Block",
                        "src": "22023:949:117",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 42366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 42347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 42336,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 42325,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      },
                                      "id": 42314,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "baseExpression": {
                                          "id": 42307,
                                          "name": "input",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 42249,
                                          "src": "22050:5:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 42309,
                                        "indexExpression": {
                                          "id": 42308,
                                          "name": "ix",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 42261,
                                          "src": "22056:2:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "22050:9:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "arguments": [
                                          {
                                            "hexValue": "5c",
                                            "id": 42312,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "22070:4:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                              "typeString": "literal_string \"\\\""
                                            },
                                            "value": "\\"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                              "typeString": "literal_string \"\\\""
                                            }
                                          ],
                                          "id": 42311,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "22063:6:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes1_$",
                                            "typeString": "type(bytes1)"
                                          },
                                          "typeName": {
                                            "id": 42310,
                                            "name": "bytes1",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "22063:6:117",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 42313,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "22063:12:117",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "src": "22050:25:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      },
                                      "id": 42324,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "baseExpression": {
                                          "id": 42315,
                                          "name": "input",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 42249,
                                          "src": "22092:5:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 42319,
                                        "indexExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 42318,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 42316,
                                            "name": "ix",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42261,
                                            "src": "22098:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "hexValue": "32",
                                            "id": 42317,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "22103:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_2_by_1",
                                              "typeString": "int_const 2"
                                            },
                                            "value": "2"
                                          },
                                          "src": "22098:6:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "22092:13:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "arguments": [
                                          {
                                            "hexValue": "5c",
                                            "id": 42322,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "22116:4:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                              "typeString": "literal_string \"\\\""
                                            },
                                            "value": "\\"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                              "typeString": "literal_string \"\\\""
                                            }
                                          ],
                                          "id": 42321,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "22109:6:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes1_$",
                                            "typeString": "type(bytes1)"
                                          },
                                          "typeName": {
                                            "id": 42320,
                                            "name": "bytes1",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "22109:6:117",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 42323,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "22109:12:117",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "src": "22092:29:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "22050:71:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 42335,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 42326,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42249,
                                        "src": "22138:5:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 42330,
                                      "indexExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 42329,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 42327,
                                          "name": "ix",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 42261,
                                          "src": "22144:2:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 42328,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "22149:1:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "22144:6:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "22138:13:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 42333,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "22162:3:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                            "typeString": "literal_string \"0\""
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                            "typeString": "literal_string \"0\""
                                          }
                                        ],
                                        "id": 42332,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "22155:6:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 42331,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "22155:6:117",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 42334,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22155:11:117",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "22138:28:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "22050:116:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 42346,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 42337,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42249,
                                      "src": "22183:5:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 42341,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 42340,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 42338,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42261,
                                        "src": "22189:2:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 42339,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "22194:1:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "22189:6:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22183:13:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "39",
                                        "id": 42344,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "22207:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                                          "typeString": "literal_string \"9\""
                                        },
                                        "value": "9"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                                          "typeString": "literal_string \"9\""
                                        }
                                      ],
                                      "id": 42343,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "22200:6:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 42342,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22200:6:117",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 42345,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22200:11:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "src": "22183:28:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "22050:161:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 42365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 42363,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 42350,
                                          "name": "input",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 42249,
                                          "src": "22234:5:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 42354,
                                        "indexExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 42353,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 42351,
                                            "name": "ix",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42261,
                                            "src": "22240:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "hexValue": "31",
                                            "id": 42352,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "22245:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "22240:6:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "22234:13:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      ],
                                      "id": 42349,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "22228:5:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": {
                                        "id": 42348,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22228:5:117",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 42355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22228:20:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "30",
                                            "id": 42360,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "22264:3:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                              "typeString": "literal_string \"0\""
                                            },
                                            "value": "0"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                              "typeString": "literal_string \"0\""
                                            }
                                          ],
                                          "id": 42359,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "22257:6:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes1_$",
                                            "typeString": "type(bytes1)"
                                          },
                                          "typeName": {
                                            "id": 42358,
                                            "name": "bytes1",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "22257:6:117",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 42361,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "22257:11:117",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      ],
                                      "id": 42357,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "22251:5:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": {
                                        "id": 42356,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22251:5:117",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 42362,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22251:18:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "22228:41:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 42364,
                                  "name": "argIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42251,
                                  "src": "22273:8:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "22228:53:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "22050:231:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 42431,
                              "nodeType": "Block",
                              "src": "22933:30:117",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 42429,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "22946:5:117",
                                    "subExpression": {
                                      "id": 42428,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42261,
                                      "src": "22946:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42430,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22946:5:117"
                                }
                              ]
                            },
                            "id": 42432,
                            "nodeType": "IfStatement",
                            "src": "22034:929:117",
                            "trueBody": {
                              "id": 42427,
                              "nodeType": "Block",
                              "src": "22293:634:117",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 42372,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 42367,
                                      "name": "inputLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42269,
                                      "src": "22306:11:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 42370,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 42368,
                                            "name": "ix",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42261,
                                            "src": "22321:2:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 42369,
                                            "name": "lix",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42265,
                                            "src": "22326:3:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "22321:8:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 42371,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "22320:10:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "22306:24:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42373,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22306:24:117"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 42376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 42374,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42261,
                                      "src": "22347:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "id": 42375,
                                      "name": "lix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42265,
                                      "src": "22352:3:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "22347:8:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 42398,
                                    "nodeType": "Block",
                                    "src": "22589:46:117",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 42396,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 42394,
                                            "name": "inputPointer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42272,
                                            "src": "22604:12:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "hexValue": "33",
                                            "id": 42395,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "22620:1:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_3_by_1",
                                              "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                          },
                                          "src": "22604:17:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 42397,
                                        "nodeType": "ExpressionStatement",
                                        "src": "22604:17:117"
                                      }
                                    ]
                                  },
                                  "id": 42399,
                                  "nodeType": "IfStatement",
                                  "src": "22343:292:117",
                                  "trueBody": {
                                    "id": 42393,
                                    "nodeType": "Block",
                                    "src": "22357:226:117",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 42378,
                                              "name": "outputPointer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42278,
                                              "src": "22395:13:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 42379,
                                              "name": "inputPointer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42272,
                                              "src": "22425:12:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 42380,
                                              "name": "inputLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42269,
                                              "src": "22454:11:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 42377,
                                            "name": "memcpy",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42630,
                                            "src": "22372:6:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                              "typeString": "function (uint256,uint256,uint256) pure"
                                            }
                                          },
                                          "id": 42381,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "22372:108:117",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 42382,
                                        "nodeType": "ExpressionStatement",
                                        "src": "22372:108:117"
                                      },
                                      {
                                        "expression": {
                                          "id": 42387,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 42383,
                                            "name": "inputPointer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42272,
                                            "src": "22495:12:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 42386,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 42384,
                                              "name": "inputLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 42269,
                                              "src": "22511:11:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "hexValue": "33",
                                              "id": 42385,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "22525:1:117",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_3_by_1",
                                                "typeString": "int_const 3"
                                              },
                                              "value": "3"
                                            },
                                            "src": "22511:15:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "22495:31:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 42388,
                                        "nodeType": "ExpressionStatement",
                                        "src": "22495:31:117"
                                      },
                                      {
                                        "expression": {
                                          "id": 42391,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 42389,
                                            "name": "outputPointer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42278,
                                            "src": "22541:13:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "id": 42390,
                                            "name": "inputLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 42269,
                                            "src": "22558:11:117",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "22541:28:117",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 42392,
                                        "nodeType": "ExpressionStatement",
                                        "src": "22541:28:117"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 42401,
                                        "name": "outputPointer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42278,
                                        "src": "22668:13:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 42402,
                                        "name": "argValuePointer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42284,
                                        "src": "22696:15:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 42403,
                                        "name": "argValueLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42281,
                                        "src": "22726:14:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 42400,
                                      "name": "memcpy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42630,
                                      "src": "22647:6:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (uint256,uint256,uint256) pure"
                                      }
                                    },
                                    "id": 42404,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22647:106:117",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 42405,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22647:106:117"
                                },
                                {
                                  "expression": {
                                    "id": 42410,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 42406,
                                      "name": "outputLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42275,
                                      "src": "22766:12:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 42409,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 42407,
                                        "name": "inputLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42269,
                                        "src": "22782:11:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 42408,
                                        "name": "argValueLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42281,
                                        "src": "22796:14:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "22782:28:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "22766:44:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42411,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22766:44:117"
                                },
                                {
                                  "expression": {
                                    "id": 42414,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 42412,
                                      "name": "outputPointer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42278,
                                      "src": "22823:13:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 42413,
                                      "name": "argValueLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42281,
                                      "src": "22840:14:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "22823:31:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42415,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22823:31:117"
                                },
                                {
                                  "expression": {
                                    "id": 42418,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 42416,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42261,
                                      "src": "22867:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "33",
                                      "id": 42417,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22873:1:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "src": "22867:7:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42419,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22867:7:117"
                                },
                                {
                                  "expression": {
                                    "id": 42422,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 42420,
                                      "name": "lix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42265,
                                      "src": "22887:3:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 42421,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42261,
                                      "src": "22893:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "22887:8:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42423,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22887:8:117"
                                },
                                {
                                  "expression": {
                                    "id": 42425,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "22908:7:117",
                                    "subExpression": {
                                      "id": 42424,
                                      "name": "hits",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42258,
                                      "src": "22908:4:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 42426,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22908:7:117"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 42306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 42304,
                          "name": "ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42261,
                          "src": "22008:2:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 42305,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42298,
                          "src": "22013:6:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "22008:11:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 42434,
                      "isSimpleCounterLoop": false,
                      "nodeType": "ForStatement",
                      "src": "22001:971:117"
                    },
                    {
                      "expression": {
                        "id": 42438,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 42435,
                          "name": "ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42261,
                          "src": "22980:2:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "expression": {
                            "id": 42436,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42249,
                            "src": "22985:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 42437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "22991:6:117",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "22985:12:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "22980:17:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 42439,
                      "nodeType": "ExpressionStatement",
                      "src": "22980:17:117"
                    }
                  ]
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 42443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 42441,
                      "name": "outputLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42275,
                      "src": "23019:12:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 42442,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23034:1:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "23019:16:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 42470,
                    "nodeType": "Block",
                    "src": "23423:34:117",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 42466,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42249,
                              "src": "23440:5:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 42467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23447:1:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 42468,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "23439:10:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bytes memory,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 42259,
                        "id": 42469,
                        "nodeType": "Return",
                        "src": "23432:17:117"
                      }
                    ]
                  },
                  "id": 42471,
                  "nodeType": "IfStatement",
                  "src": "23015:442:117",
                  "trueBody": {
                    "id": 42465,
                    "nodeType": "Block",
                    "src": "23037:375:117",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 42446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 42444,
                            "name": "ix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42261,
                            "src": "23050:2:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 42445,
                            "name": "lix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42265,
                            "src": "23055:3:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23050:8:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 42463,
                        "nodeType": "IfStatement",
                        "src": "23046:162:117",
                        "trueBody": {
                          "id": 42462,
                          "nodeType": "Block",
                          "src": "23061:147:117",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 42448,
                                    "name": "outputPointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42278,
                                    "src": "23091:13:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 42449,
                                    "name": "inputPointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 42272,
                                    "src": "23117:12:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 42452,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 42450,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42261,
                                      "src": "23142:2:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 42451,
                                      "name": "lix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42265,
                                      "src": "23147:3:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "23142:8:117",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 42447,
                                  "name": "memcpy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42630,
                                  "src": "23072:6:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256,uint256) pure"
                                  }
                                },
                                "id": 42453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23072:89:117",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 42454,
                              "nodeType": "ExpressionStatement",
                              "src": "23072:89:117"
                            },
                            {
                              "expression": {
                                "id": 42460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 42455,
                                  "name": "outputLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42275,
                                  "src": "23172:12:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 42458,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 42456,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42261,
                                        "src": "23189:2:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 42457,
                                        "name": "lix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42265,
                                        "src": "23194:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "23189:8:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 42459,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "23188:10:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23172:26:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 42461,
                              "nodeType": "ExpressionStatement",
                              "src": "23172:26:117"
                            }
                          ]
                        }
                      },
                      {
                        "AST": {
                          "nativeSrc": "23225:180:117",
                          "nodeType": "YulBlock",
                          "src": "23225:180:117",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nativeSrc": "23279:6:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "23279:6:117"
                                  },
                                  {
                                    "name": "outputLength",
                                    "nativeSrc": "23287:12:117",
                                    "nodeType": "YulIdentifier",
                                    "src": "23287:12:117"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "23272:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "23272:6:117"
                                },
                                "nativeSrc": "23272:28:117",
                                "nodeType": "YulFunctionCall",
                                "src": "23272:28:117"
                              },
                              "nativeSrc": "23272:28:117",
                              "nodeType": "YulExpressionStatement",
                              "src": "23272:28:117"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "23350:4:117",
                                    "nodeType": "YulLiteral",
                                    "src": "23350:4:117",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nativeSrc": "23366:4:117",
                                            "nodeType": "YulLiteral",
                                            "src": "23366:4:117",
                                            "type": "",
                                            "value": "0x40"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "23360:5:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "23360:5:117"
                                        },
                                        "nativeSrc": "23360:11:117",
                                        "nodeType": "YulFunctionCall",
                                        "src": "23360:11:117"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "outputLength",
                                            "nativeSrc": "23377:12:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "23377:12:117"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "23391:2:117",
                                            "nodeType": "YulLiteral",
                                            "src": "23391:2:117",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "23373:3:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "23373:3:117"
                                        },
                                        "nativeSrc": "23373:21:117",
                                        "nodeType": "YulFunctionCall",
                                        "src": "23373:21:117"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "23356:3:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "23356:3:117"
                                    },
                                    "nativeSrc": "23356:39:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23356:39:117"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "23343:6:117",
                                  "nodeType": "YulIdentifier",
                                  "src": "23343:6:117"
                                },
                                "nativeSrc": "23343:53:117",
                                "nodeType": "YulFunctionCall",
                                "src": "23343:53:117"
                              },
                              "nativeSrc": "23343:53:117",
                              "nodeType": "YulExpressionStatement",
                              "src": "23343:53:117"
                            }
                          ]
                        },
                        "evmVersion": "prague",
                        "externalReferences": [
                          {
                            "declaration": 42256,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23279:6:117",
                            "valueSize": 1
                          },
                          {
                            "declaration": 42275,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23287:12:117",
                            "valueSize": 1
                          },
                          {
                            "declaration": 42275,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23377:12:117",
                            "valueSize": 1
                          }
                        ],
                        "id": 42464,
                        "nodeType": "InlineAssembly",
                        "src": "23216:189:117"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 42247,
              "nodeType": "StructuredDocumentation",
              "src": "20694:419:117",
              "text": "@notice Replace indexed bytes-wildcard by given substring.\n @dev Wildcard format: \"\\#\\\", with # in [\"0\"..\"9\"].\n @param input Bytes array containing strings.\n @param argIndex Index of the wildcard to be replaced.\n @param argValue Replacing substring to be used.\n @return output Resulting bytes array after replacing all wildcards.\n @return hits Total number of replaced wildcards."
            },
            "id": 42473,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "replace",
            "nameLocation": "21126:7:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 42254,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42249,
                  "mutability": "mutable",
                  "name": "input",
                  "nameLocation": "21147:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42473,
                  "src": "21134:18:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 42248,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "21134:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42251,
                  "mutability": "mutable",
                  "name": "argIndex",
                  "nameLocation": "21160:8:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42473,
                  "src": "21154:14:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 42250,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "21154:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42253,
                  "mutability": "mutable",
                  "name": "argValue",
                  "nameLocation": "21184:8:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42473,
                  "src": "21170:22:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 42252,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "21170:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21133:60:117"
            },
            "returnParameters": {
              "id": 42259,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42256,
                  "mutability": "mutable",
                  "name": "output",
                  "nameLocation": "21240:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42473,
                  "src": "21227:19:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 42255,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "21227:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42258,
                  "mutability": "mutable",
                  "name": "hits",
                  "nameLocation": "21253:4:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42473,
                  "src": "21248:9:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 42257,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21248:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21226:32:117"
            },
            "scope": 42631,
            "src": "21117:2345:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 42499,
              "nodeType": "Block",
              "src": "23923:106:117",
              "statements": [
                {
                  "assignments": [
                    42485,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42485,
                      "mutability": "mutable",
                      "name": "_outputBytes",
                      "nameLocation": "23944:12:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42499,
                      "src": "23931:25:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 42484,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "23931:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 42493,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 42489,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42476,
                            "src": "23976:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 42488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "23970:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": {
                            "id": 42487,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "23970:5:117",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 42490,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23970:12:117",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 42491,
                        "name": "args",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42479,
                        "src": "23984:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      ],
                      "id": 42486,
                      "name": "replace",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        42246,
                        42473,
                        42500,
                        42529
                      ],
                      "referencedDeclaration": 42246,
                      "src": "23962:7:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory[] memory) pure returns (bytes memory,uint256)"
                      }
                    },
                    "id": 42492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23962:27:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_uint256_$",
                      "typeString": "tuple(bytes memory,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23930:59:117"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 42496,
                        "name": "_outputBytes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42485,
                        "src": "24010:12:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 42495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "24003:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": {
                        "id": 42494,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "24003:6:117",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 42497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24003:20:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 42483,
                  "id": 42498,
                  "nodeType": "Return",
                  "src": "23996:27:117"
                }
              ]
            },
            "documentation": {
              "id": 42474,
              "nodeType": "StructuredDocumentation",
              "src": "23468:340:117",
              "text": "@notice Replace indexed string wildcards by correspondent substrings.\n @dev Wildcard format: \"\\#\\\", with # in [\"0\"..\"9\"].\n @param input String potentially containing wildcards.\n @param args Array of substring values for replacing indexed wildcards.\n @return output Resulting string after replacing all wildcards."
            },
            "id": 42500,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "replace",
            "nameLocation": "23821:7:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 42480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42476,
                  "mutability": "mutable",
                  "name": "input",
                  "nameLocation": "23843:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42500,
                  "src": "23829:19:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 42475,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23829:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42479,
                  "mutability": "mutable",
                  "name": "args",
                  "nameLocation": "23866:4:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42500,
                  "src": "23850:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 42477,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "23850:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 42478,
                    "nodeType": "ArrayTypeName",
                    "src": "23850:8:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23828:43:117"
            },
            "returnParameters": {
              "id": 42483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42482,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 42500,
                  "src": "23905:13:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 42481,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23905:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23904:15:117"
            },
            "scope": 42631,
            "src": "23812:217:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 42528,
              "nodeType": "Block",
              "src": "24531:120:117",
              "statements": [
                {
                  "assignments": [
                    42513,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42513,
                      "mutability": "mutable",
                      "name": "_outputBytes",
                      "nameLocation": "24552:12:117",
                      "nodeType": "VariableDeclaration",
                      "scope": 42528,
                      "src": "24539:25:117",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 42512,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "24539:5:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 42522,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 42517,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42503,
                            "src": "24584:5:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 42516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "24578:5:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": {
                            "id": 42515,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "24578:5:117",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 42518,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24578:12:117",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 42519,
                        "name": "argIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42505,
                        "src": "24592:8:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 42520,
                        "name": "argValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42507,
                        "src": "24602:8:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 42514,
                      "name": "replace",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        42246,
                        42473,
                        42500,
                        42529
                      ],
                      "referencedDeclaration": 42473,
                      "src": "24570:7:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint8_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_uint256_$",
                        "typeString": "function (bytes memory,uint8,string memory) pure returns (bytes memory,uint256)"
                      }
                    },
                    "id": 42521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24570:41:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_uint256_$",
                      "typeString": "tuple(bytes memory,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "24538:73:117"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 42525,
                        "name": "_outputBytes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42513,
                        "src": "24632:12:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 42524,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "24625:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": {
                        "id": 42523,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "24625:6:117",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 42526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24625:20:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 42511,
                  "id": 42527,
                  "nodeType": "Return",
                  "src": "24618:27:117"
                }
              ]
            },
            "documentation": {
              "id": 42501,
              "nodeType": "StructuredDocumentation",
              "src": "24035:363:117",
              "text": "@notice Replace last indexed wildcard by given substring.\n @dev Wildcard format: \"\\#\\\", with # in [\"0\"..\"9\"].\n @param input String potentially containing wildcards.\n @param argIndex Index of the wildcard to be replaced.\n @param argValue Replacing string to be used.\n @return output Resulting string after replacing all wildcards."
            },
            "id": 42529,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "replace",
            "nameLocation": "24411:7:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 42508,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42503,
                  "mutability": "mutable",
                  "name": "input",
                  "nameLocation": "24433:5:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42529,
                  "src": "24419:19:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 42502,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24419:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42505,
                  "mutability": "mutable",
                  "name": "argIndex",
                  "nameLocation": "24446:8:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42529,
                  "src": "24440:14:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 42504,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "24440:5:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42507,
                  "mutability": "mutable",
                  "name": "argValue",
                  "nameLocation": "24470:8:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42529,
                  "src": "24456:22:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 42506,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24456:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24418:61:117"
            },
            "returnParameters": {
              "id": 42511,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42510,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 42529,
                  "src": "24513:13:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 42509,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24513:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24512:15:117"
            },
            "scope": 42631,
            "src": "24402:249:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 42564,
              "nodeType": "Block",
              "src": "25329:150:117",
              "statements": [
                {
                  "condition": {
                    "id": 42548,
                    "name": "relative",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 42537,
                    "src": "25375:8:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 42555,
                  "nodeType": "IfStatement",
                  "src": "25371:54:117",
                  "trueBody": {
                    "id": 42554,
                    "nodeType": "Block",
                    "src": "25385:40:117",
                    "statements": [
                      {
                        "expression": {
                          "id": 42552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 42549,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42535,
                            "src": "25394:6:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "expression": {
                              "id": 42550,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 42533,
                              "src": "25404:6:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                                "typeString": "struct WitnetBuffer.Buffer memory"
                              }
                            },
                            "id": 42551,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25411:6:117",
                            "memberName": "cursor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 40763,
                            "src": "25404:13:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25394:23:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 42553,
                        "nodeType": "ExpressionStatement",
                        "src": "25394:23:117"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 42560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 42556,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42533,
                        "src": "25431:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 42558,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "25438:6:117",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40763,
                      "src": "25431:13:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 42559,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42535,
                      "src": "25447:6:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "25431:22:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 42561,
                  "nodeType": "ExpressionStatement",
                  "src": "25431:22:117"
                },
                {
                  "expression": {
                    "id": 42562,
                    "name": "offset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 42535,
                    "src": "25467:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 42547,
                  "id": 42563,
                  "nodeType": "Return",
                  "src": "25460:13:117"
                }
              ]
            },
            "documentation": {
              "id": 42530,
              "nodeType": "StructuredDocumentation",
              "src": "24657:432:117",
              "text": "@notice Move the inner cursor of the buffer to a relative or absolute position.\n @param buffer An instance of `Buffer`.\n @param offset How many bytes to move the cursor forward.\n @param relative Whether to count `offset` from the last position of the cursor (`true`) or the beginning of the\n buffer (`true`).\n @return The final position of the cursor (will equal `offset` if `relative` is `false`)."
            },
            "id": 42565,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 42540,
                    "name": "offset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 42535,
                    "src": "25278:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 42541,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42533,
                        "src": "25286:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 42542,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "25293:4:117",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40761,
                      "src": "25286:11:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 42543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "25298:6:117",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "25286:18:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 42544,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 42539,
                  "name": "withinRange",
                  "nameLocations": [
                    "25266:11:117"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 40782,
                  "src": "25266:11:117"
                },
                "nodeType": "ModifierInvocation",
                "src": "25266:39:117"
              }
            ],
            "name": "seek",
            "nameLocation": "25159:4:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 42538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42533,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "25186:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42565,
                  "src": "25172:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 42532,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 42531,
                      "name": "Buffer",
                      "nameLocations": [
                        "25172:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "25172:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "25172:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42535,
                  "mutability": "mutable",
                  "name": "offset",
                  "nameLocation": "25206:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42565,
                  "src": "25201:11:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 42534,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25201:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42537,
                  "mutability": "mutable",
                  "name": "relative",
                  "nameLocation": "25226:8:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42565,
                  "src": "25221:13:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 42536,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25221:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25163:78:117"
            },
            "returnParameters": {
              "id": 42547,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42546,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 42565,
                  "src": "25320:4:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 42545,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25320:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25319:6:117"
            },
            "scope": 42631,
            "src": "25150:329:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 42582,
              "nodeType": "Block",
              "src": "25918:82:117",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 42577,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42569,
                        "src": "25945:6:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      {
                        "id": 42578,
                        "name": "relativeOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42571,
                        "src": "25960:14:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "74727565",
                        "id": 42579,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25983:4:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 42576,
                      "name": "seek",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        42565,
                        42583
                      ],
                      "referencedDeclaration": 42565,
                      "src": "25932:4:117",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$40764_memory_ptr_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (struct WitnetBuffer.Buffer memory,uint256,bool) pure returns (uint256)"
                      }
                    },
                    "id": 42580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25932:62:117",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 42575,
                  "id": 42581,
                  "nodeType": "Return",
                  "src": "25925:69:117"
                }
              ]
            },
            "documentation": {
              "id": 42566,
              "nodeType": "StructuredDocumentation",
              "src": "25485:309:117",
              "text": "@notice Move the inner cursor a number of bytes forward.\n @dev This is a simple wrapper around the relative offset case of `seek()`.\n @param buffer An instance of `Buffer`.\n @param relativeOffset How many bytes to move the cursor forward.\n @return The final position of the cursor."
            },
            "id": 42583,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "seek",
            "nameLocation": "25807:4:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 42572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42569,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "25834:6:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42583,
                  "src": "25820:20:117",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$40764_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 42568,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 42567,
                      "name": "Buffer",
                      "nameLocations": [
                        "25820:6:117"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 40764,
                      "src": "25820:6:117"
                    },
                    "referencedDeclaration": 40764,
                    "src": "25820:6:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$40764_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42571,
                  "mutability": "mutable",
                  "name": "relativeOffset",
                  "nameLocation": "25854:14:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42583,
                  "src": "25849:19:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 42570,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25849:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25811:64:117"
            },
            "returnParameters": {
              "id": 42575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42574,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 42583,
                  "src": "25909:4:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 42573,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25909:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25908:6:117"
            },
            "scope": 42631,
            "src": "25798:202:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 42629,
              "nodeType": "Block",
              "src": "26592:526:117",
              "statements": [
                {
                  "id": 42628,
                  "nodeType": "UncheckedBlock",
                  "src": "26599:514:117",
                  "statements": [
                    {
                      "body": {
                        "id": 42609,
                        "nodeType": "Block",
                        "src": "26696:118:117",
                        "statements": [
                          {
                            "AST": {
                              "nativeSrc": "26716:48:117",
                              "nodeType": "YulBlock",
                              "src": "26716:48:117",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dest",
                                        "nativeSrc": "26736:4:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "26736:4:117"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "26748:3:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "26748:3:117"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "26742:5:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "26742:5:117"
                                        },
                                        "nativeSrc": "26742:10:117",
                                        "nodeType": "YulFunctionCall",
                                        "src": "26742:10:117"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nativeSrc": "26729:6:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "26729:6:117"
                                    },
                                    "nativeSrc": "26729:24:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "26729:24:117"
                                  },
                                  "nativeSrc": "26729:24:117",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "26729:24:117"
                                }
                              ]
                            },
                            "evmVersion": "prague",
                            "externalReferences": [
                              {
                                "declaration": 42586,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "26736:4:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 42588,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "26748:3:117",
                                "valueSize": 1
                              }
                            ],
                            "id": 42600,
                            "nodeType": "InlineAssembly",
                            "src": "26707:57:117"
                          },
                          {
                            "expression": {
                              "id": 42603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 42601,
                                "name": "dest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42586,
                                "src": "26774:4:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "hexValue": "3332",
                                "id": 42602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26782:2:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "26774:10:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 42604,
                            "nodeType": "ExpressionStatement",
                            "src": "26774:10:117"
                          },
                          {
                            "expression": {
                              "id": 42607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 42605,
                                "name": "src",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42588,
                                "src": "26795:3:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "hexValue": "3332",
                                "id": 42606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26802:2:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "26795:9:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 42608,
                            "nodeType": "ExpressionStatement",
                            "src": "26795:9:117"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 42595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 42593,
                          "name": "len",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42590,
                          "src": "26674:3:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "hexValue": "3332",
                          "id": 42594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "26681:2:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "src": "26674:9:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 42610,
                      "isSimpleCounterLoop": false,
                      "loopExpression": {
                        "expression": {
                          "id": 42598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 42596,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42590,
                            "src": "26685:3:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "hexValue": "3332",
                            "id": 42597,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26692:2:117",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "26685:9:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 42599,
                        "nodeType": "ExpressionStatement",
                        "src": "26685:9:117"
                      },
                      "nodeType": "ForStatement",
                      "src": "26667:147:117"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 42613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 42611,
                          "name": "len",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42590,
                          "src": "26826:3:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 42612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "26832:1:117",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "26826:7:117",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 42627,
                      "nodeType": "IfStatement",
                      "src": "26822:284:117",
                      "trueBody": {
                        "id": 42626,
                        "nodeType": "Block",
                        "src": "26835:271:117",
                        "statements": [
                          {
                            "assignments": [
                              42615
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 42615,
                                "mutability": "mutable",
                                "name": "_mask",
                                "nameLocation": "26884:5:117",
                                "nodeType": "VariableDeclaration",
                                "scope": 42626,
                                "src": "26879:10:117",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 42614,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "26879:4:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 42624,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 42623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 42621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "323536",
                                  "id": 42616,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26892:3:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 42619,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3332",
                                        "id": 42617,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "26900:2:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "32"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 42618,
                                        "name": "len",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42590,
                                        "src": "26905:3:117",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "26900:8:117",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 42620,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "26899:10:117",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "26892:17:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 42622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26912:1:117",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "26892:21:117",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "26879:34:117"
                          },
                          {
                            "AST": {
                              "nativeSrc": "26933:164:117",
                              "nodeType": "YulBlock",
                              "src": "26933:164:117",
                              "statements": [
                                {
                                  "nativeSrc": "26946:42:117",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "26946:42:117",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "26971:3:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "26971:3:117"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "26965:5:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "26965:5:117"
                                        },
                                        "nativeSrc": "26965:10:117",
                                        "nodeType": "YulFunctionCall",
                                        "src": "26965:10:117"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_mask",
                                            "nativeSrc": "26981:5:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "26981:5:117"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nativeSrc": "26977:3:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "26977:3:117"
                                        },
                                        "nativeSrc": "26977:10:117",
                                        "nodeType": "YulFunctionCall",
                                        "src": "26977:10:117"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nativeSrc": "26961:3:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "26961:3:117"
                                    },
                                    "nativeSrc": "26961:27:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "26961:27:117"
                                  },
                                  "variables": [
                                    {
                                      "name": "srcpart",
                                      "nativeSrc": "26950:7:117",
                                      "nodeType": "YulTypedName",
                                      "src": "26950:7:117",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "27000:39:117",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "27000:39:117",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "dest",
                                            "nativeSrc": "27026:4:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "27026:4:117"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "27020:5:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "27020:5:117"
                                        },
                                        "nativeSrc": "27020:11:117",
                                        "nodeType": "YulFunctionCall",
                                        "src": "27020:11:117"
                                      },
                                      {
                                        "name": "_mask",
                                        "nativeSrc": "27033:5:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "27033:5:117"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nativeSrc": "27016:3:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "27016:3:117"
                                    },
                                    "nativeSrc": "27016:23:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "27016:23:117"
                                  },
                                  "variables": [
                                    {
                                      "name": "destpart",
                                      "nativeSrc": "27004:8:117",
                                      "nodeType": "YulTypedName",
                                      "src": "27004:8:117",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dest",
                                        "nativeSrc": "27058:4:117",
                                        "nodeType": "YulIdentifier",
                                        "src": "27058:4:117"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "destpart",
                                            "nativeSrc": "27067:8:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "27067:8:117"
                                          },
                                          {
                                            "name": "srcpart",
                                            "nativeSrc": "27077:7:117",
                                            "nodeType": "YulIdentifier",
                                            "src": "27077:7:117"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "or",
                                          "nativeSrc": "27064:2:117",
                                          "nodeType": "YulIdentifier",
                                          "src": "27064:2:117"
                                        },
                                        "nativeSrc": "27064:21:117",
                                        "nodeType": "YulFunctionCall",
                                        "src": "27064:21:117"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nativeSrc": "27051:6:117",
                                      "nodeType": "YulIdentifier",
                                      "src": "27051:6:117"
                                    },
                                    "nativeSrc": "27051:35:117",
                                    "nodeType": "YulFunctionCall",
                                    "src": "27051:35:117"
                                  },
                                  "nativeSrc": "27051:35:117",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "27051:35:117"
                                }
                              ]
                            },
                            "evmVersion": "prague",
                            "externalReferences": [
                              {
                                "declaration": 42615,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "26981:5:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 42615,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "27033:5:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 42586,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "27026:4:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 42586,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "27058:4:117",
                                "valueSize": 1
                              },
                              {
                                "declaration": 42588,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "26971:3:117",
                                "valueSize": 1
                              }
                            ],
                            "id": 42625,
                            "nodeType": "InlineAssembly",
                            "src": "26924:173:117"
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 42584,
              "nodeType": "StructuredDocumentation",
              "src": "26006:429:117",
              "text": "@notice Copy bytes from one memory address into another.\n @dev This function was borrowed from Nick Johnson's `solidity-stringutils` lib, and reproduced here under the terms\n of [Apache License 2.0](https://github.com/Arachnid/solidity-stringutils/blob/master/LICENSE).\n @param dest Address of the destination memory.\n @param src Address to the source memory.\n @param len How many bytes to copy."
            },
            "id": 42630,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "memcpy",
            "nameLocation": "26505:6:117",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 42591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42586,
                  "mutability": "mutable",
                  "name": "dest",
                  "nameLocation": "26525:4:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42630,
                  "src": "26520:9:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 42585,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "26520:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42588,
                  "mutability": "mutable",
                  "name": "src",
                  "nameLocation": "26543:3:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42630,
                  "src": "26538:8:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 42587,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "26538:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42590,
                  "mutability": "mutable",
                  "name": "len",
                  "nameLocation": "26560:3:117",
                  "nodeType": "VariableDeclaration",
                  "scope": 42630,
                  "src": "26555:8:117",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 42589,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "26555:4:117",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26511:59:117"
            },
            "returnParameters": {
              "id": 42592,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26592:0:117"
            },
            "scope": 42631,
            "src": "26496:622:117",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 42632,
        "src": "644:26479:117",
        "usedErrors": [
          40746,
          40752,
          40758
        ],
        "usedEvents": []
      }
    ],
    "src": "35:27088:117"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:46.013Z",
  "devdoc": {
    "author": "The Witnet Foundation.",
    "details": "`uint32` is used here for `cursor` because `uint16` would only enable seeking up to 8KB, which could in some theoretical use cases be exceeded. Conversely, `uint32` supports up to 512MB, which cannot credibly be exceeded.",
    "kind": "dev",
    "methods": {},
    "title": "A convenient wrapper around the `bytes memory` type that exposes a buffer-like interface",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "notice": "The buffer has an inner cursor that tracks the final offset of every read, i.e. any subsequent read will start with the byte that goes right after the last one in the previous read.",
    "version": 1
  }
}